unspaghettit 0.3.0 → 0.5.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 +55 -386
- package/build/client/_app/immutable/assets/0.BsujoiMC.css +1 -0
- package/build/client/_app/immutable/assets/0.BsujoiMC.css.br +0 -0
- package/build/client/_app/immutable/assets/0.BsujoiMC.css.gz +0 -0
- package/build/client/_app/immutable/assets/13.nv0I59TU.css.gz +0 -0
- package/build/client/_app/immutable/assets/3.B3akUL9A.css.gz +0 -0
- package/build/client/_app/immutable/assets/ProjectionViewer.CAJs9mSm.css +1 -0
- package/build/client/_app/immutable/assets/ProjectionViewer.CAJs9mSm.css.br +0 -0
- package/build/client/_app/immutable/assets/ProjectionViewer.CAJs9mSm.css.gz +0 -0
- package/build/client/_app/immutable/chunks/2CIJV9nc.js +1 -0
- package/build/client/_app/immutable/chunks/2CIJV9nc.js.br +3 -0
- package/build/client/_app/immutable/chunks/2CIJV9nc.js.gz +0 -0
- package/build/client/_app/immutable/chunks/2hLhZJjD2.js +1 -0
- package/build/client/_app/immutable/chunks/2hLhZJjD2.js.br +0 -0
- package/build/client/_app/immutable/chunks/2hLhZJjD2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/3UVfdb662.js +2 -0
- package/build/client/_app/immutable/chunks/3UVfdb662.js.br +0 -0
- package/build/client/_app/immutable/chunks/3UVfdb662.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B1n0bVhh2.js +1 -0
- package/build/client/_app/immutable/chunks/B1n0bVhh2.js.br +0 -0
- package/build/client/_app/immutable/chunks/B1n0bVhh2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B3p5Prmp.js +1 -0
- package/build/client/_app/immutable/chunks/B3p5Prmp.js.br +0 -0
- package/build/client/_app/immutable/chunks/B3p5Prmp.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B4cX2Gb42.js +5 -0
- package/build/client/_app/immutable/chunks/B4cX2Gb42.js.br +0 -0
- package/build/client/_app/immutable/chunks/B4cX2Gb42.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B6MJfyJI.js +1 -0
- package/build/client/_app/immutable/chunks/B6MJfyJI.js.br +0 -0
- package/build/client/_app/immutable/chunks/B6MJfyJI.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B7Ld9uRE2.js +1 -0
- package/build/client/_app/immutable/chunks/B7Ld9uRE2.js.br +0 -0
- package/build/client/_app/immutable/chunks/B7Ld9uRE2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B8_QNwhN.js +1 -0
- package/build/client/_app/immutable/chunks/B8_QNwhN.js.br +1 -0
- package/build/client/_app/immutable/chunks/B8_QNwhN.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B8gBHxth.js +1 -0
- package/build/client/_app/immutable/chunks/B8gBHxth.js.br +0 -0
- package/build/client/_app/immutable/chunks/B8gBHxth.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BDEjG0-V.js +1 -0
- package/build/client/_app/immutable/chunks/BDEjG0-V.js.br +0 -0
- package/build/client/_app/immutable/chunks/BDEjG0-V.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BDf3hVDY.js +7 -0
- package/build/client/_app/immutable/chunks/BDf3hVDY.js.br +0 -0
- package/build/client/_app/immutable/chunks/BDf3hVDY.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BEZv2jK9.js +1 -0
- package/build/client/_app/immutable/chunks/BEZv2jK9.js.br +2 -0
- package/build/client/_app/immutable/chunks/BEZv2jK9.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BJYt9DEi.js +1 -0
- package/build/client/_app/immutable/chunks/BJYt9DEi.js.br +0 -0
- package/build/client/_app/immutable/chunks/BJYt9DEi.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BJZ3XYC12.js +1 -0
- package/build/client/_app/immutable/chunks/BJZ3XYC12.js.br +0 -0
- package/build/client/_app/immutable/chunks/BJZ3XYC12.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BK5md5Zs.js +89 -0
- package/build/client/_app/immutable/chunks/BK5md5Zs.js.br +0 -0
- package/build/client/_app/immutable/chunks/BK5md5Zs.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BNO8PXpM.js +1 -0
- package/build/client/_app/immutable/chunks/BNO8PXpM.js.br +0 -0
- package/build/client/_app/immutable/chunks/BNO8PXpM.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BNtFSWSC.js +40 -0
- package/build/client/_app/immutable/chunks/BNtFSWSC.js.br +0 -0
- package/build/client/_app/immutable/chunks/BNtFSWSC.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BODMD6rJ.js +1 -0
- package/build/client/_app/immutable/chunks/BODMD6rJ.js.br +0 -0
- package/build/client/_app/immutable/chunks/BODMD6rJ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BPLFAo0p2.js +1 -0
- package/build/client/_app/immutable/chunks/BPLFAo0p2.js.br +0 -0
- package/build/client/_app/immutable/chunks/BPLFAo0p2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BQ9GodWX2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BQXcKXmZ2.js +41 -0
- package/build/client/_app/immutable/chunks/BQXcKXmZ2.js.br +0 -0
- package/build/client/_app/immutable/chunks/BQXcKXmZ2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BSLn6m4D2.js +1 -0
- package/build/client/_app/immutable/chunks/BSLn6m4D2.js.br +0 -0
- package/build/client/_app/immutable/chunks/BSLn6m4D2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BWPyau1x.js +1 -0
- package/build/client/_app/immutable/chunks/BWPyau1x.js.br +0 -0
- package/build/client/_app/immutable/chunks/BWPyau1x.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BWtptBB32.js +1 -0
- package/build/client/_app/immutable/chunks/BWtptBB32.js.br +0 -0
- package/build/client/_app/immutable/chunks/BWtptBB32.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BYVgaVQ1.js +1 -0
- package/build/client/_app/immutable/chunks/BYVgaVQ1.js.br +0 -0
- package/build/client/_app/immutable/chunks/BYVgaVQ1.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Basumi2t2.js +1 -0
- package/build/client/_app/immutable/chunks/Basumi2t2.js.br +0 -0
- package/build/client/_app/immutable/chunks/Basumi2t2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BfCxGFh9.js +1 -0
- package/build/client/_app/immutable/chunks/BfCxGFh9.js.br +0 -0
- package/build/client/_app/immutable/chunks/BfCxGFh9.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BifhSqXX.js +1 -0
- package/build/client/_app/immutable/chunks/BifhSqXX.js.br +0 -0
- package/build/client/_app/immutable/chunks/BifhSqXX.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BjKsrp6D.js +1 -0
- package/build/client/_app/immutable/chunks/BjKsrp6D.js.br +6 -0
- package/build/client/_app/immutable/chunks/BjKsrp6D.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BnXQbBnK.js +85 -0
- package/build/client/_app/immutable/chunks/BnXQbBnK.js.br +0 -0
- package/build/client/_app/immutable/chunks/BnXQbBnK.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BzLd0mTH.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BzsuqpLS2.js +8 -0
- package/build/client/_app/immutable/chunks/BzsuqpLS2.js.br +0 -0
- package/build/client/_app/immutable/chunks/BzsuqpLS2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C0A-HG6d.js +1 -0
- package/build/client/_app/immutable/chunks/C0A-HG6d.js.br +0 -0
- package/build/client/_app/immutable/chunks/C0A-HG6d.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C0QpZqq7.js +1 -0
- package/build/client/_app/immutable/chunks/C0QpZqq7.js.br +3 -0
- package/build/client/_app/immutable/chunks/C0QpZqq7.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C397Xuny.js +292 -0
- package/build/client/_app/immutable/chunks/C397Xuny.js.br +0 -0
- package/build/client/_app/immutable/chunks/C397Xuny.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C8Fc0cco.js +1 -0
- package/build/client/_app/immutable/chunks/C8Fc0cco.js.br +0 -0
- package/build/client/_app/immutable/chunks/C8Fc0cco.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C9DakJMD.js +1 -0
- package/build/client/_app/immutable/chunks/C9DakJMD.js.br +0 -0
- package/build/client/_app/immutable/chunks/C9DakJMD.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CBm5AXdl.js +34 -0
- package/build/client/_app/immutable/chunks/CBm5AXdl.js.br +0 -0
- package/build/client/_app/immutable/chunks/CBm5AXdl.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CE2JlG_l.js +1 -0
- package/build/client/_app/immutable/chunks/CE2JlG_l.js.br +0 -0
- package/build/client/_app/immutable/chunks/CE2JlG_l.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CE4N3DsM.js +36 -0
- package/build/client/_app/immutable/chunks/CE4N3DsM.js.br +0 -0
- package/build/client/_app/immutable/chunks/CE4N3DsM.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CFX_rB4g2.js +3 -0
- package/build/client/_app/immutable/chunks/CFX_rB4g2.js.br +0 -0
- package/build/client/_app/immutable/chunks/CFX_rB4g2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CGhzzHe4.js +1 -0
- package/build/client/_app/immutable/chunks/CGhzzHe4.js.br +0 -0
- package/build/client/_app/immutable/chunks/CGhzzHe4.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CGkvQl0v2.js +30 -0
- package/build/client/_app/immutable/chunks/CGkvQl0v2.js.br +0 -0
- package/build/client/_app/immutable/chunks/CGkvQl0v2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CHdTS7qa.js +15 -0
- package/build/client/_app/immutable/chunks/CHdTS7qa.js.br +0 -0
- package/build/client/_app/immutable/chunks/CHdTS7qa.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CM9ya9R5.js +231 -0
- package/build/client/_app/immutable/chunks/CM9ya9R5.js.br +0 -0
- package/build/client/_app/immutable/chunks/CM9ya9R5.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CN4TM9z5.js +6 -0
- package/build/client/_app/immutable/chunks/CN4TM9z5.js.br +4 -0
- package/build/client/_app/immutable/chunks/CN4TM9z5.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CQcPxj-M.js +11 -0
- package/build/client/_app/immutable/chunks/CQcPxj-M.js.br +0 -0
- package/build/client/_app/immutable/chunks/CQcPxj-M.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CSKSodPl2.js +1 -0
- package/build/client/_app/immutable/chunks/CSKSodPl2.js.br +0 -0
- package/build/client/_app/immutable/chunks/CSKSodPl2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CTRD2R1y.js +70 -0
- package/build/client/_app/immutable/chunks/CTRD2R1y.js.br +0 -0
- package/build/client/_app/immutable/chunks/CTRD2R1y.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CTgm3pse2.js +1 -0
- package/build/client/_app/immutable/chunks/CTgm3pse2.js.br +0 -0
- package/build/client/_app/immutable/chunks/CTgm3pse2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CU9-_wmX2.js +62 -0
- package/build/client/_app/immutable/chunks/CU9-_wmX2.js.br +0 -0
- package/build/client/_app/immutable/chunks/CU9-_wmX2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CULY9yDS.js +1 -0
- package/build/client/_app/immutable/chunks/CULY9yDS.js.br +0 -0
- package/build/client/_app/immutable/chunks/CULY9yDS.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CUpSevj82.js +1 -0
- package/build/client/_app/immutable/chunks/CUpSevj82.js.br +0 -0
- package/build/client/_app/immutable/chunks/CUpSevj82.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CUvgMu97.js +1 -0
- package/build/client/_app/immutable/chunks/CUvgMu97.js.br +0 -0
- package/build/client/_app/immutable/chunks/CUvgMu97.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CWiCMZki.js +1 -0
- package/build/client/_app/immutable/chunks/CWiCMZki.js.br +0 -0
- package/build/client/_app/immutable/chunks/CWiCMZki.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CWw-STqh2.js +1 -0
- package/build/client/_app/immutable/chunks/CWw-STqh2.js.br +0 -0
- package/build/client/_app/immutable/chunks/CWw-STqh2.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/CZI9lQ5y.js +1 -0
- package/build/client/_app/immutable/chunks/CZI9lQ5y.js.br +0 -0
- package/build/client/_app/immutable/chunks/CZI9lQ5y.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CZNb0x60.js +8 -0
- package/build/client/_app/immutable/chunks/CZNb0x60.js.br +5 -0
- package/build/client/_app/immutable/chunks/CZNb0x60.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CZjhCdkx.js +120 -0
- package/build/client/_app/immutable/chunks/CZjhCdkx.js.br +0 -0
- package/build/client/_app/immutable/chunks/CZjhCdkx.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C_BfkqQj2.js +1 -0
- package/build/client/_app/immutable/chunks/C_BfkqQj2.js.br +3 -0
- package/build/client/_app/immutable/chunks/C_BfkqQj2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CaXAkaVH.js +2 -0
- package/build/client/_app/immutable/chunks/CaXAkaVH.js.br +0 -0
- package/build/client/_app/immutable/chunks/CaXAkaVH.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Ce0G0NEU2.js +132 -0
- package/build/client/_app/immutable/chunks/Ce0G0NEU2.js.br +0 -0
- package/build/client/_app/immutable/chunks/Ce0G0NEU2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Cio7Lne-.js +1 -0
- package/build/client/_app/immutable/chunks/Cio7Lne-.js.br +0 -0
- package/build/client/_app/immutable/chunks/Cio7Lne-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Ck7fLxFH2.js +1 -0
- package/build/client/_app/immutable/chunks/Ck7fLxFH2.js.br +0 -0
- package/build/client/_app/immutable/chunks/Ck7fLxFH2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CkgG2vj12.js +1 -0
- package/build/client/_app/immutable/chunks/CkgG2vj12.js.br +0 -0
- package/build/client/_app/immutable/chunks/CkgG2vj12.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CkwYPeQK.js +1 -0
- package/build/client/_app/immutable/chunks/CkwYPeQK.js.br +0 -0
- package/build/client/_app/immutable/chunks/CkwYPeQK.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Cl7Z3e6-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CltURiZ0.js +1 -0
- package/build/client/_app/immutable/chunks/CltURiZ0.js.br +0 -0
- package/build/client/_app/immutable/chunks/CltURiZ0.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CpJxgCib.js +1 -0
- package/build/client/_app/immutable/chunks/CpJxgCib.js.br +0 -0
- package/build/client/_app/immutable/chunks/CpJxgCib.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CqAJyebb.js +1 -0
- package/build/client/_app/immutable/chunks/CqAJyebb.js.br +0 -0
- package/build/client/_app/immutable/chunks/CqAJyebb.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CrBRkqIf.js +4 -0
- package/build/client/_app/immutable/chunks/CrBRkqIf.js.br +0 -0
- package/build/client/_app/immutable/chunks/CrBRkqIf.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CrYxhB9g.js +1 -0
- package/build/client/_app/immutable/chunks/CrYxhB9g.js.br +0 -0
- package/build/client/_app/immutable/chunks/CrYxhB9g.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CtpR9Zsd.js +96 -0
- package/build/client/_app/immutable/chunks/CtpR9Zsd.js.br +0 -0
- package/build/client/_app/immutable/chunks/CtpR9Zsd.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CtsLiFqq.js +1 -0
- package/build/client/_app/immutable/chunks/CtsLiFqq.js.br +0 -0
- package/build/client/_app/immutable/chunks/CtsLiFqq.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CuIMKdpZ.js +1 -0
- package/build/client/_app/immutable/chunks/CuIMKdpZ.js.br +1 -0
- package/build/client/_app/immutable/chunks/CuIMKdpZ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CuRJVwEq.js +1 -0
- package/build/client/_app/immutable/chunks/CuRJVwEq.js.br +0 -0
- package/build/client/_app/immutable/chunks/CuRJVwEq.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CuxYynFY.js +1 -0
- package/build/client/_app/immutable/chunks/CuxYynFY.js.br +0 -0
- package/build/client/_app/immutable/chunks/CuxYynFY.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CvzmTz19.js +1 -0
- package/build/client/_app/immutable/chunks/CvzmTz19.js.br +0 -0
- package/build/client/_app/immutable/chunks/CvzmTz19.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Cwlxg_jI2.js +1 -0
- package/build/client/_app/immutable/chunks/Cwlxg_jI2.js.br +0 -0
- package/build/client/_app/immutable/chunks/Cwlxg_jI2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CytoxYDC.js +1 -0
- package/build/client/_app/immutable/chunks/CytoxYDC.js.br +0 -0
- package/build/client/_app/immutable/chunks/CytoxYDC.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D-bzr3Rt.js +1 -0
- package/build/client/_app/immutable/chunks/D-bzr3Rt.js.br +0 -0
- package/build/client/_app/immutable/chunks/D-bzr3Rt.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D5speDV8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D6jRqBbL.js +1 -0
- package/build/client/_app/immutable/chunks/D6jRqBbL.js.br +0 -0
- package/build/client/_app/immutable/chunks/D6jRqBbL.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D8TtvFq5.js +32 -0
- package/build/client/_app/immutable/chunks/D8TtvFq5.js.br +0 -0
- package/build/client/_app/immutable/chunks/D8TtvFq5.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D9MPVnoE2.js +206 -0
- package/build/client/_app/immutable/chunks/D9MPVnoE2.js.br +0 -0
- package/build/client/_app/immutable/chunks/D9MPVnoE2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DBCpiSCv.js +84 -0
- package/build/client/_app/immutable/chunks/DBCpiSCv.js.br +0 -0
- package/build/client/_app/immutable/chunks/DBCpiSCv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DMSYSDo82.js +10 -0
- package/build/client/_app/immutable/chunks/DMSYSDo82.js.br +0 -0
- package/build/client/_app/immutable/chunks/DMSYSDo82.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DNzq6p3w2.js +161 -0
- package/build/client/_app/immutable/chunks/DNzq6p3w2.js.br +0 -0
- package/build/client/_app/immutable/chunks/DNzq6p3w2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DQWKNctN2.js +7 -0
- package/build/client/_app/immutable/chunks/DQWKNctN2.js.br +0 -0
- package/build/client/_app/immutable/chunks/DQWKNctN2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DQuHIABk2.js +4 -0
- package/build/client/_app/immutable/chunks/DQuHIABk2.js.br +0 -0
- package/build/client/_app/immutable/chunks/DQuHIABk2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DT5F1-d-.js +1 -0
- package/build/client/_app/immutable/chunks/DT5F1-d-.js.br +0 -0
- package/build/client/_app/immutable/chunks/DT5F1-d-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DVrhERYX2.js +1 -0
- package/build/client/_app/immutable/chunks/DVrhERYX2.js.br +0 -0
- package/build/client/_app/immutable/chunks/DVrhERYX2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DWAgljeH.js +1 -0
- package/build/client/_app/immutable/chunks/DWAgljeH.js.br +0 -0
- package/build/client/_app/immutable/chunks/DWAgljeH.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DWVg3pyI.js +139 -0
- package/build/client/_app/immutable/chunks/DWVg3pyI.js.br +0 -0
- package/build/client/_app/immutable/chunks/DWVg3pyI.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DWeRzxcG2.js +1 -0
- package/build/client/_app/immutable/chunks/DWeRzxcG2.js.br +0 -0
- package/build/client/_app/immutable/chunks/DWeRzxcG2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DcvkBs962.js +1 -0
- package/build/client/_app/immutable/chunks/DcvkBs962.js.br +0 -0
- package/build/client/_app/immutable/chunks/DcvkBs962.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DdKDVl0G2.js +1 -0
- package/build/client/_app/immutable/chunks/DdKDVl0G2.js.br +0 -0
- package/build/client/_app/immutable/chunks/DdKDVl0G2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dg8gJSFX.js +106 -0
- package/build/client/_app/immutable/chunks/Dg8gJSFX.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dg8gJSFX.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dhqg7r_2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Diyr50UO2.js +10 -0
- package/build/client/_app/immutable/chunks/Diyr50UO2.js.br +0 -0
- package/build/client/_app/immutable/chunks/Diyr50UO2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DlHVqE8I2.js +1 -0
- package/build/client/_app/immutable/chunks/DlHVqE8I2.js.br +0 -0
- package/build/client/_app/immutable/chunks/DlHVqE8I2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dm68_Exu2.js +24 -0
- package/build/client/_app/immutable/chunks/Dm68_Exu2.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dm68_Exu2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dmt7ISOs.js +162 -0
- package/build/client/_app/immutable/chunks/Dmt7ISOs.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dmt7ISOs.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Ds6AU9Ow.js +156 -0
- package/build/client/_app/immutable/chunks/Ds6AU9Ow.js.br +0 -0
- package/build/client/_app/immutable/chunks/Ds6AU9Ow.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DsF7k-Jl.js +1 -0
- package/build/client/_app/immutable/chunks/DsF7k-Jl.js.br +0 -0
- package/build/client/_app/immutable/chunks/DsF7k-Jl.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DubrsqOt2.js +24 -0
- package/build/client/_app/immutable/chunks/DubrsqOt2.js.br +0 -0
- package/build/client/_app/immutable/chunks/DubrsqOt2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DwBIslDg.js +1 -0
- package/build/client/_app/immutable/chunks/DwBIslDg.js.br +0 -0
- package/build/client/_app/immutable/chunks/DwBIslDg.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DyQuOJWp.js +2 -0
- package/build/client/_app/immutable/chunks/DyQuOJWp.js.br +0 -0
- package/build/client/_app/immutable/chunks/DyQuOJWp.js.gz +0 -0
- package/build/client/_app/immutable/chunks/GozcEFao.js +2 -0
- package/build/client/_app/immutable/chunks/GozcEFao.js.br +0 -0
- package/build/client/_app/immutable/chunks/GozcEFao.js.gz +0 -0
- package/build/client/_app/immutable/chunks/KythIMN8.js +1 -0
- package/build/client/_app/immutable/chunks/KythIMN8.js.br +0 -0
- package/build/client/_app/immutable/chunks/KythIMN8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/LZcM6IZR.js +127 -0
- package/build/client/_app/immutable/chunks/LZcM6IZR.js.br +0 -0
- package/build/client/_app/immutable/chunks/LZcM6IZR.js.gz +0 -0
- package/build/client/_app/immutable/chunks/N3JnnB0k.js +1 -0
- package/build/client/_app/immutable/chunks/N3JnnB0k.js.br +0 -0
- package/build/client/_app/immutable/chunks/N3JnnB0k.js.gz +0 -0
- package/build/client/_app/immutable/chunks/N4f8L7cR2.js +1 -0
- package/build/client/_app/immutable/chunks/N4f8L7cR2.js.br +0 -0
- package/build/client/_app/immutable/chunks/N4f8L7cR2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/SxsLGZon.js +78 -0
- package/build/client/_app/immutable/chunks/SxsLGZon.js.br +0 -0
- package/build/client/_app/immutable/chunks/SxsLGZon.js.gz +0 -0
- package/build/client/_app/immutable/chunks/VMh3BEza.js +1 -0
- package/build/client/_app/immutable/chunks/VMh3BEza.js.br +0 -0
- package/build/client/_app/immutable/chunks/VMh3BEza.js.gz +0 -0
- package/build/client/_app/immutable/chunks/VcOjGHJJ.js +88 -0
- package/build/client/_app/immutable/chunks/VcOjGHJJ.js.br +0 -0
- package/build/client/_app/immutable/chunks/VcOjGHJJ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/VesUvqet.js +1 -0
- package/build/client/_app/immutable/chunks/VesUvqet.js.br +0 -0
- package/build/client/_app/immutable/chunks/VesUvqet.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Vhh-h91d.js +257 -0
- package/build/client/_app/immutable/chunks/Vhh-h91d.js.br +0 -0
- package/build/client/_app/immutable/chunks/Vhh-h91d.js.gz +0 -0
- package/build/client/_app/immutable/chunks/W3EvcI_R2.js +62 -0
- package/build/client/_app/immutable/chunks/W3EvcI_R2.js.br +0 -0
- package/build/client/_app/immutable/chunks/W3EvcI_R2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/ZUdhP7i92.js +2 -0
- package/build/client/_app/immutable/chunks/ZUdhP7i92.js.br +0 -0
- package/build/client/_app/immutable/chunks/ZUdhP7i92.js.gz +0 -0
- package/build/client/_app/immutable/chunks/aLf9ves12.js +1 -0
- package/build/client/_app/immutable/chunks/aLf9ves12.js.br +0 -0
- package/build/client/_app/immutable/chunks/aLf9ves12.js.gz +0 -0
- package/build/client/_app/immutable/chunks/f-j1ldZh.js +1 -0
- package/build/client/_app/immutable/chunks/f-j1ldZh.js.br +0 -0
- package/build/client/_app/immutable/chunks/f-j1ldZh.js.gz +0 -0
- package/build/client/_app/immutable/chunks/gEtmlKTD2.js +2 -0
- package/build/client/_app/immutable/chunks/gEtmlKTD2.js.br +0 -0
- package/build/client/_app/immutable/chunks/gEtmlKTD2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/glszpPm_.js +70 -0
- package/build/client/_app/immutable/chunks/glszpPm_.js.br +0 -0
- package/build/client/_app/immutable/chunks/glszpPm_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/h6BdjjI9.js +321 -0
- package/build/client/_app/immutable/chunks/h6BdjjI9.js.br +0 -0
- package/build/client/_app/immutable/chunks/h6BdjjI9.js.gz +0 -0
- package/build/client/_app/immutable/chunks/hPrUzghv.js +1 -0
- package/build/client/_app/immutable/chunks/hPrUzghv.js.br +0 -0
- package/build/client/_app/immutable/chunks/hPrUzghv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/hoxxCinl.js +1 -0
- package/build/client/_app/immutable/chunks/hoxxCinl.js.br +0 -0
- package/build/client/_app/immutable/chunks/hoxxCinl.js.gz +0 -0
- package/build/client/_app/immutable/chunks/i-CYVfXN.js +1 -0
- package/build/client/_app/immutable/chunks/i-CYVfXN.js.br +0 -0
- package/build/client/_app/immutable/chunks/i-CYVfXN.js.gz +0 -0
- package/build/client/_app/immutable/chunks/kNaey6uv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/neNX6gRo.js +1 -0
- package/build/client/_app/immutable/chunks/neNX6gRo.js.br +0 -0
- package/build/client/_app/immutable/chunks/neNX6gRo.js.gz +0 -0
- package/build/client/_app/immutable/chunks/pHXL_F_g2.js +1 -0
- package/build/client/_app/immutable/chunks/pHXL_F_g2.js.br +0 -0
- package/build/client/_app/immutable/chunks/pHXL_F_g2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/pW93EPUQ.js +7 -0
- package/build/client/_app/immutable/chunks/pW93EPUQ.js.br +0 -0
- package/build/client/_app/immutable/chunks/pW93EPUQ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/qP818rgB2.js +1 -0
- package/build/client/_app/immutable/chunks/qP818rgB2.js.br +0 -0
- package/build/client/_app/immutable/chunks/qP818rgB2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/sotTapaw.js +1 -0
- package/build/client/_app/immutable/chunks/sotTapaw.js.br +0 -0
- package/build/client/_app/immutable/chunks/sotTapaw.js.gz +0 -0
- package/build/client/_app/immutable/chunks/wKcgcnDr2.js +1 -0
- package/build/client/_app/immutable/chunks/wKcgcnDr2.js.br +0 -0
- package/build/client/_app/immutable/chunks/wKcgcnDr2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/xihTtKlq.js.gz +0 -0
- package/build/client/_app/immutable/chunks/xj8Qu0id.js +39 -0
- package/build/client/_app/immutable/chunks/xj8Qu0id.js.br +0 -0
- package/build/client/_app/immutable/chunks/xj8Qu0id.js.gz +0 -0
- package/build/client/_app/immutable/chunks/y_FyOMsm.js +3 -0
- package/build/client/_app/immutable/chunks/y_FyOMsm.js.br +0 -0
- package/build/client/_app/immutable/chunks/y_FyOMsm.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.BER7E6R_.js +2 -0
- package/build/client/_app/immutable/entry/app.BER7E6R_.js.br +0 -0
- package/build/client/_app/immutable/entry/app.BER7E6R_.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.C8tjv31Y.js +1 -0
- package/build/client/_app/immutable/entry/start.C8tjv31Y.js.br +1 -0
- package/build/client/_app/immutable/entry/start.C8tjv31Y.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.CAeMhoMc.js +7 -0
- package/build/client/_app/immutable/nodes/0.CAeMhoMc.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.CAeMhoMc.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.4LtDz-oA.js +1 -0
- package/build/client/_app/immutable/nodes/1.4LtDz-oA.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.4LtDz-oA.js.gz +0 -0
- package/build/client/_app/immutable/nodes/10.CFgia70s.js +1 -0
- package/build/client/_app/immutable/nodes/10.CFgia70s.js.br +2 -0
- package/build/client/_app/immutable/nodes/10.CFgia70s.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.Ch-vozvS.js +1 -0
- package/build/client/_app/immutable/nodes/11.Ch-vozvS.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.Ch-vozvS.js.gz +0 -0
- package/build/client/_app/immutable/nodes/12.B5VT8cKW.js +2 -0
- package/build/client/_app/immutable/nodes/12.B5VT8cKW.js.br +0 -0
- package/build/client/_app/immutable/nodes/12.B5VT8cKW.js.gz +0 -0
- package/build/client/_app/immutable/nodes/13.CuIA9vng.js +402 -0
- package/build/client/_app/immutable/nodes/13.CuIA9vng.js.br +0 -0
- package/build/client/_app/immutable/nodes/13.CuIA9vng.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.xI5MnJsL.js +1 -0
- package/build/client/_app/immutable/nodes/2.xI5MnJsL.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.xI5MnJsL.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.CQ4bIhQ6.js +1 -0
- package/build/client/_app/immutable/nodes/3.CQ4bIhQ6.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.CQ4bIhQ6.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.N8cjhzIv.js +3 -0
- package/build/client/_app/immutable/nodes/4.N8cjhzIv.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.N8cjhzIv.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.DfR2h3P4.js +48 -0
- package/build/client/_app/immutable/nodes/5.DfR2h3P4.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.DfR2h3P4.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.v43avk-a.js +1 -0
- package/build/client/_app/immutable/nodes/6.v43avk-a.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.v43avk-a.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.DJGq7-fq.js +5 -0
- package/build/client/_app/immutable/nodes/7.DJGq7-fq.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.DJGq7-fq.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.BYeGayrU.js +3 -0
- package/build/client/_app/immutable/nodes/8.BYeGayrU.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.BYeGayrU.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.d7hEqsWN.js +5 -0
- package/build/client/_app/immutable/nodes/9.d7hEqsWN.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.d7hEqsWN.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.gz +0 -0
- package/build/client/unspaghettit-demo.gif +0 -0
- package/build/server/chunks/0-B9lmqNZh.js +15 -0
- package/build/server/chunks/0-B9lmqNZh.js.map +1 -0
- package/build/server/chunks/1-BVxoYoy0.js +9 -0
- package/build/server/chunks/1-BVxoYoy0.js.map +1 -0
- package/build/server/chunks/10-DCxp8jT8.js +9 -0
- package/build/server/chunks/10-DCxp8jT8.js.map +1 -0
- package/build/server/chunks/11-BmTBBPbT.js +9 -0
- package/build/server/chunks/11-BmTBBPbT.js.map +1 -0
- package/build/server/chunks/12-CsbhRlL1.js +9 -0
- package/build/server/chunks/12-CsbhRlL1.js.map +1 -0
- package/build/server/chunks/13-0DWHZ1hi.js +9 -0
- package/build/server/chunks/13-0DWHZ1hi.js.map +1 -0
- package/build/server/chunks/2-e5usQqOM.js +9 -0
- package/build/server/chunks/2-e5usQqOM.js.map +1 -0
- package/build/server/chunks/3-DNXwTyoL.js +16 -0
- package/build/server/chunks/3-DNXwTyoL.js.map +1 -0
- package/build/server/chunks/4-CcbKZlu1.js +16 -0
- package/build/server/chunks/4-CcbKZlu1.js.map +1 -0
- package/build/server/chunks/5-D2sOEK0c.js +9 -0
- package/build/server/chunks/5-D2sOEK0c.js.map +1 -0
- package/build/server/chunks/6-BXhVICA0.js +9 -0
- package/build/server/chunks/6-BXhVICA0.js.map +1 -0
- package/build/server/chunks/7-11gAeU6R.js +9 -0
- package/build/server/chunks/7-11gAeU6R.js.map +1 -0
- package/build/server/chunks/8-_840pfm4.js +9 -0
- package/build/server/chunks/8-_840pfm4.js.map +1 -0
- package/build/server/chunks/9-9--rc8Zm.js +9 -0
- package/build/server/chunks/9-9--rc8Zm.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/DeleteFeature-DnK8sBJI.js +611 -0
- 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-DMFAdOZD.js +73 -0
- package/build/server/chunks/FeatureCard-DMFAdOZD.js.map +1 -0
- package/build/server/chunks/FeatureJson-DYvMEAub.js +55 -0
- package/build/server/chunks/FeatureJson-DYvMEAub.js.map +1 -0
- package/build/server/chunks/FeatureTransforms-B0aI_CJD.js +318 -0
- package/build/server/chunks/FeatureTransforms-B0aI_CJD.js.map +1 -0
- package/build/server/chunks/ManageTagsDialog-rb6Nv8Rn.js +87 -0
- package/build/server/chunks/ManageTagsDialog-rb6Nv8Rn.js.map +1 -0
- package/build/server/chunks/ProgressBar-COGq-V1W.js +70 -0
- package/build/server/chunks/ProgressBar-COGq-V1W.js.map +1 -0
- package/build/server/chunks/ProjectionViewer-5lAckYHW.js +1276 -0
- package/build/server/chunks/ProjectionViewer-5lAckYHW.js.map +1 -0
- package/build/server/chunks/ProjectsIndex-BUAIKM29.js +307 -0
- package/build/server/chunks/ProjectsIndex-BUAIKM29.js.map +1 -0
- package/build/server/chunks/RenameTag-DWIIR4Bx.js +55 -0
- 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-BeDG7Cqh.js +88 -0
- package/build/server/chunks/TagDotStrip-BeDG7Cqh.js.map +1 -0
- package/build/server/chunks/TagFilterSelect-CkbZdWK3.js +112 -0
- package/build/server/chunks/TagFilterSelect-CkbZdWK3.js.map +1 -0
- package/build/server/chunks/TagPalette-CpdTiC_7.js +993 -0
- 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-CgBWifc7.js +1342 -0
- package/build/server/chunks/_layout.svelte-CgBWifc7.js.map +1 -0
- package/build/server/chunks/_page.svelte-B-mdxSfs.js +37 -0
- package/build/server/chunks/_page.svelte-B-mdxSfs.js.map +1 -0
- package/build/server/chunks/_page.svelte-B6cpjvJE.js +37 -0
- package/build/server/chunks/_page.svelte-B6cpjvJE.js.map +1 -0
- package/build/server/chunks/_page.svelte-BXHSxkOq.js +10707 -0
- package/build/server/chunks/_page.svelte-BXHSxkOq.js.map +1 -0
- package/build/server/chunks/_page.svelte-CCfXJrLQ.js +454 -0
- package/build/server/chunks/_page.svelte-CCfXJrLQ.js.map +1 -0
- package/build/server/chunks/_page.svelte-CpNPTC27.js +99 -0
- package/build/server/chunks/_page.svelte-CpNPTC27.js.map +1 -0
- package/build/server/chunks/_page.svelte-D0MRtAqZ.js +735 -0
- package/build/server/chunks/_page.svelte-D0MRtAqZ.js.map +1 -0
- package/build/server/chunks/_page.svelte-DE_5ZkTk.js +49 -0
- package/build/server/chunks/_page.svelte-DE_5ZkTk.js.map +1 -0
- package/build/server/chunks/_page.svelte-cfUGFHhh.js +202 -0
- package/build/server/chunks/_page.svelte-cfUGFHhh.js.map +1 -0
- package/build/server/chunks/_page.svelte-epVS2H1-.js +368 -0
- package/build/server/chunks/_page.svelte-epVS2H1-.js.map +1 -0
- package/build/server/chunks/_page.svelte-j7WIQsUE.js +74 -0
- package/build/server/chunks/_page.svelte-j7WIQsUE.js.map +1 -0
- package/build/server/chunks/_page.svelte-sFsc403N.js +834 -0
- package/build/server/chunks/_page.svelte-sFsc403N.js.map +1 -0
- package/build/server/chunks/_page.svelte-zBBZNKzG.js +153 -0
- package/build/server/chunks/_page.svelte-zBBZNKzG.js.map +1 -0
- package/build/server/chunks/_server.ts-1lxF2NFW.js +146 -0
- package/build/server/chunks/_server.ts-1lxF2NFW.js.map +1 -0
- package/build/server/chunks/_server.ts-BP4OBqaD.js +21 -0
- package/build/server/chunks/_server.ts-BP4OBqaD.js.map +1 -0
- package/build/server/chunks/_server.ts-BVX4A2PU.js +69 -0
- package/build/server/chunks/_server.ts-BVX4A2PU.js.map +1 -0
- package/build/server/chunks/_server.ts-BaJa3Xt1.js +56 -0
- package/build/server/chunks/_server.ts-BaJa3Xt1.js.map +1 -0
- package/build/server/chunks/_server.ts-C5tp9sxp.js +23 -0
- package/build/server/chunks/_server.ts-C5tp9sxp.js.map +1 -0
- package/build/server/chunks/_server.ts-CeTvD5Mp.js +23 -0
- package/build/server/chunks/_server.ts-CeTvD5Mp.js.map +1 -0
- package/build/server/chunks/_server.ts-Cvu3XFUs.js +23 -0
- package/build/server/chunks/_server.ts-Cvu3XFUs.js.map +1 -0
- package/build/server/chunks/_server.ts-DFKEDp9D.js +46 -0
- package/build/server/chunks/_server.ts-DFKEDp9D.js.map +1 -0
- package/build/server/chunks/_server.ts-DG8DdQoB.js +961 -0
- package/build/server/chunks/_server.ts-DG8DdQoB.js.map +1 -0
- package/build/server/chunks/_server.ts-DN-6Y5lG.js +61 -0
- package/build/server/chunks/_server.ts-DN-6Y5lG.js.map +1 -0
- package/build/server/chunks/_server.ts-DSiY2IgM.js +106 -0
- package/build/server/chunks/_server.ts-DSiY2IgM.js.map +1 -0
- package/build/server/chunks/_server.ts-DapkfYPR.js +77 -0
- package/build/server/chunks/_server.ts-DapkfYPR.js.map +1 -0
- package/build/server/chunks/_server.ts-GHO81alX.js +50 -0
- package/build/server/chunks/_server.ts-GHO81alX.js.map +1 -0
- package/build/server/chunks/_server.ts-KPwcTd2q.js +56 -0
- package/build/server/chunks/_server.ts-KPwcTd2q.js.map +1 -0
- package/build/server/chunks/_server.ts-nBHIdesV.js +50 -0
- package/build/server/chunks/_server.ts-nBHIdesV.js.map +1 -0
- package/build/server/chunks/_server.ts-tonCHVx_.js +21 -0
- package/build/server/chunks/_server.ts-tonCHVx_.js.map +1 -0
- package/build/server/chunks/browserContainer-CnyD6-Fb.js +1577 -0
- package/build/server/chunks/browserContainer-CnyD6-Fb.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-5gHGj8fb.js +893 -0
- package/build/server/chunks/builderModeStore.svelte-5gHGj8fb.js.map +1 -0
- package/build/server/chunks/client-BMtVEMju.js +51 -0
- package/build/server/chunks/client-BMtVEMju.js.map +1 -0
- package/build/server/chunks/error.svelte-x31ayNE1.js +15 -0
- package/build/server/chunks/error.svelte-x31ayNE1.js.map +1 -0
- package/build/server/chunks/featureQueueContext-BbgVWKQG.js +32 -0
- package/build/server/chunks/featureQueueContext-BbgVWKQG.js.map +1 -0
- package/build/server/chunks/featureStore.svelte-CNLEsBJy.js +162 -0
- package/build/server/chunks/featureStore.svelte-CNLEsBJy.js.map +1 -0
- package/build/server/chunks/featuresStore.svelte-CIFEpGD9.js +212 -0
- package/build/server/chunks/featuresStore.svelte-CIFEpGD9.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-Bzpc8zwf.js +4815 -0
- package/build/server/chunks/index-server-Bzpc8zwf.js.map +1 -0
- package/build/server/chunks/internal-CPpC8eDZ.js +1820 -0
- package/build/server/chunks/internal-CPpC8eDZ.js.map +1 -0
- package/build/server/chunks/projectBundleClient-BTd9AFu6.js +168 -0
- package/build/server/chunks/projectBundleClient-BTd9AFu6.js.map +1 -0
- package/build/server/chunks/projectContextStore.svelte-CFTa-2W7.js +141 -0
- package/build/server/chunks/projectContextStore.svelte-CFTa-2W7.js.map +1 -0
- package/build/server/chunks/projectFeaturesStore.svelte-BmMgsX-B.js +87 -0
- package/build/server/chunks/projectFeaturesStore.svelte-BmMgsX-B.js.map +1 -0
- package/build/server/chunks/projectStore.svelte-D47f2Ze4.js +230 -0
- package/build/server/chunks/projectStore.svelte-D47f2Ze4.js.map +1 -0
- package/build/server/chunks/reconcile-DWYiyWQW.js +393 -0
- package/build/server/chunks/reconcile-DWYiyWQW.js.map +1 -0
- package/build/server/chunks/snapshotRepository-DatB6XLT.js +1173 -0
- package/build/server/chunks/snapshotRepository-DatB6XLT.js.map +1 -0
- package/build/server/chunks/state-C8lQ-4Ip.js +61 -0
- package/build/server/chunks/state-C8lQ-4Ip.js.map +1 -0
- package/build/server/chunks/stores-C4apQGTo.js +35 -0
- package/build/server/chunks/stores-C4apQGTo.js.map +1 -0
- package/build/server/chunks/sync-Dorsvxhj.js +955 -0
- package/build/server/chunks/sync-Dorsvxhj.js.map +1 -0
- package/build/server/chunks/syncAwareRepositories-OJq78sW0.js +57 -0
- package/build/server/chunks/syncAwareRepositories-OJq78sW0.js.map +1 -0
- package/build/server/chunks/tagPaletteStore.svelte-CsI7lh_H.js +181 -0
- package/build/server/chunks/tagPaletteStore.svelte-CsI7lh_H.js.map +1 -0
- package/build/server/index.js +2 -2
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +76 -32
- 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/scenarios-adapter.ts +96 -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 +98 -0
- package/cli/util/context-files.ts +13 -2
- package/mcp-server/bin.ts +109 -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 +15 -4
- package/mcp-server/sync-aware-repos.ts +79 -79
- package/mcp-server/sync-notifier.ts +180 -180
- package/mcp-server/tools/_codegen.ts +115 -115
- package/mcp-server/tools/_entity_builders.ts +30 -0
- package/mcp-server/tools/_shared.ts +212 -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/provenance.ts +217 -0
- 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 +18 -5
- package/src/app.css +26 -14
- 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 +25 -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 +10 -1
- 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 +279 -82
- 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 +160 -143
- 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 +1 -0
- package/src/features/behavior-model/presentation/view-models/factories.ts +181 -132
- package/src/features/diagram-projection/application/projectionComposition.ts +32 -0
- package/src/features/diagram-projection/application/projectionEvents.ts +26 -0
- package/src/features/diagram-projection/domain/DiagramSpec.ts +39 -0
- package/src/features/diagram-projection/domain/ports/DiagramExporter.ts +13 -0
- package/src/features/diagram-projection/domain/ports/ProjectionEvents.ts +21 -0
- package/src/features/diagram-projection/domain/ports/Projector.ts +26 -0
- package/src/features/diagram-projection/domain/services/ProjectorRegistry.ts +32 -0
- package/src/features/diagram-projection/domain/services/projections/erProjector.ts +37 -0
- package/src/features/diagram-projection/domain/services/projections/flowchartProjector.ts +57 -0
- package/src/features/diagram-projection/domain/services/projections/graphToDiagramSpec.ts +18 -0
- package/src/features/diagram-projection/domain/services/projections/mindmapProjector.ts +57 -0
- package/src/features/diagram-projection/domain/services/projections/sequenceProjector.ts +61 -0
- package/src/features/diagram-projection/domain/services/projections/statechartProjector.ts +70 -0
- package/src/features/diagram-projection/domain/services/sourceFacts.ts +32 -0
- package/src/features/diagram-projection/infrastructure/exporters/DotExporter.ts +33 -0
- package/src/features/diagram-projection/infrastructure/exporters/MermaidExporter.ts +117 -0
- package/src/features/diagram-projection/infrastructure/exporters/SvgExporter.ts +73 -0
- package/src/features/diagram-projection/infrastructure/render/mermaidLoader.ts +25 -0
- package/src/features/diagram-projection/presentation/components/ExportPanel.svelte +162 -0
- package/src/features/diagram-projection/presentation/components/MermaidDiagram.svelte +232 -0
- package/src/features/diagram-projection/presentation/components/ProjectionViewer.svelte +325 -0
- 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 +17 -20
- package/src/features/projects/presentation/components/ProjectFeaturesPanel.svelte +462 -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 +12 -0
- 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/source-provenance/application/ports/ProvenanceRepository.ts +8 -0
- package/src/features/source-provenance/domain/FeatureElements.ts +50 -0
- package/src/features/source-provenance/domain/Highlighting.ts +91 -0
- package/src/features/source-provenance/domain/Provenance.ts +220 -0
- package/src/features/source-provenance/infrastructure/io/ProvenanceJson.ts +98 -0
- package/src/features/source-provenance/infrastructure/persistence/InMemoryProvenanceRepository.ts +19 -0
- package/src/features/source-provenance/infrastructure/persistence/JsonFolderProvenanceRepository.ts +71 -0
- package/src/features/source-provenance/presentation/components/SourceViewer.svelte +228 -0
- package/src/features/source-provenance/presentation/stores/provenanceStore.svelte.ts +70 -0
- 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/lib/server/openLocalDirectory.ts +40 -0
- package/src/lib/server/searchIndex.ts +161 -0
- package/src/lib/server/snapshotRepository.ts +41 -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/routes/+layout.svelte +149 -85
- 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]/provenance/+server.ts +13 -0
- 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 +8 -3
- package/src/routes/features/[id]/provenance/+page.svelte +54 -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 +3 -3
- package/src/routes/tutorial/+page.svelte +3 -2
- package/src/shared/infrastructure/browserContainer.ts +61 -61
- package/src/shared/infrastructure/persistence/snapshotLayout.ts +12 -0
- package/src/shared/presentation/components/KebabMenu.svelte +95 -0
- package/src/shared/presentation/components/MenuItem.svelte +29 -0
- package/static/unspaghettit-demo.gif +0 -0
- package/vite.config.ts +53 -47
- package/build/client/_app/immutable/assets/0.DSctqr5I.css +0 -1
- package/build/client/_app/immutable/assets/0.DSctqr5I.css.br +0 -0
- package/build/client/_app/immutable/assets/0.DSctqr5I.css.gz +0 -0
- package/build/client/_app/immutable/assets/11.nv0I59TU.css.gz +0 -0
- package/build/client/_app/immutable/assets/BehaviorGraph.Bk0xQRZk.css +0 -1
- 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/9nXQ5qrY2.js +0 -1
- package/build/client/_app/immutable/chunks/9nXQ5qrY2.js.br +0 -0
- package/build/client/_app/immutable/chunks/9nXQ5qrY2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B439_FLv.js +0 -1
- package/build/client/_app/immutable/chunks/B439_FLv.js.br +0 -0
- package/build/client/_app/immutable/chunks/B439_FLv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BCEY79Dw.js +0 -1
- package/build/client/_app/immutable/chunks/BCEY79Dw.js.br +0 -2
- package/build/client/_app/immutable/chunks/BCEY79Dw.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BOrLmFwJ.js +0 -1
- 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/BPl9BITm.js +0 -3
- package/build/client/_app/immutable/chunks/BPl9BITm.js.br +0 -0
- package/build/client/_app/immutable/chunks/BPl9BITm.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BYIrIC5L.js +0 -1
- package/build/client/_app/immutable/chunks/BYIrIC5L.js.br +0 -0
- package/build/client/_app/immutable/chunks/BYIrIC5L.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B_9TWPrx2.js +0 -1
- package/build/client/_app/immutable/chunks/B_9TWPrx2.js.br +0 -0
- package/build/client/_app/immutable/chunks/B_9TWPrx2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BfMYiIUi.js +0 -1
- 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/BvOhVtZg.js +0 -1
- package/build/client/_app/immutable/chunks/BvOhVtZg.js.br +0 -1
- package/build/client/_app/immutable/chunks/BvOhVtZg.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/CY3em1ma2.js +0 -1
- package/build/client/_app/immutable/chunks/CY3em1ma2.js.br +0 -0
- package/build/client/_app/immutable/chunks/CY3em1ma2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CgdRZPgI.js +0 -1
- package/build/client/_app/immutable/chunks/CgdRZPgI.js.br +0 -0
- package/build/client/_app/immutable/chunks/CgdRZPgI.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CxyLMlpt2.js +0 -2
- 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/D5speDV82.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/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/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/DkxwAIfJ2.js +0 -1
- package/build/client/_app/immutable/chunks/DkxwAIfJ2.js.br +0 -0
- package/build/client/_app/immutable/chunks/DkxwAIfJ2.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/OJscNS3T.js +0 -1
- package/build/client/_app/immutable/chunks/OJscNS3T.js.br +0 -0
- package/build/client/_app/immutable/chunks/OJscNS3T.js.gz +0 -0
- package/build/client/_app/immutable/chunks/U9p9CtKG2.js +0 -2
- package/build/client/_app/immutable/chunks/U9p9CtKG2.js.br +0 -0
- package/build/client/_app/immutable/chunks/U9p9CtKG2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/aNMRV4sP2.js +0 -5
- package/build/client/_app/immutable/chunks/aNMRV4sP2.js.br +0 -0
- package/build/client/_app/immutable/chunks/aNMRV4sP2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/cMamJTsF.js +0 -1
- package/build/client/_app/immutable/chunks/cMamJTsF.js.br +0 -0
- package/build/client/_app/immutable/chunks/cMamJTsF.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/ib21i2T_.js +0 -6
- package/build/client/_app/immutable/chunks/ib21i2T_.js.br +0 -0
- package/build/client/_app/immutable/chunks/ib21i2T_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/suTxxv1t.js +0 -1
- package/build/client/_app/immutable/chunks/suTxxv1t.js.br +0 -1
- package/build/client/_app/immutable/chunks/suTxxv1t.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.Cd4S3giu.js +0 -2
- package/build/client/_app/immutable/entry/app.Cd4S3giu.js.br +0 -0
- package/build/client/_app/immutable/entry/app.Cd4S3giu.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.C3xXQVkq.js +0 -1
- package/build/client/_app/immutable/entry/start.C3xXQVkq.js.br +0 -0
- package/build/client/_app/immutable/entry/start.C3xXQVkq.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.dIOlQ-0y.js +0 -4
- package/build/client/_app/immutable/nodes/0.dIOlQ-0y.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.dIOlQ-0y.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.Dyte3Ggf.js +0 -1
- package/build/client/_app/immutable/nodes/1.Dyte3Ggf.js.br +0 -2
- package/build/client/_app/immutable/nodes/1.Dyte3Ggf.js.gz +0 -0
- package/build/client/_app/immutable/nodes/10.ivxAosDg.js +0 -2
- package/build/client/_app/immutable/nodes/10.ivxAosDg.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.ivxAosDg.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.wvMfJKC2.js +0 -401
- package/build/client/_app/immutable/nodes/11.wvMfJKC2.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.wvMfJKC2.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.CmPPom9Z.js +0 -1
- package/build/client/_app/immutable/nodes/2.CmPPom9Z.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.CmPPom9Z.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.D-iCGCEx.js +0 -1
- package/build/client/_app/immutable/nodes/3.D-iCGCEx.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.D-iCGCEx.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.DbfAvO8Z.js +0 -3
- package/build/client/_app/immutable/nodes/4.DbfAvO8Z.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.DbfAvO8Z.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.CC5Q7lVw.js +0 -42
- package/build/client/_app/immutable/nodes/5.CC5Q7lVw.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.CC5Q7lVw.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.CHIjlzpO.js +0 -1
- package/build/client/_app/immutable/nodes/6.CHIjlzpO.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.CHIjlzpO.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.Ejs18ZUc.js +0 -5
- package/build/client/_app/immutable/nodes/7.Ejs18ZUc.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.Ejs18ZUc.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.B-HweAc8.js +0 -1
- package/build/client/_app/immutable/nodes/8.B-HweAc8.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.B-HweAc8.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.CKPeM6tx.js +0 -5
- package/build/client/_app/immutable/nodes/9.CKPeM6tx.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.CKPeM6tx.js.gz +0 -0
- package/build/server/chunks/0-Co8kcANG.js +0 -15
- package/build/server/chunks/0-Co8kcANG.js.map +0 -1
- package/build/server/chunks/1-BSUItTig.js +0 -9
- package/build/server/chunks/1-BSUItTig.js.map +0 -1
- package/build/server/chunks/10-BygvxrZp.js +0 -9
- package/build/server/chunks/10-BygvxrZp.js.map +0 -1
- package/build/server/chunks/11-DRx0tRx2.js +0 -9
- package/build/server/chunks/11-DRx0tRx2.js.map +0 -1
- package/build/server/chunks/2-BQT3m1vc.js +0 -9
- package/build/server/chunks/2-BQT3m1vc.js.map +0 -1
- package/build/server/chunks/3-DPZ9BquJ.js +0 -16
- package/build/server/chunks/3-DPZ9BquJ.js.map +0 -1
- package/build/server/chunks/4-DHo47YX6.js +0 -16
- package/build/server/chunks/4-DHo47YX6.js.map +0 -1
- package/build/server/chunks/5-Cp9evBAG.js +0 -9
- package/build/server/chunks/5-Cp9evBAG.js.map +0 -1
- package/build/server/chunks/6-DiBq3bOV.js +0 -9
- package/build/server/chunks/6-DiBq3bOV.js.map +0 -1
- package/build/server/chunks/7-C4hmS0dG.js +0 -9
- package/build/server/chunks/7-C4hmS0dG.js.map +0 -1
- package/build/server/chunks/8-CFFuDzBC.js +0 -9
- package/build/server/chunks/8-CFFuDzBC.js.map +0 -1
- package/build/server/chunks/9-nhhKZJrs.js +0 -9
- package/build/server/chunks/9-nhhKZJrs.js.map +0 -1
- package/build/server/chunks/BehaviorGraph-m5kYj5HH.js +0 -757
- package/build/server/chunks/BehaviorGraph-m5kYj5HH.js.map +0 -1
- package/build/server/chunks/FeatureCard-CfbXNYe8.js +0 -73
- package/build/server/chunks/FeatureCard-CfbXNYe8.js.map +0 -1
- package/build/server/chunks/FeatureJson-Bv-qiOSf.js +0 -55
- package/build/server/chunks/FeatureJson-Bv-qiOSf.js.map +0 -1
- package/build/server/chunks/FeatureTransforms-UWDHmWEg.js +0 -311
- package/build/server/chunks/FeatureTransforms-UWDHmWEg.js.map +0 -1
- package/build/server/chunks/FeatureValidator-B8qEjAUW.js +0 -546
- package/build/server/chunks/FeatureValidator-B8qEjAUW.js.map +0 -1
- package/build/server/chunks/ManageTagsDialog-DBxA3tM2.js +0 -87
- package/build/server/chunks/ManageTagsDialog-DBxA3tM2.js.map +0 -1
- package/build/server/chunks/ProgressBar-DDoQJ_C9.js +0 -70
- package/build/server/chunks/ProgressBar-DDoQJ_C9.js.map +0 -1
- package/build/server/chunks/ProjectsIndex-DUVJ3hyL.js +0 -186
- package/build/server/chunks/ProjectsIndex-DUVJ3hyL.js.map +0 -1
- package/build/server/chunks/RenameTag-BuWLMl1m.js +0 -58
- package/build/server/chunks/RenameTag-BuWLMl1m.js.map +0 -1
- package/build/server/chunks/TagDotStrip-B1XQ0m0Y.js +0 -88
- package/build/server/chunks/TagDotStrip-B1XQ0m0Y.js.map +0 -1
- package/build/server/chunks/TagFilterSelect-DbO0Qduh.js +0 -112
- package/build/server/chunks/TagFilterSelect-DbO0Qduh.js.map +0 -1
- package/build/server/chunks/TagPalette-CtMNYCmu.js +0 -901
- package/build/server/chunks/TagPalette-CtMNYCmu.js.map +0 -1
- package/build/server/chunks/TransitionCatalog-B8zHs-2E.js +0 -271
- package/build/server/chunks/TransitionCatalog-B8zHs-2E.js.map +0 -1
- package/build/server/chunks/_layout.svelte-CLTmk0xU.js +0 -667
- package/build/server/chunks/_layout.svelte-CLTmk0xU.js.map +0 -1
- package/build/server/chunks/_page.svelte-B1nG3PKn.js +0 -29
- package/build/server/chunks/_page.svelte-B1nG3PKn.js.map +0 -1
- package/build/server/chunks/_page.svelte-B1s7jxaQ.js +0 -94
- package/build/server/chunks/_page.svelte-B1s7jxaQ.js.map +0 -1
- package/build/server/chunks/_page.svelte-BW_nbAAH.js +0 -828
- package/build/server/chunks/_page.svelte-BW_nbAAH.js.map +0 -1
- package/build/server/chunks/_page.svelte-Caq7J0jU.js +0 -448
- package/build/server/chunks/_page.svelte-Caq7J0jU.js.map +0 -1
- package/build/server/chunks/_page.svelte-Cham-dsM.js +0 -29
- package/build/server/chunks/_page.svelte-Cham-dsM.js.map +0 -1
- package/build/server/chunks/_page.svelte-Dhwjwph_.js +0 -41
- package/build/server/chunks/_page.svelte-Dhwjwph_.js.map +0 -1
- package/build/server/chunks/_page.svelte-DlFVT40-.js +0 -827
- package/build/server/chunks/_page.svelte-DlFVT40-.js.map +0 -1
- package/build/server/chunks/_page.svelte-NVT2dzpG.js +0 -10752
- package/build/server/chunks/_page.svelte-NVT2dzpG.js.map +0 -1
- package/build/server/chunks/_page.svelte-Oj-W7G5s.js +0 -197
- package/build/server/chunks/_page.svelte-Oj-W7G5s.js.map +0 -1
- package/build/server/chunks/_page.svelte-Z_kK2lHY.js +0 -68
- package/build/server/chunks/_page.svelte-Z_kK2lHY.js.map +0 -1
- package/build/server/chunks/_server.ts-0uNTZKwF.js +0 -50
- package/build/server/chunks/_server.ts-0uNTZKwF.js.map +0 -1
- package/build/server/chunks/_server.ts-BIBWjQI-.js +0 -46
- package/build/server/chunks/_server.ts-BIBWjQI-.js.map +0 -1
- package/build/server/chunks/_server.ts-BihpbxOW.js +0 -23
- package/build/server/chunks/_server.ts-BihpbxOW.js.map +0 -1
- package/build/server/chunks/_server.ts-BuoQ02BW.js +0 -50
- package/build/server/chunks/_server.ts-BuoQ02BW.js.map +0 -1
- package/build/server/chunks/_server.ts-CWvU15tL.js +0 -21
- package/build/server/chunks/_server.ts-CWvU15tL.js.map +0 -1
- package/build/server/chunks/_server.ts-D4EO0VHu.js +0 -106
- package/build/server/chunks/_server.ts-D4EO0VHu.js.map +0 -1
- package/build/server/chunks/_server.ts-DDa0Nk_S.js +0 -23
- package/build/server/chunks/_server.ts-DDa0Nk_S.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-DsbbVoOn.js +0 -23
- package/build/server/chunks/_server.ts-DsbbVoOn.js.map +0 -1
- package/build/server/chunks/_server.ts-Dy5zQHe2.js +0 -79
- package/build/server/chunks/_server.ts-Dy5zQHe2.js.map +0 -1
- package/build/server/chunks/_server.ts-YnfXkeMJ.js +0 -52
- package/build/server/chunks/_server.ts-YnfXkeMJ.js.map +0 -1
- package/build/server/chunks/_server.ts-vcaqdwxS.js +0 -45
- package/build/server/chunks/_server.ts-vcaqdwxS.js.map +0 -1
- package/build/server/chunks/browserContainer-CNX7ANld.js +0 -2884
- package/build/server/chunks/browserContainer-CNX7ANld.js.map +0 -1
- package/build/server/chunks/builderModeStore.svelte-BpRIU_zP.js +0 -892
- package/build/server/chunks/builderModeStore.svelte-BpRIU_zP.js.map +0 -1
- package/build/server/chunks/client-DeX3TC3s.js +0 -51
- package/build/server/chunks/client-DeX3TC3s.js.map +0 -1
- package/build/server/chunks/error.svelte-Cdjeq3L2.js +0 -15
- package/build/server/chunks/error.svelte-Cdjeq3L2.js.map +0 -1
- package/build/server/chunks/featureStore.svelte-DIYgPBVm.js +0 -161
- package/build/server/chunks/featureStore.svelte-DIYgPBVm.js.map +0 -1
- 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/identityStore.svelte-IIvW2_3b.js +0 -59
- package/build/server/chunks/identityStore.svelte-IIvW2_3b.js.map +0 -1
- package/build/server/chunks/index-server-7H0jzj0M.js +0 -4770
- package/build/server/chunks/index-server-7H0jzj0M.js.map +0 -1
- package/build/server/chunks/internal-KYK0WpL7.js +0 -1820
- package/build/server/chunks/internal-KYK0WpL7.js.map +0 -1
- package/build/server/chunks/projectFeaturesStore.svelte-2o-72_vr.js +0 -313
- package/build/server/chunks/projectFeaturesStore.svelte-2o-72_vr.js.map +0 -1
- package/build/server/chunks/projectsStore.svelte-QDz5PchX.js +0 -120
- package/build/server/chunks/projectsStore.svelte-QDz5PchX.js.map +0 -1
- package/build/server/chunks/reconcile-B5xqb6-s.js +0 -337
- package/build/server/chunks/reconcile-B5xqb6-s.js.map +0 -1
- package/build/server/chunks/snapshotRepository-BPXCjX92.js +0 -999
- package/build/server/chunks/snapshotRepository-BPXCjX92.js.map +0 -1
- package/build/server/chunks/state-DBjl9lhV.js +0 -61
- package/build/server/chunks/state-DBjl9lhV.js.map +0 -1
- package/build/server/chunks/sync-DZ3dn761.js +0 -955
- package/build/server/chunks/sync-DZ3dn761.js.map +0 -1
- package/build/server/chunks/syncBridge-BwXzPdjJ.js +0 -33
- package/build/server/chunks/syncBridge-BwXzPdjJ.js.map +0 -1
- package/build/server/chunks/tagPaletteStore.svelte-DfZOBvgY.js +0 -181
- package/build/server/chunks/tagPaletteStore.svelte-DfZOBvgY.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/{11.nv0I59TU.css → 13.nv0I59TU.css} +0 -0
- /package/build/client/_app/immutable/assets/{11.nv0I59TU.css.br → 13.nv0I59TU.css.br} +0 -0
- /package/build/client/_app/immutable/chunks/{D5speDV82.js → D5speDV8.js} +0 -0
- /package/build/client/_app/immutable/chunks/{D5speDV82.js.br → D5speDV8.js.br} +0 -0
package/README.md
CHANGED
|
@@ -1,445 +1,114 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img src="https://raw.githubusercontent.com/lyriks-io/unspaghettit/main/static/unspaghettit_logo.png" alt="Unspaghettit" width="
|
|
2
|
+
<img src="https://raw.githubusercontent.com/lyriks-io/unspaghettit/main/static/unspaghettit_logo.png" alt="Unspaghettit" width="180" />
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<h1 align="center">Unspaghettit</h1>
|
|
6
6
|
|
|
7
|
-
<p align="center">
|
|
8
|
-
<em>Executable specifications for AI-assisted software development.</em>
|
|
9
|
-
</p>
|
|
7
|
+
<p align="center"><em>Your specs shouldn't be markdown. They should pass or fail.</em></p>
|
|
10
8
|
|
|
11
9
|
<p align="center">
|
|
12
|
-
<a href="https://github.com/lyriks-io/unspaghettit/actions/workflows/ci.yml">
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
<a href="https://www.
|
|
16
|
-
<img src="https://img.shields.io/badge/license-AGPL--3.0-blue.svg" alt="License: AGPL-3.0" />
|
|
17
|
-
</a>
|
|
18
|
-
<a href="https://nodejs.org/">
|
|
19
|
-
<img src="https://img.shields.io/badge/node-%E2%89%A520.10-43853d.svg" alt="Node ≥ 20.10" />
|
|
20
|
-
</a>
|
|
10
|
+
<a href="https://github.com/lyriks-io/unspaghettit/actions/workflows/ci.yml"><img src="https://github.com/lyriks-io/unspaghettit/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
|
|
11
|
+
<a href="https://www.gnu.org/licenses/agpl-3.0.html"><img src="https://img.shields.io/badge/license-AGPL--3.0-blue.svg" alt="License: AGPL-3.0" /></a>
|
|
12
|
+
<a href="https://nodejs.org/"><img src="https://img.shields.io/badge/node-%E2%89%A520.10-43853d.svg" alt="Node >= 20.10" /></a>
|
|
13
|
+
<a href="https://www.npmjs.com/package/unspaghettit"><img src="https://img.shields.io/npm/v/unspaghettit.svg" alt="npm" /></a>
|
|
21
14
|
</p>
|
|
22
15
|
|
|
23
|
-
<p align="center">
|
|
24
|
-
Local-first · MCP-native · AGPL-3.0
|
|
25
|
-
</p>
|
|
16
|
+
<p align="center"><strong>Local-first</strong> · <strong>MCP-native</strong> · <strong>AGPL-3.0</strong></p>
|
|
26
17
|
|
|
27
18
|
<p align="center">
|
|
28
|
-
<
|
|
19
|
+
<img src="https://raw.githubusercontent.com/lyriks-io/unspaghettit/main/static/unspaghettit-demo.gif" alt="Unspaghettit demo: prompt in your AI agent, the runtime builds, the simulator's red line" width="820" />
|
|
29
20
|
</p>
|
|
30
21
|
|
|
31
22
|
---
|
|
32
23
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
AI coding works best when the human and the LLM share a stable model of the product. Without one, specs drift, prompts pile up, generated systems lose coherence, and important assumptions live only in chat history.
|
|
36
|
-
|
|
37
|
-
In one line: **a way to keep AI-assisted software aligned with what you actually meant.**
|
|
38
|
-
|
|
39
|
-
## What it does
|
|
40
|
-
|
|
41
|
-
Unspaghettit gives humans and LLMs a shared, **executable specification** for the systems they build together: a local, machine-checkable software design document that agents can read and update through MCP (the [Model Context Protocol](https://modelcontextprotocol.io) — how AI tools like Claude, Cursor, and Gemini talk to local programs).
|
|
42
|
-
|
|
43
|
-
Instead of keeping product intent in long prompts or markdown that slowly goes stale, you model the behavior as structured pieces: features, surfaces, actions, state, rules, effects, events, invariants, and scenarios. The MCP server exposes that specification to your AI coding tool, so the LLM can inspect, simulate, edit, and audit the model through typed tool calls instead of guessing from prose.
|
|
44
|
-
|
|
45
|
-
You can use it in both directions: start from an idea and drive **spec → code**, or point an LLM at an existing codebase and build a **code → spec** map that makes the current behavior explicit.
|
|
46
|
-
|
|
47
|
-
The specification becomes the source of truth; prompts become disposable again.
|
|
48
|
-
|
|
49
|
-
## Who it's for
|
|
50
|
-
|
|
51
|
-
- **Solo developers** shipping with an AI assistant who want product intent to survive between chat sessions.
|
|
52
|
-
- **Small teams** where multiple humans and agents touch the same codebase and need a shared, versioned model of "what the product does".
|
|
53
|
-
- **Technical founders / product-minded engineers** who want a machine-readable spec they can hand to an LLM and get an honest report back.
|
|
54
|
-
- **Anyone with an existing codebase** that's drifted from its docs and wants the LLM to rebuild the spec from the code itself.
|
|
55
|
-
|
|
56
|
-
## Benefits
|
|
57
|
-
|
|
58
|
-
- **Less drift between intent and code**: scenarios, generated types, and implementation coverage all point back to the same spec.
|
|
59
|
-
- **Existing code becomes legible**: ask an LLM to reverse-map a codebase into features, actions, scenarios, and implementation coverage.
|
|
60
|
-
- **AI agents get structured context**: the LLM reads focused entities and actions instead of a giant prompt blob.
|
|
61
|
-
- **Specs become testable**: every scenario can run through the simulator before implementation exists.
|
|
62
|
-
- **Implementation stays auditable**: `.unspa.json` records where each spec entity is implemented and reports gaps.
|
|
63
|
-
- **Teams keep local ownership**: snapshots are plain JSON in your repo or local hub, with no hosted service required.
|
|
64
|
-
|
|
65
|
-
## Quickstart
|
|
24
|
+
When you build with AI, the model never sees your system. It sees a fragment of context and guesses the rest from patterns. It doesn't understand. It infers.
|
|
66
25
|
|
|
67
|
-
|
|
26
|
+
Unspaghettit replaces the guessing with a runtime: a structured, executable model of what your product is supposed to do, that humans and AI agents read and edit through MCP. Every scenario you write runs through a deterministic simulator and reports pass or fail, **before a line of code exists**.
|
|
68
27
|
|
|
69
|
-
|
|
70
|
-
npm install -g unspaghettit
|
|
71
|
-
cd path/to/your-app
|
|
72
|
-
unspa init
|
|
73
|
-
unspa dashboard
|
|
74
|
-
```
|
|
28
|
+
Prompts become disposable. The specification stays.
|
|
75
29
|
|
|
76
|
-
|
|
30
|
+
## See it work
|
|
77
31
|
|
|
78
|
-
|
|
32
|
+
You, in your AI agent (Claude Code, Cursor, Gemini, Windsurf, Codex):
|
|
79
33
|
|
|
80
|
-
```text
|
|
81
|
-
Using the Unspaghettit MCP, create a new project.
|
|
82
|
-
Model the first feature and make it implementation-ready.
|
|
83
34
|
```
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
New to this? Hit `/tutorial` in the dashboard for a guided walkthrough (Project → Feature → Surface → Action → Parameter → Rule → Simulator, step by step).
|
|
88
|
-
|
|
89
|
-
For the full list of supported AI clients, the `unspa init` flags, and the shared-hub layout for multi-repo setups, jump to [Installation](#installation-clients-flags-advanced-setup).
|
|
90
|
-
|
|
91
|
-
## Scenarios as executable spec tests
|
|
92
|
-
|
|
93
|
-
The strongest idea in here, surfaced up front:
|
|
94
|
-
|
|
95
|
-
> Every scenario you author is an **executable assertion** about behavior. `run_all_scenarios` runs them through the deterministic simulator and reports pass/fail per assertion — a unit test suite for the spec itself, before the implementation exists.
|
|
96
|
-
|
|
97
|
-
Two complementary uses of the same scenarios:
|
|
98
|
-
|
|
99
|
-
- **Spec self-test (always on).** `run_all_scenarios` checks that the spec is internally consistent: every scenario's expected outcome matches what the simulator computes from the rules. Catches contradictions in product logic before a line of code is written.
|
|
100
|
-
- **Code-vs-spec test (preview).** `unspa scenarios export <featureId>` generates a Vitest file from those same scenarios, using the simulator's predictions as the oracle. You write one thin adapter (`UnspaAdapter` from `unspaghettit/cli/scenarios`) that calls your real implementation; the generated tests drive every scenario through it and assert state path-by-path. Experimental — adapter contract may shift between minor versions.
|
|
101
|
-
|
|
102
|
-
Scenarios can be **multi-step**: a scenario's `steps[]` replays preceding actions (each through the simulator, threading state forward) before the action under test, so `run_all_scenarios` verifies whole flows — add to cart → apply coupon → checkout — not just single transitions.
|
|
103
|
-
|
|
104
|
-
Specs stop being documentation. They become a runtime contract you can break loudly.
|
|
105
|
-
|
|
106
|
-
## Core capabilities
|
|
107
|
-
|
|
108
|
-
- **Structured behavior specification**, features, surfaces, actions, states, rules, invariants, transitions, scenarios, personas, resources, entities, events.
|
|
109
|
-
- **Code → spec mapping**, an LLM can read an existing repo, model its behavior into an Unspaghettit runtime, and wire the spec back to source files through the behavioral index.
|
|
110
|
-
- **MCP-native**, every entity is created, read, edited, and validated through MCP tool calls. Works with any MCP-compatible IDE (Claude Code, Claude Desktop, Cursor, Gemini, Windsurf, Kiro, Codex).
|
|
111
|
-
- **Deterministic simulator**, `dry_run_simulate` runs an action against a state snapshot. `run_all_scenarios` runs every scenario as a deterministic spec test, with pass/fail per assertion.
|
|
112
|
-
- **Maturity scoring**, `score_feature` returns a per-area score with critical/recommended issues; surfaces the worst surfaces and biggest gaps.
|
|
113
|
-
- **Generated TypeScript contracts**, `generate_types` writes types for state shapes, event names, and action parameters. Your implementation imports them, so TypeScript catches drift when the spec changes.
|
|
114
|
-
- **Implementation audit**, record each implementation in a `.unspa.json` behavioral index (`{ file, line, signature }` per entity); the MCP reconciles it against the spec and reports coverage + gaps.
|
|
115
|
-
- **Implementation queue**, per-project "implement next" list (Feature / Surface / Action items). Drag-and-drop reorder in the dashboard, `mcp__unspa__get_next_queued` so a dev says "implement the next thing" without naming it. Auto-prunes items the behavioral index marks done.
|
|
116
|
-
- **Local-first**, everything lives in your repo. No telemetry, no hosted servers, no cloud dependency. Snapshots are plain JSON.
|
|
117
|
-
- **Multi-agent ready**, built-in Yjs WebSocket server lets multiple humans and/or LLMs edit the same runtime in real time. History entries carry `AI · for John` attribution so MCP-driven changes are distinguishable from direct human edits.
|
|
118
|
-
- **Encrypted backup / share**, the project page's **Export .unspa** button bundles project + features + status sidecars into a single passphrase-encrypted file. Passphrase never leaves the browser; envelope carries no identifier of contents. See [Security tiers](#security-tiers).
|
|
119
|
-
|
|
120
|
-
## Workflows
|
|
121
|
-
|
|
122
|
-
### Spec → code
|
|
123
|
-
|
|
124
|
-
1. Describe what you want to your LLM.
|
|
125
|
-
2. The LLM builds the runtime via the MCP, `create_feature`, `apply_batch`, `add_action`, etc. Validation errors come back inline so the runtime converges.
|
|
126
|
-
3. Author scenarios. `run_all_scenarios` makes them executable spec tests.
|
|
127
|
-
4. `generate_types` writes TypeScript contracts from the spec.
|
|
128
|
-
5. The LLM implements the feature using those types and the scenario results as checks. The `.unspa.json` index maps each spec entity to a `{ file, line, signature }` so the dashboard can resolve coverage.
|
|
129
|
-
6. `score_feature` and `get_spec_gaps` catch shallow modelling before it ships.
|
|
130
|
-
|
|
131
|
-
### Code → spec
|
|
132
|
-
|
|
133
|
-
1. The LLM reads your existing code.
|
|
134
|
-
2. It builds an Unspaghettit runtime that describes the code's behavior, batch by batch.
|
|
135
|
-
3. `score_feature` and `get_spec_gaps` show where the runtime is still shallow.
|
|
136
|
-
4. Iterate until the runtime audits cleanly.
|
|
137
|
-
5. The `.unspa.json` index wires the runtime back to the source so future drift is visible.
|
|
138
|
-
|
|
139
|
-
The LLM does the reading/writing in both directions. Unspaghettit gives it a structured target and a maturity gate.
|
|
140
|
-
|
|
141
|
-
## Working with the MCP in chat
|
|
142
|
-
|
|
143
|
-
Ready-to-paste prompt patterns for the common tasks: starting a new project, choosing a maturity level, asking questions about an existing spec, editing it, and moving from spec to implementation. Skim the subheadings and jump to the one you need.
|
|
144
|
-
|
|
145
|
-
Once `unspa init` has registered the MCP server and your AI client has restarted, you do not need to speak in Unspaghettit internals. Start with the product you want. Mention the Unspaghettit or Unspa MCP, the scope, and the level of completeness you want. For a first prompt, asking for 100% maturity usually gives a much better result because it pushes the agent to create complete scenarios, rules, and checks instead of a shallow outline.
|
|
146
|
-
|
|
147
|
-
### Start with a prompt
|
|
148
|
-
|
|
149
|
-
For a new product, this is usually enough:
|
|
150
|
-
|
|
151
|
-
```text
|
|
152
|
-
Using the Unspaghettit MCP, create a new project.
|
|
153
|
-
It is a mobile app that lets a user get one coupon each day for a shop near them.
|
|
35
|
+
Using the Unspaghettit MCP, create a project for a daily-coupon app.
|
|
36
|
+
A user gets one coupon per day for a shop near them.
|
|
154
37
|
Make each feature reach 100% maturity.
|
|
155
38
|
```
|
|
156
39
|
|
|
157
|
-
|
|
40
|
+
Unspaghettit builds a structured runtime instead of a wall of prose:
|
|
158
41
|
|
|
159
|
-
```text
|
|
160
|
-
Using the Unspa MCP, create a new project for a B2B invoicing app.
|
|
161
|
-
Start with three features only: customers, invoices, and payment follow-up.
|
|
162
|
-
Make it a solid first draft, not necessarily 100% maturity yet.
|
|
163
|
-
Ask me if a business rule is unclear.
|
|
164
42
|
```
|
|
165
|
-
|
|
166
|
-
For one feature:
|
|
167
|
-
|
|
168
|
-
```text
|
|
169
|
-
Using the Unspaghettit MCP, add a feature for approving refunds.
|
|
170
|
-
Keep it focused on the support agent workflow.
|
|
171
|
-
Make it implementation-ready and bring it to 100% maturity.
|
|
43
|
+
features · surfaces · actions · state · rules · invariants · scenarios
|
|
172
44
|
```
|
|
173
45
|
|
|
174
|
-
|
|
46
|
+
Then runs every scenario through the simulator:
|
|
175
47
|
|
|
176
|
-
```text
|
|
177
|
-
Using the Unspaghettit MCP, read this repository and create a spec that describes the behavior already implemented.
|
|
178
|
-
Start with the most important user-facing flows.
|
|
179
|
-
Map each spec entity back to the files that implement it, then report what is unclear or missing.
|
|
180
48
|
```
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
100% maturity is the recommended default for a first serious prompt. It helps the agent produce a richer spec on the first pass. Lower the target only when you explicitly want brainstorming, discovery, or a partial draft.
|
|
185
|
-
|
|
186
|
-
```text
|
|
187
|
-
Make this a rough product draft. Do not force 100% maturity yet.
|
|
188
|
-
I want enough structure to discuss the flow and discover missing business rules.
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
```text
|
|
192
|
-
Make this implementation-ready. Aim for 100% maturity.
|
|
193
|
-
If anything prevents 100%, explain the missing product decision instead of inventing it.
|
|
49
|
+
✓ user receives one coupon per day
|
|
50
|
+
✓ coupon expires at midnight
|
|
51
|
+
✗ second claim same day → blocked by invariant: DailyLimit
|
|
194
52
|
```
|
|
195
53
|
|
|
196
|
-
|
|
197
|
-
Do not chase the score blindly. Prefer a clear product spec.
|
|
198
|
-
If a maturity check feels artificial for this feature, tell me why.
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
### Ask questions about the spec
|
|
54
|
+
No code has been written yet. The spec already fails loudly exactly where it should. That red line is a contradiction caught at design time instead of in production.
|
|
202
55
|
|
|
203
|
-
The
|
|
56
|
+
## The problem it kills
|
|
204
57
|
|
|
205
|
-
|
|
206
|
-
Using the Unspaghettit MCP, explain the Cart & checkout feature.
|
|
207
|
-
Explain what the user can do, what can block them, and what happens after each important action.
|
|
208
|
-
```
|
|
58
|
+
AI coding workflows go sideways fast. Specs drift. Prompts pile up. Generated systems lose coherence as they grow. Most tools answer this with markdown specs: documents the AI reads to generate code.
|
|
209
59
|
|
|
210
|
-
|
|
211
|
-
What can block Place order?
|
|
212
|
-
Explain each blocker in product language and tell me which cases are already covered by scenarios.
|
|
213
|
-
```
|
|
60
|
+
A document can't tell you it contradicts itself. Markdown drifts in silence. You find out when the code breaks.
|
|
214
61
|
|
|
215
|
-
|
|
216
|
-
Where is email verification used in this project?
|
|
217
|
-
Tell me what depends on it and what would change if we removed that requirement.
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
```text
|
|
221
|
-
Using the Unspaghettit MCP, make a report of the current implementation of the specs in this codebase.
|
|
222
|
-
Tell me what is implemented, what is missing, and what looks stale.
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
### Change or extend the spec
|
|
226
|
-
|
|
227
|
-
You can ask for changes in normal product language. Add constraints when they matter.
|
|
228
|
-
|
|
229
|
-
```text
|
|
230
|
-
Using the Unspaghettit MCP, add a "Cancel subscription" flow.
|
|
231
|
-
Reuse the existing billing concepts when possible.
|
|
232
|
-
After the edit, tell me whether the maturity score changed and why.
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
```text
|
|
236
|
-
Before changing the spec, propose the change in plain English.
|
|
237
|
-
Once I approve, update the Unspaghettit project and run the relevant scenarios.
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
### Move from spec to implementation
|
|
241
|
-
|
|
242
|
-
If you want code, say so in the same prompt. Include design, stack, and implementation constraints if they matter.
|
|
243
|
-
|
|
244
|
-
```text
|
|
245
|
-
Using the Unspaghettit MCP, implement the next queued feature.
|
|
246
|
-
Use the existing SvelteKit style and keep the UI quiet and mobile-friendly.
|
|
247
|
-
After implementation, update the implementation report for the spec.
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
```text
|
|
251
|
-
Using the Unspa MCP, implement the coupon discovery feature.
|
|
252
|
-
Use the current app stack. If the spec is missing something needed for implementation,
|
|
253
|
-
update the spec first, then write the code.
|
|
254
|
-
```
|
|
255
|
-
|
|
256
|
-
Good first prompt pattern: mention the Unspaghettit MCP, describe the product, set the maturity level, and say whether you want spec only or spec plus implementation.
|
|
62
|
+
Unspaghettit takes the other path. Your spec isn't a document. It runs.
|
|
257
63
|
|
|
258
64
|
## What makes it different
|
|
259
65
|
|
|
260
|
-
Unspaghettit is a local, executable specification layer
|
|
261
|
-
|
|
262
|
-
That makes it different from:
|
|
263
|
-
|
|
264
|
-
- markdown prompt workflows, which are easy to write but cannot execute or report drift,
|
|
265
|
-
- autonomous agent frameworks, which decide how work gets done but usually do not model product behavior as a contract,
|
|
266
|
-
- hosted AI wrappers, which add a service boundary instead of keeping the source of truth in your repo,
|
|
267
|
-
- no-code platforms, which own the implementation path,
|
|
268
|
-
- code generators, because Unspaghettit generates contracts and audit data while your LLM or team writes the actual code.
|
|
269
|
-
|
|
270
|
-
## Philosophy
|
|
271
|
-
|
|
272
|
-
- **Local-first.** Your repo holds the truth. No accounts, no telemetry, no hosted service.
|
|
273
|
-
- **Simulation before implementation.** Prove the spec is internally consistent before writing the code that implements it.
|
|
274
|
-
- **Explicit structure over prompt heuristics.** Humans and LLMs collaborate on the model, not on free-form prose.
|
|
275
|
-
- **Deterministic logic in the spec; judgment in the humans.** The runtime owns the gates and consequences. Humans (and LLMs as humans' agents) own taste, scope, and the parts that don't compress.
|
|
276
|
-
|
|
277
|
-
## Installation (clients, flags, advanced setup)
|
|
278
|
-
|
|
279
|
-
> The 30-second path is in [Quickstart](#quickstart) above. This section covers which AI clients are supported, the flags `unspa init` accepts, and the shared-hub layout for multi-repo setups.
|
|
280
|
-
>
|
|
281
|
-
> Developing on the CLI itself? Clone the repo, then `npm install && npm run build && npm link`. See [cli/README.md](cli/README.md) for the dev setup.
|
|
282
|
-
|
|
283
|
-
### Supported AI clients
|
|
66
|
+
Unspaghettit is a local, executable specification layer. It gives the LLM durable project memory that can be validated, simulated, scored, and mapped back to source code. That sets it apart from:
|
|
284
67
|
|
|
285
|
-
|
|
68
|
+
- **Markdown prompt workflows**, which are easy to write but cannot execute or report drift.
|
|
69
|
+
- **Autonomous agent frameworks**, which decide how work gets done but rarely model product behavior as a contract.
|
|
70
|
+
- **Hosted AI wrappers**, which add a service boundary instead of keeping the source of truth in your repo.
|
|
71
|
+
- **No-code platforms**, which own the implementation path.
|
|
72
|
+
- **Code generators**, because Unspaghettit produces contracts and audit data while your LLM or team writes the actual code.
|
|
286
73
|
|
|
287
|
-
|
|
288
|
-
| ------------------------ | ------------------------------- | -------------------------------------- |
|
|
289
|
-
| Claude Code (CLI + VSC) | `.mcp.json` | `~/.claude.json` |
|
|
290
|
-
| Claude Desktop | n/a (no project scope) | `%APPDATA%\Claude\claude_desktop_config.json` (Windows) / `~/Library/Application Support/Claude/...` (macOS) |
|
|
291
|
-
| Cursor | `.cursor/mcp.json` | `~/.cursor/mcp.json` |
|
|
292
|
-
| Gemini Code Assist / CLI | `.gemini/settings.json` | `~/.gemini/settings.json` |
|
|
293
|
-
| Windsurf | n/a | `~/.codeium/windsurf/mcp_config.json` |
|
|
294
|
-
| Kiro | `.kiro/settings/mcp.json` | `~/.kiro/settings/mcp.json` |
|
|
295
|
-
| Codex (VS Code) | prints snippet to paste manually | (manual paste) |
|
|
74
|
+
It works in both directions. Start from an idea and drive spec → code, or point an LLM at an existing codebase and build a code → spec map that makes current behavior explicit.
|
|
296
75
|
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
Re-running `unspa init` is safe, every step is idempotent. Existing entries are preserved; managed blocks refresh in place.
|
|
300
|
-
|
|
301
|
-
You normally don't run the MCP server manually — your AI client spawns `unspa-mcp` on demand. `unspa serve` exists as a debugging hatch if you ever need to test the stdio interface yourself.
|
|
302
|
-
|
|
303
|
-
### Where the model lives (shared hub by default)
|
|
304
|
-
|
|
305
|
-
`unspa init` needs no decision about storage: the behavior model lives in a **shared hub** at `~/.unspa-hub/unspa`, and both the MCP server and `unspa dashboard` discover it automatically on the first run — no `UNSPA_SNAPSHOTS`, no special launch directory. One source of truth across every repo and every client (including **Claude Desktop**, which has no project scope), and one `unspa dashboard` run from anywhere serves it.
|
|
306
|
-
|
|
307
|
-
Want the model versioned **inside a specific repo** instead — travelling in git and PRs? Opt into a per-repo install:
|
|
76
|
+
## Quickstart
|
|
308
77
|
|
|
309
78
|
```bash
|
|
310
|
-
|
|
311
|
-
unspa init --custom # interactive: hub vs per-repo vs custom path
|
|
312
|
-
unspa init --hub /custom/path # a non-default hub location (pins UNSPA_SNAPSHOTS)
|
|
79
|
+
npm install -g unspaghettit
|
|
313
80
|
```
|
|
314
81
|
|
|
315
|
-
Discovery order, used by both the MCP and the dashboard: explicit `UNSPA_SNAPSHOTS` / `--snapshots` → a per-repo `unspa/` found by walking up from the launch directory → the shared hub. So a per-repo `unspa/` always wins when present, and everything else falls back to the hub.
|
|
316
|
-
|
|
317
|
-
Switching later is just a re-run: `unspa init` for the hub, `unspa init --local` for per-repo, or `unspa dashboard --snapshots <path>` for a one-off look at any folder. All loopback / single-machine; the hub is not a network service.
|
|
318
|
-
|
|
319
|
-
For the CLI details (commands, flags, troubleshooting), see [cli/README.md](cli/README.md).
|
|
320
|
-
|
|
321
|
-
## Example
|
|
322
|
-
|
|
323
|
-
Boot `unspa dashboard` and click **Load samples** to install the bundled **eShop** project. It includes 4 features — Account & auth, Catalog & reviews, Cart & checkout, and Order fulfillment — each small enough for an agent to reason about end to end.
|
|
324
|
-
|
|
325
|
-
The sample is intentionally complete: scenarios, rules, invariants, events, personas, entities, resources, and implementation mapping are all represented. Every feature scores 100% maturity, so it works as a clean reference model. To see maturity gaps, create a tiny scratch feature with an empty surface or an action without effects/scenarios; the dashboard will show the missing pieces.
|
|
326
|
-
|
|
327
|
-
If you'd rather follow a guided tour than poke at the sample, the dashboard's `/tutorial` page also has a 14-section written walkthrough and a **Run interactive tutorial** button that drives a spotlight tour through Project → Feature → Surface → Action → Parameter → Rule → Simulator, prefilling fields along the way.
|
|
328
|
-
|
|
329
|
-
## Views
|
|
330
|
-
|
|
331
|
-
The dashboard ships two views over the same model:
|
|
332
|
-
|
|
333
|
-
- **Expert** (default) — the full control surface: projects, features, surfaces, actions, the simulator, maturity, and implementation coverage.
|
|
334
|
-
- **Builder** (opt-in) — a simpler, guided view: browse projects → core features → features with Maturity / Built dials, accept AI-proposed improvements, and fill a per-project build queue where each item carries its own maturity / implementation goal.
|
|
335
|
-
|
|
336
|
-
Expert is always on. Builder is opt-in — enable it whenever you want:
|
|
337
|
-
|
|
338
82
|
```bash
|
|
339
|
-
|
|
340
|
-
unspa
|
|
341
|
-
unspa dashboard
|
|
342
|
-
unspa view remove builder # turn it back off
|
|
343
|
-
unspa view list # show which views are enabled
|
|
344
|
-
```
|
|
345
|
-
|
|
346
|
-
With one view enabled the header shows no switcher; enabling Builder adds an **Expert | Builder** toggle. Enabled views are persisted next to the model (`<snapshots>/views.json`).
|
|
347
|
-
|
|
348
|
-
## Collaboration
|
|
349
|
-
|
|
350
|
-
Multiple humans + AI agents can edit the same runtime live:
|
|
351
|
-
|
|
352
|
-
- **Real-time sync**, every dashboard tab subscribes to a per-room Yjs WebSocket. Out-of-band changes (MCP writes, other tabs) flow in without a reload, with an activity toast for each change carrying a breadcrumb path (`Project › Feature › Surface › Action`) and a "View" button.
|
|
353
|
-
- **Identity**, click the round avatar in the header to set your display name. Every history entry you create is tagged with it. Stored in browser localStorage, never sent off-machine. First visit prompts once; the avatar dropdown is the explicit way to change or reset later.
|
|
354
|
-
- **Attribution**, MCP-driven changes carry an `AI · for John` label, so the history shows both the agent and the human it is working with.
|
|
355
|
-
- **Project history**, read-only timeline tab on the project page lists every change (rename, feature add/remove, queue mutation, …) with author + timestamp. The shared per-project room feeds it, so MCP edits and human edits land in the same audit log.
|
|
356
|
-
- **Implementation queue**, drag-and-drop "implement next" list per project. The LLM uses `mcp__unspa__get_next_queued` so you can say "implement the next thing" without naming it. Items auto-prune as `.unspa.json` flips them to `implemented`.
|
|
357
|
-
- **Backup / share**, the project page's **Export .unspa** button produces an encrypted bundle (project + features + status). The matching **Import .unspa** on the projects index restores it. Passphrase is required on both ends; the file itself reveals nothing about its contents.
|
|
358
|
-
|
|
359
|
-
## Security tiers
|
|
360
|
-
|
|
361
|
-
Unspaghettit is local-first by default. Three tiers, all opt-in beyond the default:
|
|
362
|
-
|
|
363
|
-
| Tier | Setup | What it covers |
|
|
364
|
-
|---|---|---|
|
|
365
|
-
| **Default** | `unspa dashboard` | Loopback bind (`127.0.0.1:3000`). No auth, no telemetry, no callhome. Single-machine trust boundary. |
|
|
366
|
-
| **LAN-share** | `UNSPA_AUTH_TOKEN=<secret>`, optionally `UNSPA_ALLOWED_ORIGIN=http://host:3000`, then `unspa dashboard --host 0.0.0.0` | Every REST + WebSocket request requires the token. Origin allowlist closes browser-side CSRF. Set the **same** `UNSPA_AUTH_TOKEN` on the MCP server's env so its notify calls authenticate. The dashboard prints the auth posture in its startup banner. |
|
|
367
|
-
| **Backup / share** (orthogonal to live sharing) | Click **Export .unspa** on a project, enter a passphrase ≥ 8 chars | AES-GCM-256 + PBKDF2-SHA256 (600k iterations). Passphrase never leaves the browser. Envelope carries no project name or metadata. |
|
|
368
|
-
|
|
369
|
-
Full threat model + mitigations in [SECURITY.md](SECURITY.md).
|
|
370
|
-
|
|
371
|
-
## Architecture
|
|
372
|
-
|
|
373
|
-
How the pieces fit at runtime:
|
|
374
|
-
|
|
375
|
-
```
|
|
376
|
-
┌──────────────────────────┐
|
|
377
|
-
AI client │ MCP server (stdio) │
|
|
378
|
-
(Claude / Cursor / ───→│ - typed tool surface │←─── your code
|
|
379
|
-
Gemini / ...) │ - validation + simulator│ (via .unspa.json
|
|
380
|
-
└────────────┬─────────────┘ behavioral
|
|
381
|
-
│ index)
|
|
382
|
-
▼
|
|
383
|
-
┌──────────────────────────┐
|
|
384
|
-
│ unspa/ (or hub) │
|
|
385
|
-
│ feature JSON snapshots │←──→ Yjs WebSocket
|
|
386
|
-
│ = your runtime │ (live multi-agent)
|
|
387
|
-
└────────────┬─────────────┘
|
|
388
|
-
│
|
|
389
|
-
▼
|
|
390
|
-
┌──────────────────────────┐
|
|
391
|
-
│ SvelteKit dashboard │
|
|
392
|
-
│ (you, browsing the spec)│
|
|
393
|
-
└──────────────────────────┘
|
|
394
|
-
```
|
|
395
|
-
|
|
396
|
-
The spec is just JSON on disk. The MCP server, the dashboard, your AI client, and your application code all read and write through it. Nothing is hosted; everything is in your repo (or in a local hub you control).
|
|
397
|
-
|
|
398
|
-
Where the code lives:
|
|
399
|
-
|
|
400
|
-
```
|
|
401
|
-
unspaghettit/
|
|
402
|
-
├── unspa/ ← feature JSON snapshots (your runtime; empty on a fresh clone)
|
|
403
|
-
├── samples/ ← bundled sample projects (one folder per project, e.g. eshop/)
|
|
404
|
-
├── mcp-server/ ← MCP server (stdio)
|
|
405
|
-
├── src/ ← SvelteKit dashboard + domain
|
|
406
|
-
│ ├── features/behavior-model/ ← Feature/Surface/Action entities + transforms
|
|
407
|
-
│ ├── features/simulator/ ← deterministic simulator
|
|
408
|
-
│ └── features/mcp-tools/ ← read-side tool implementations
|
|
409
|
-
├── cli/ ← `unspa` command (init / serve / dashboard)
|
|
410
|
-
└── build/ ← SvelteKit production build (npm run build)
|
|
83
|
+
cd path/to/your-app
|
|
84
|
+
unspa init # scaffold + register the MCP with your AI clients
|
|
85
|
+
unspa dashboard # http://localhost:3000
|
|
411
86
|
```
|
|
412
87
|
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
Built internally at Lyriks because existing AI workflows were becoming increasingly hard to reason about as systems grew. The runtime became useful enough that we released it as standalone OSS — AGPL-licensed and separate from other Lyriks research work.
|
|
416
|
-
|
|
417
|
-
Early but functional. Used internally to model products, generate typed scaffolding, audit implementation against spec, run multi-agent editing sessions, and recursively refine the runtime itself.
|
|
88
|
+
Restart your IDE. Your LLM now has the full runtime as typed MCP tools. Open the dashboard and click **Load samples** to explore a complete eShop project, or **Run interactive tutorial** for a guided tour.
|
|
418
89
|
|
|
419
|
-
|
|
90
|
+
Full setup, client config, and shared-hub mode: [docs/getting-started.md](docs/getting-started.md).
|
|
420
91
|
|
|
421
|
-
|
|
92
|
+
## Documentation
|
|
422
93
|
|
|
423
|
-
|
|
94
|
+
| | |
|
|
95
|
+
| --- | --- |
|
|
96
|
+
| [Getting started](docs/getting-started.md) | Install, `unspa init`, client setup, hub mode, dashboard |
|
|
97
|
+
| [Core concepts](docs/concepts.md) | The model, scenarios as tests, maturity, model checking, the audit index |
|
|
98
|
+
| [Working with AI](docs/prompting.md) | Prompt patterns for spec, query, edit, and implementation |
|
|
99
|
+
| [Collaboration](docs/collaboration.md) | Multi-agent editing, real-time sync, attribution, history |
|
|
100
|
+
| [Security](docs/security.md) | Trust tiers, LAN sharing, encrypted backup |
|
|
101
|
+
| [Architecture](docs/architecture.md) | Repo layout, how the pieces fit, project status |
|
|
102
|
+
| [Worlds & quests](docs/worldbuilding.md) | Modeling interactive fiction and narrative state (for the brave) |
|
|
424
103
|
|
|
425
|
-
|
|
104
|
+
## Status
|
|
426
105
|
|
|
427
|
-
|
|
106
|
+
Early but functional. Used internally at [Lyriks.io](https://lyriks.io) to model products, generate typed scaffolding, audit implementation against spec, run multi-agent editing sessions, and recursively refine the runtime itself. We released it because existing AI workflows became hard to reason about as systems grew, and this fixed it.
|
|
428
107
|
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
It will probably not become the fastest game ever made, but it may become a strangely coherent one. Unspaghettit holds the deterministic logic: the rules, the gates, the consequences, the world state. The LLM gets all the room it needs to invent everything that should stay human-shaped: emotion, atmosphere, dialogue, visual design, awkward silences, suspicious taverns, bad decisions, and the exact kind of rain that falls before a betrayal.
|
|
432
|
-
|
|
433
|
-
Unspaghettit does not know how to be human. That is not its job. But for deterministic logic, it is a menace.
|
|
434
|
-
|
|
435
|
-
The two skills that make this possible (`unspa-worldbuild` and `unspa-worldplay`) are experimental and opt-in. The `unspa init` flow asks before installing them, or you can pass `--fun` to pre-check the box. (You may also notice the package publishes a longer bin alias — `unspaghettit` instead of `unspa`. Try invoking that name. Just don't tell anyone.)
|
|
108
|
+
## License
|
|
436
109
|
|
|
437
|
-
|
|
110
|
+
AGPL-3.0. Free to use, study, modify, and self-host. Improvements and derivative networked versions stay open under the same license. For SSO, RBAC, audit trails, and encryption at rest, see the enterprise build (`hello@lyriks.io`).
|
|
438
111
|
|
|
439
112
|
---
|
|
440
113
|
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
AGPL-3.0. You're free to use, study, modify, and self-host. Improvements and derivative networked versions stay open under the same license. See [LICENSE](LICENSE).
|
|
444
|
-
|
|
445
|
-
Enterprise-grade support and private commercial setups are available via `hello@lyriks.io`. Everything in this repo stays open under AGPL.
|
|
114
|
+
<p align="center">If Unspaghettit resonates, a ⭐ helps other people find it. An open-source project by <a href="https://lyriks.io">Lyriks.io</a>.</p>
|