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.
Files changed (1226) hide show
  1. package/README.md +55 -386
  2. package/build/client/_app/immutable/assets/0.BsujoiMC.css +1 -0
  3. package/build/client/_app/immutable/assets/0.BsujoiMC.css.br +0 -0
  4. package/build/client/_app/immutable/assets/0.BsujoiMC.css.gz +0 -0
  5. package/build/client/_app/immutable/assets/13.nv0I59TU.css.gz +0 -0
  6. package/build/client/_app/immutable/assets/3.B3akUL9A.css.gz +0 -0
  7. package/build/client/_app/immutable/assets/ProjectionViewer.CAJs9mSm.css +1 -0
  8. package/build/client/_app/immutable/assets/ProjectionViewer.CAJs9mSm.css.br +0 -0
  9. package/build/client/_app/immutable/assets/ProjectionViewer.CAJs9mSm.css.gz +0 -0
  10. package/build/client/_app/immutable/chunks/2CIJV9nc.js +1 -0
  11. package/build/client/_app/immutable/chunks/2CIJV9nc.js.br +3 -0
  12. package/build/client/_app/immutable/chunks/2CIJV9nc.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/2hLhZJjD2.js +1 -0
  14. package/build/client/_app/immutable/chunks/2hLhZJjD2.js.br +0 -0
  15. package/build/client/_app/immutable/chunks/2hLhZJjD2.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/3UVfdb662.js +2 -0
  17. package/build/client/_app/immutable/chunks/3UVfdb662.js.br +0 -0
  18. package/build/client/_app/immutable/chunks/3UVfdb662.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/B1n0bVhh2.js +1 -0
  20. package/build/client/_app/immutable/chunks/B1n0bVhh2.js.br +0 -0
  21. package/build/client/_app/immutable/chunks/B1n0bVhh2.js.gz +0 -0
  22. package/build/client/_app/immutable/chunks/B3p5Prmp.js +1 -0
  23. package/build/client/_app/immutable/chunks/B3p5Prmp.js.br +0 -0
  24. package/build/client/_app/immutable/chunks/B3p5Prmp.js.gz +0 -0
  25. package/build/client/_app/immutable/chunks/B4cX2Gb42.js +5 -0
  26. package/build/client/_app/immutable/chunks/B4cX2Gb42.js.br +0 -0
  27. package/build/client/_app/immutable/chunks/B4cX2Gb42.js.gz +0 -0
  28. package/build/client/_app/immutable/chunks/B6MJfyJI.js +1 -0
  29. package/build/client/_app/immutable/chunks/B6MJfyJI.js.br +0 -0
  30. package/build/client/_app/immutable/chunks/B6MJfyJI.js.gz +0 -0
  31. package/build/client/_app/immutable/chunks/B7Ld9uRE2.js +1 -0
  32. package/build/client/_app/immutable/chunks/B7Ld9uRE2.js.br +0 -0
  33. package/build/client/_app/immutable/chunks/B7Ld9uRE2.js.gz +0 -0
  34. package/build/client/_app/immutable/chunks/B8_QNwhN.js +1 -0
  35. package/build/client/_app/immutable/chunks/B8_QNwhN.js.br +1 -0
  36. package/build/client/_app/immutable/chunks/B8_QNwhN.js.gz +0 -0
  37. package/build/client/_app/immutable/chunks/B8gBHxth.js +1 -0
  38. package/build/client/_app/immutable/chunks/B8gBHxth.js.br +0 -0
  39. package/build/client/_app/immutable/chunks/B8gBHxth.js.gz +0 -0
  40. package/build/client/_app/immutable/chunks/BDEjG0-V.js +1 -0
  41. package/build/client/_app/immutable/chunks/BDEjG0-V.js.br +0 -0
  42. package/build/client/_app/immutable/chunks/BDEjG0-V.js.gz +0 -0
  43. package/build/client/_app/immutable/chunks/BDf3hVDY.js +7 -0
  44. package/build/client/_app/immutable/chunks/BDf3hVDY.js.br +0 -0
  45. package/build/client/_app/immutable/chunks/BDf3hVDY.js.gz +0 -0
  46. package/build/client/_app/immutable/chunks/BEZv2jK9.js +1 -0
  47. package/build/client/_app/immutable/chunks/BEZv2jK9.js.br +2 -0
  48. package/build/client/_app/immutable/chunks/BEZv2jK9.js.gz +0 -0
  49. package/build/client/_app/immutable/chunks/BJYt9DEi.js +1 -0
  50. package/build/client/_app/immutable/chunks/BJYt9DEi.js.br +0 -0
  51. package/build/client/_app/immutable/chunks/BJYt9DEi.js.gz +0 -0
  52. package/build/client/_app/immutable/chunks/BJZ3XYC12.js +1 -0
  53. package/build/client/_app/immutable/chunks/BJZ3XYC12.js.br +0 -0
  54. package/build/client/_app/immutable/chunks/BJZ3XYC12.js.gz +0 -0
  55. package/build/client/_app/immutable/chunks/BK5md5Zs.js +89 -0
  56. package/build/client/_app/immutable/chunks/BK5md5Zs.js.br +0 -0
  57. package/build/client/_app/immutable/chunks/BK5md5Zs.js.gz +0 -0
  58. package/build/client/_app/immutable/chunks/BNO8PXpM.js +1 -0
  59. package/build/client/_app/immutable/chunks/BNO8PXpM.js.br +0 -0
  60. package/build/client/_app/immutable/chunks/BNO8PXpM.js.gz +0 -0
  61. package/build/client/_app/immutable/chunks/BNtFSWSC.js +40 -0
  62. package/build/client/_app/immutable/chunks/BNtFSWSC.js.br +0 -0
  63. package/build/client/_app/immutable/chunks/BNtFSWSC.js.gz +0 -0
  64. package/build/client/_app/immutable/chunks/BODMD6rJ.js +1 -0
  65. package/build/client/_app/immutable/chunks/BODMD6rJ.js.br +0 -0
  66. package/build/client/_app/immutable/chunks/BODMD6rJ.js.gz +0 -0
  67. package/build/client/_app/immutable/chunks/BPLFAo0p2.js +1 -0
  68. package/build/client/_app/immutable/chunks/BPLFAo0p2.js.br +0 -0
  69. package/build/client/_app/immutable/chunks/BPLFAo0p2.js.gz +0 -0
  70. package/build/client/_app/immutable/chunks/BQ9GodWX2.js.gz +0 -0
  71. package/build/client/_app/immutable/chunks/BQXcKXmZ2.js +41 -0
  72. package/build/client/_app/immutable/chunks/BQXcKXmZ2.js.br +0 -0
  73. package/build/client/_app/immutable/chunks/BQXcKXmZ2.js.gz +0 -0
  74. package/build/client/_app/immutable/chunks/BSLn6m4D2.js +1 -0
  75. package/build/client/_app/immutable/chunks/BSLn6m4D2.js.br +0 -0
  76. package/build/client/_app/immutable/chunks/BSLn6m4D2.js.gz +0 -0
  77. package/build/client/_app/immutable/chunks/BWPyau1x.js +1 -0
  78. package/build/client/_app/immutable/chunks/BWPyau1x.js.br +0 -0
  79. package/build/client/_app/immutable/chunks/BWPyau1x.js.gz +0 -0
  80. package/build/client/_app/immutable/chunks/BWtptBB32.js +1 -0
  81. package/build/client/_app/immutable/chunks/BWtptBB32.js.br +0 -0
  82. package/build/client/_app/immutable/chunks/BWtptBB32.js.gz +0 -0
  83. package/build/client/_app/immutable/chunks/BYVgaVQ1.js +1 -0
  84. package/build/client/_app/immutable/chunks/BYVgaVQ1.js.br +0 -0
  85. package/build/client/_app/immutable/chunks/BYVgaVQ1.js.gz +0 -0
  86. package/build/client/_app/immutable/chunks/Basumi2t2.js +1 -0
  87. package/build/client/_app/immutable/chunks/Basumi2t2.js.br +0 -0
  88. package/build/client/_app/immutable/chunks/Basumi2t2.js.gz +0 -0
  89. package/build/client/_app/immutable/chunks/BfCxGFh9.js +1 -0
  90. package/build/client/_app/immutable/chunks/BfCxGFh9.js.br +0 -0
  91. package/build/client/_app/immutable/chunks/BfCxGFh9.js.gz +0 -0
  92. package/build/client/_app/immutable/chunks/BifhSqXX.js +1 -0
  93. package/build/client/_app/immutable/chunks/BifhSqXX.js.br +0 -0
  94. package/build/client/_app/immutable/chunks/BifhSqXX.js.gz +0 -0
  95. package/build/client/_app/immutable/chunks/BjKsrp6D.js +1 -0
  96. package/build/client/_app/immutable/chunks/BjKsrp6D.js.br +6 -0
  97. package/build/client/_app/immutable/chunks/BjKsrp6D.js.gz +0 -0
  98. package/build/client/_app/immutable/chunks/BnXQbBnK.js +85 -0
  99. package/build/client/_app/immutable/chunks/BnXQbBnK.js.br +0 -0
  100. package/build/client/_app/immutable/chunks/BnXQbBnK.js.gz +0 -0
  101. package/build/client/_app/immutable/chunks/BzLd0mTH.js.gz +0 -0
  102. package/build/client/_app/immutable/chunks/BzsuqpLS2.js +8 -0
  103. package/build/client/_app/immutable/chunks/BzsuqpLS2.js.br +0 -0
  104. package/build/client/_app/immutable/chunks/BzsuqpLS2.js.gz +0 -0
  105. package/build/client/_app/immutable/chunks/C0A-HG6d.js +1 -0
  106. package/build/client/_app/immutable/chunks/C0A-HG6d.js.br +0 -0
  107. package/build/client/_app/immutable/chunks/C0A-HG6d.js.gz +0 -0
  108. package/build/client/_app/immutable/chunks/C0QpZqq7.js +1 -0
  109. package/build/client/_app/immutable/chunks/C0QpZqq7.js.br +3 -0
  110. package/build/client/_app/immutable/chunks/C0QpZqq7.js.gz +0 -0
  111. package/build/client/_app/immutable/chunks/C397Xuny.js +292 -0
  112. package/build/client/_app/immutable/chunks/C397Xuny.js.br +0 -0
  113. package/build/client/_app/immutable/chunks/C397Xuny.js.gz +0 -0
  114. package/build/client/_app/immutable/chunks/C8Fc0cco.js +1 -0
  115. package/build/client/_app/immutable/chunks/C8Fc0cco.js.br +0 -0
  116. package/build/client/_app/immutable/chunks/C8Fc0cco.js.gz +0 -0
  117. package/build/client/_app/immutable/chunks/C9DakJMD.js +1 -0
  118. package/build/client/_app/immutable/chunks/C9DakJMD.js.br +0 -0
  119. package/build/client/_app/immutable/chunks/C9DakJMD.js.gz +0 -0
  120. package/build/client/_app/immutable/chunks/CBm5AXdl.js +34 -0
  121. package/build/client/_app/immutable/chunks/CBm5AXdl.js.br +0 -0
  122. package/build/client/_app/immutable/chunks/CBm5AXdl.js.gz +0 -0
  123. package/build/client/_app/immutable/chunks/CE2JlG_l.js +1 -0
  124. package/build/client/_app/immutable/chunks/CE2JlG_l.js.br +0 -0
  125. package/build/client/_app/immutable/chunks/CE2JlG_l.js.gz +0 -0
  126. package/build/client/_app/immutable/chunks/CE4N3DsM.js +36 -0
  127. package/build/client/_app/immutable/chunks/CE4N3DsM.js.br +0 -0
  128. package/build/client/_app/immutable/chunks/CE4N3DsM.js.gz +0 -0
  129. package/build/client/_app/immutable/chunks/CFX_rB4g2.js +3 -0
  130. package/build/client/_app/immutable/chunks/CFX_rB4g2.js.br +0 -0
  131. package/build/client/_app/immutable/chunks/CFX_rB4g2.js.gz +0 -0
  132. package/build/client/_app/immutable/chunks/CGhzzHe4.js +1 -0
  133. package/build/client/_app/immutable/chunks/CGhzzHe4.js.br +0 -0
  134. package/build/client/_app/immutable/chunks/CGhzzHe4.js.gz +0 -0
  135. package/build/client/_app/immutable/chunks/CGkvQl0v2.js +30 -0
  136. package/build/client/_app/immutable/chunks/CGkvQl0v2.js.br +0 -0
  137. package/build/client/_app/immutable/chunks/CGkvQl0v2.js.gz +0 -0
  138. package/build/client/_app/immutable/chunks/CHdTS7qa.js +15 -0
  139. package/build/client/_app/immutable/chunks/CHdTS7qa.js.br +0 -0
  140. package/build/client/_app/immutable/chunks/CHdTS7qa.js.gz +0 -0
  141. package/build/client/_app/immutable/chunks/CM9ya9R5.js +231 -0
  142. package/build/client/_app/immutable/chunks/CM9ya9R5.js.br +0 -0
  143. package/build/client/_app/immutable/chunks/CM9ya9R5.js.gz +0 -0
  144. package/build/client/_app/immutable/chunks/CN4TM9z5.js +6 -0
  145. package/build/client/_app/immutable/chunks/CN4TM9z5.js.br +4 -0
  146. package/build/client/_app/immutable/chunks/CN4TM9z5.js.gz +0 -0
  147. package/build/client/_app/immutable/chunks/CQcPxj-M.js +11 -0
  148. package/build/client/_app/immutable/chunks/CQcPxj-M.js.br +0 -0
  149. package/build/client/_app/immutable/chunks/CQcPxj-M.js.gz +0 -0
  150. package/build/client/_app/immutable/chunks/CSKSodPl2.js +1 -0
  151. package/build/client/_app/immutable/chunks/CSKSodPl2.js.br +0 -0
  152. package/build/client/_app/immutable/chunks/CSKSodPl2.js.gz +0 -0
  153. package/build/client/_app/immutable/chunks/CTRD2R1y.js +70 -0
  154. package/build/client/_app/immutable/chunks/CTRD2R1y.js.br +0 -0
  155. package/build/client/_app/immutable/chunks/CTRD2R1y.js.gz +0 -0
  156. package/build/client/_app/immutable/chunks/CTgm3pse2.js +1 -0
  157. package/build/client/_app/immutable/chunks/CTgm3pse2.js.br +0 -0
  158. package/build/client/_app/immutable/chunks/CTgm3pse2.js.gz +0 -0
  159. package/build/client/_app/immutable/chunks/CU9-_wmX2.js +62 -0
  160. package/build/client/_app/immutable/chunks/CU9-_wmX2.js.br +0 -0
  161. package/build/client/_app/immutable/chunks/CU9-_wmX2.js.gz +0 -0
  162. package/build/client/_app/immutable/chunks/CULY9yDS.js +1 -0
  163. package/build/client/_app/immutable/chunks/CULY9yDS.js.br +0 -0
  164. package/build/client/_app/immutable/chunks/CULY9yDS.js.gz +0 -0
  165. package/build/client/_app/immutable/chunks/CUpSevj82.js +1 -0
  166. package/build/client/_app/immutable/chunks/CUpSevj82.js.br +0 -0
  167. package/build/client/_app/immutable/chunks/CUpSevj82.js.gz +0 -0
  168. package/build/client/_app/immutable/chunks/CUvgMu97.js +1 -0
  169. package/build/client/_app/immutable/chunks/CUvgMu97.js.br +0 -0
  170. package/build/client/_app/immutable/chunks/CUvgMu97.js.gz +0 -0
  171. package/build/client/_app/immutable/chunks/CWiCMZki.js +1 -0
  172. package/build/client/_app/immutable/chunks/CWiCMZki.js.br +0 -0
  173. package/build/client/_app/immutable/chunks/CWiCMZki.js.gz +0 -0
  174. package/build/client/_app/immutable/chunks/CWw-STqh2.js +1 -0
  175. package/build/client/_app/immutable/chunks/CWw-STqh2.js.br +0 -0
  176. package/build/client/_app/immutable/chunks/CWw-STqh2.js.gz +0 -0
  177. package/build/client/_app/immutable/chunks/CXvvf4uQ.js +1 -0
  178. package/build/client/_app/immutable/chunks/CXvvf4uQ.js.br +0 -0
  179. package/build/client/_app/immutable/chunks/CXvvf4uQ.js.gz +0 -0
  180. package/build/client/_app/immutable/chunks/CZI9lQ5y.js +1 -0
  181. package/build/client/_app/immutable/chunks/CZI9lQ5y.js.br +0 -0
  182. package/build/client/_app/immutable/chunks/CZI9lQ5y.js.gz +0 -0
  183. package/build/client/_app/immutable/chunks/CZNb0x60.js +8 -0
  184. package/build/client/_app/immutable/chunks/CZNb0x60.js.br +5 -0
  185. package/build/client/_app/immutable/chunks/CZNb0x60.js.gz +0 -0
  186. package/build/client/_app/immutable/chunks/CZjhCdkx.js +120 -0
  187. package/build/client/_app/immutable/chunks/CZjhCdkx.js.br +0 -0
  188. package/build/client/_app/immutable/chunks/CZjhCdkx.js.gz +0 -0
  189. package/build/client/_app/immutable/chunks/C_BfkqQj2.js +1 -0
  190. package/build/client/_app/immutable/chunks/C_BfkqQj2.js.br +3 -0
  191. package/build/client/_app/immutable/chunks/C_BfkqQj2.js.gz +0 -0
  192. package/build/client/_app/immutable/chunks/CaXAkaVH.js +2 -0
  193. package/build/client/_app/immutable/chunks/CaXAkaVH.js.br +0 -0
  194. package/build/client/_app/immutable/chunks/CaXAkaVH.js.gz +0 -0
  195. package/build/client/_app/immutable/chunks/Ce0G0NEU2.js +132 -0
  196. package/build/client/_app/immutable/chunks/Ce0G0NEU2.js.br +0 -0
  197. package/build/client/_app/immutable/chunks/Ce0G0NEU2.js.gz +0 -0
  198. package/build/client/_app/immutable/chunks/Cio7Lne-.js +1 -0
  199. package/build/client/_app/immutable/chunks/Cio7Lne-.js.br +0 -0
  200. package/build/client/_app/immutable/chunks/Cio7Lne-.js.gz +0 -0
  201. package/build/client/_app/immutable/chunks/Ck7fLxFH2.js +1 -0
  202. package/build/client/_app/immutable/chunks/Ck7fLxFH2.js.br +0 -0
  203. package/build/client/_app/immutable/chunks/Ck7fLxFH2.js.gz +0 -0
  204. package/build/client/_app/immutable/chunks/CkgG2vj12.js +1 -0
  205. package/build/client/_app/immutable/chunks/CkgG2vj12.js.br +0 -0
  206. package/build/client/_app/immutable/chunks/CkgG2vj12.js.gz +0 -0
  207. package/build/client/_app/immutable/chunks/CkwYPeQK.js +1 -0
  208. package/build/client/_app/immutable/chunks/CkwYPeQK.js.br +0 -0
  209. package/build/client/_app/immutable/chunks/CkwYPeQK.js.gz +0 -0
  210. package/build/client/_app/immutable/chunks/Cl7Z3e6-.js.gz +0 -0
  211. package/build/client/_app/immutable/chunks/CltURiZ0.js +1 -0
  212. package/build/client/_app/immutable/chunks/CltURiZ0.js.br +0 -0
  213. package/build/client/_app/immutable/chunks/CltURiZ0.js.gz +0 -0
  214. package/build/client/_app/immutable/chunks/CpJxgCib.js +1 -0
  215. package/build/client/_app/immutable/chunks/CpJxgCib.js.br +0 -0
  216. package/build/client/_app/immutable/chunks/CpJxgCib.js.gz +0 -0
  217. package/build/client/_app/immutable/chunks/CqAJyebb.js +1 -0
  218. package/build/client/_app/immutable/chunks/CqAJyebb.js.br +0 -0
  219. package/build/client/_app/immutable/chunks/CqAJyebb.js.gz +0 -0
  220. package/build/client/_app/immutable/chunks/CrBRkqIf.js +4 -0
  221. package/build/client/_app/immutable/chunks/CrBRkqIf.js.br +0 -0
  222. package/build/client/_app/immutable/chunks/CrBRkqIf.js.gz +0 -0
  223. package/build/client/_app/immutable/chunks/CrYxhB9g.js +1 -0
  224. package/build/client/_app/immutable/chunks/CrYxhB9g.js.br +0 -0
  225. package/build/client/_app/immutable/chunks/CrYxhB9g.js.gz +0 -0
  226. package/build/client/_app/immutable/chunks/CtpR9Zsd.js +96 -0
  227. package/build/client/_app/immutable/chunks/CtpR9Zsd.js.br +0 -0
  228. package/build/client/_app/immutable/chunks/CtpR9Zsd.js.gz +0 -0
  229. package/build/client/_app/immutable/chunks/CtsLiFqq.js +1 -0
  230. package/build/client/_app/immutable/chunks/CtsLiFqq.js.br +0 -0
  231. package/build/client/_app/immutable/chunks/CtsLiFqq.js.gz +0 -0
  232. package/build/client/_app/immutable/chunks/CuIMKdpZ.js +1 -0
  233. package/build/client/_app/immutable/chunks/CuIMKdpZ.js.br +1 -0
  234. package/build/client/_app/immutable/chunks/CuIMKdpZ.js.gz +0 -0
  235. package/build/client/_app/immutable/chunks/CuRJVwEq.js +1 -0
  236. package/build/client/_app/immutable/chunks/CuRJVwEq.js.br +0 -0
  237. package/build/client/_app/immutable/chunks/CuRJVwEq.js.gz +0 -0
  238. package/build/client/_app/immutable/chunks/CuxYynFY.js +1 -0
  239. package/build/client/_app/immutable/chunks/CuxYynFY.js.br +0 -0
  240. package/build/client/_app/immutable/chunks/CuxYynFY.js.gz +0 -0
  241. package/build/client/_app/immutable/chunks/CvzmTz19.js +1 -0
  242. package/build/client/_app/immutable/chunks/CvzmTz19.js.br +0 -0
  243. package/build/client/_app/immutable/chunks/CvzmTz19.js.gz +0 -0
  244. package/build/client/_app/immutable/chunks/Cwlxg_jI2.js +1 -0
  245. package/build/client/_app/immutable/chunks/Cwlxg_jI2.js.br +0 -0
  246. package/build/client/_app/immutable/chunks/Cwlxg_jI2.js.gz +0 -0
  247. package/build/client/_app/immutable/chunks/CytoxYDC.js +1 -0
  248. package/build/client/_app/immutable/chunks/CytoxYDC.js.br +0 -0
  249. package/build/client/_app/immutable/chunks/CytoxYDC.js.gz +0 -0
  250. package/build/client/_app/immutable/chunks/D-bzr3Rt.js +1 -0
  251. package/build/client/_app/immutable/chunks/D-bzr3Rt.js.br +0 -0
  252. package/build/client/_app/immutable/chunks/D-bzr3Rt.js.gz +0 -0
  253. package/build/client/_app/immutable/chunks/D5speDV8.js.gz +0 -0
  254. package/build/client/_app/immutable/chunks/D6jRqBbL.js +1 -0
  255. package/build/client/_app/immutable/chunks/D6jRqBbL.js.br +0 -0
  256. package/build/client/_app/immutable/chunks/D6jRqBbL.js.gz +0 -0
  257. package/build/client/_app/immutable/chunks/D8TtvFq5.js +32 -0
  258. package/build/client/_app/immutable/chunks/D8TtvFq5.js.br +0 -0
  259. package/build/client/_app/immutable/chunks/D8TtvFq5.js.gz +0 -0
  260. package/build/client/_app/immutable/chunks/D9MPVnoE2.js +206 -0
  261. package/build/client/_app/immutable/chunks/D9MPVnoE2.js.br +0 -0
  262. package/build/client/_app/immutable/chunks/D9MPVnoE2.js.gz +0 -0
  263. package/build/client/_app/immutable/chunks/DBCpiSCv.js +84 -0
  264. package/build/client/_app/immutable/chunks/DBCpiSCv.js.br +0 -0
  265. package/build/client/_app/immutable/chunks/DBCpiSCv.js.gz +0 -0
  266. package/build/client/_app/immutable/chunks/DMSYSDo82.js +10 -0
  267. package/build/client/_app/immutable/chunks/DMSYSDo82.js.br +0 -0
  268. package/build/client/_app/immutable/chunks/DMSYSDo82.js.gz +0 -0
  269. package/build/client/_app/immutable/chunks/DNzq6p3w2.js +161 -0
  270. package/build/client/_app/immutable/chunks/DNzq6p3w2.js.br +0 -0
  271. package/build/client/_app/immutable/chunks/DNzq6p3w2.js.gz +0 -0
  272. package/build/client/_app/immutable/chunks/DQWKNctN2.js +7 -0
  273. package/build/client/_app/immutable/chunks/DQWKNctN2.js.br +0 -0
  274. package/build/client/_app/immutable/chunks/DQWKNctN2.js.gz +0 -0
  275. package/build/client/_app/immutable/chunks/DQuHIABk2.js +4 -0
  276. package/build/client/_app/immutable/chunks/DQuHIABk2.js.br +0 -0
  277. package/build/client/_app/immutable/chunks/DQuHIABk2.js.gz +0 -0
  278. package/build/client/_app/immutable/chunks/DT5F1-d-.js +1 -0
  279. package/build/client/_app/immutable/chunks/DT5F1-d-.js.br +0 -0
  280. package/build/client/_app/immutable/chunks/DT5F1-d-.js.gz +0 -0
  281. package/build/client/_app/immutable/chunks/DVrhERYX2.js +1 -0
  282. package/build/client/_app/immutable/chunks/DVrhERYX2.js.br +0 -0
  283. package/build/client/_app/immutable/chunks/DVrhERYX2.js.gz +0 -0
  284. package/build/client/_app/immutable/chunks/DWAgljeH.js +1 -0
  285. package/build/client/_app/immutable/chunks/DWAgljeH.js.br +0 -0
  286. package/build/client/_app/immutable/chunks/DWAgljeH.js.gz +0 -0
  287. package/build/client/_app/immutable/chunks/DWVg3pyI.js +139 -0
  288. package/build/client/_app/immutable/chunks/DWVg3pyI.js.br +0 -0
  289. package/build/client/_app/immutable/chunks/DWVg3pyI.js.gz +0 -0
  290. package/build/client/_app/immutable/chunks/DWeRzxcG2.js +1 -0
  291. package/build/client/_app/immutable/chunks/DWeRzxcG2.js.br +0 -0
  292. package/build/client/_app/immutable/chunks/DWeRzxcG2.js.gz +0 -0
  293. package/build/client/_app/immutable/chunks/DcvkBs962.js +1 -0
  294. package/build/client/_app/immutable/chunks/DcvkBs962.js.br +0 -0
  295. package/build/client/_app/immutable/chunks/DcvkBs962.js.gz +0 -0
  296. package/build/client/_app/immutable/chunks/DdKDVl0G2.js +1 -0
  297. package/build/client/_app/immutable/chunks/DdKDVl0G2.js.br +0 -0
  298. package/build/client/_app/immutable/chunks/DdKDVl0G2.js.gz +0 -0
  299. package/build/client/_app/immutable/chunks/Dg8gJSFX.js +106 -0
  300. package/build/client/_app/immutable/chunks/Dg8gJSFX.js.br +0 -0
  301. package/build/client/_app/immutable/chunks/Dg8gJSFX.js.gz +0 -0
  302. package/build/client/_app/immutable/chunks/Dhqg7r_2.js.gz +0 -0
  303. package/build/client/_app/immutable/chunks/Diyr50UO2.js +10 -0
  304. package/build/client/_app/immutable/chunks/Diyr50UO2.js.br +0 -0
  305. package/build/client/_app/immutable/chunks/Diyr50UO2.js.gz +0 -0
  306. package/build/client/_app/immutable/chunks/DlHVqE8I2.js +1 -0
  307. package/build/client/_app/immutable/chunks/DlHVqE8I2.js.br +0 -0
  308. package/build/client/_app/immutable/chunks/DlHVqE8I2.js.gz +0 -0
  309. package/build/client/_app/immutable/chunks/Dm68_Exu2.js +24 -0
  310. package/build/client/_app/immutable/chunks/Dm68_Exu2.js.br +0 -0
  311. package/build/client/_app/immutable/chunks/Dm68_Exu2.js.gz +0 -0
  312. package/build/client/_app/immutable/chunks/Dmt7ISOs.js +162 -0
  313. package/build/client/_app/immutable/chunks/Dmt7ISOs.js.br +0 -0
  314. package/build/client/_app/immutable/chunks/Dmt7ISOs.js.gz +0 -0
  315. package/build/client/_app/immutable/chunks/Ds6AU9Ow.js +156 -0
  316. package/build/client/_app/immutable/chunks/Ds6AU9Ow.js.br +0 -0
  317. package/build/client/_app/immutable/chunks/Ds6AU9Ow.js.gz +0 -0
  318. package/build/client/_app/immutable/chunks/DsF7k-Jl.js +1 -0
  319. package/build/client/_app/immutable/chunks/DsF7k-Jl.js.br +0 -0
  320. package/build/client/_app/immutable/chunks/DsF7k-Jl.js.gz +0 -0
  321. package/build/client/_app/immutable/chunks/DubrsqOt2.js +24 -0
  322. package/build/client/_app/immutable/chunks/DubrsqOt2.js.br +0 -0
  323. package/build/client/_app/immutable/chunks/DubrsqOt2.js.gz +0 -0
  324. package/build/client/_app/immutable/chunks/DwBIslDg.js +1 -0
  325. package/build/client/_app/immutable/chunks/DwBIslDg.js.br +0 -0
  326. package/build/client/_app/immutable/chunks/DwBIslDg.js.gz +0 -0
  327. package/build/client/_app/immutable/chunks/DyQuOJWp.js +2 -0
  328. package/build/client/_app/immutable/chunks/DyQuOJWp.js.br +0 -0
  329. package/build/client/_app/immutable/chunks/DyQuOJWp.js.gz +0 -0
  330. package/build/client/_app/immutable/chunks/GozcEFao.js +2 -0
  331. package/build/client/_app/immutable/chunks/GozcEFao.js.br +0 -0
  332. package/build/client/_app/immutable/chunks/GozcEFao.js.gz +0 -0
  333. package/build/client/_app/immutable/chunks/KythIMN8.js +1 -0
  334. package/build/client/_app/immutable/chunks/KythIMN8.js.br +0 -0
  335. package/build/client/_app/immutable/chunks/KythIMN8.js.gz +0 -0
  336. package/build/client/_app/immutable/chunks/LZcM6IZR.js +127 -0
  337. package/build/client/_app/immutable/chunks/LZcM6IZR.js.br +0 -0
  338. package/build/client/_app/immutable/chunks/LZcM6IZR.js.gz +0 -0
  339. package/build/client/_app/immutable/chunks/N3JnnB0k.js +1 -0
  340. package/build/client/_app/immutable/chunks/N3JnnB0k.js.br +0 -0
  341. package/build/client/_app/immutable/chunks/N3JnnB0k.js.gz +0 -0
  342. package/build/client/_app/immutable/chunks/N4f8L7cR2.js +1 -0
  343. package/build/client/_app/immutable/chunks/N4f8L7cR2.js.br +0 -0
  344. package/build/client/_app/immutable/chunks/N4f8L7cR2.js.gz +0 -0
  345. package/build/client/_app/immutable/chunks/SxsLGZon.js +78 -0
  346. package/build/client/_app/immutable/chunks/SxsLGZon.js.br +0 -0
  347. package/build/client/_app/immutable/chunks/SxsLGZon.js.gz +0 -0
  348. package/build/client/_app/immutable/chunks/VMh3BEza.js +1 -0
  349. package/build/client/_app/immutable/chunks/VMh3BEza.js.br +0 -0
  350. package/build/client/_app/immutable/chunks/VMh3BEza.js.gz +0 -0
  351. package/build/client/_app/immutable/chunks/VcOjGHJJ.js +88 -0
  352. package/build/client/_app/immutable/chunks/VcOjGHJJ.js.br +0 -0
  353. package/build/client/_app/immutable/chunks/VcOjGHJJ.js.gz +0 -0
  354. package/build/client/_app/immutable/chunks/VesUvqet.js +1 -0
  355. package/build/client/_app/immutable/chunks/VesUvqet.js.br +0 -0
  356. package/build/client/_app/immutable/chunks/VesUvqet.js.gz +0 -0
  357. package/build/client/_app/immutable/chunks/Vhh-h91d.js +257 -0
  358. package/build/client/_app/immutable/chunks/Vhh-h91d.js.br +0 -0
  359. package/build/client/_app/immutable/chunks/Vhh-h91d.js.gz +0 -0
  360. package/build/client/_app/immutable/chunks/W3EvcI_R2.js +62 -0
  361. package/build/client/_app/immutable/chunks/W3EvcI_R2.js.br +0 -0
  362. package/build/client/_app/immutable/chunks/W3EvcI_R2.js.gz +0 -0
  363. package/build/client/_app/immutable/chunks/ZUdhP7i92.js +2 -0
  364. package/build/client/_app/immutable/chunks/ZUdhP7i92.js.br +0 -0
  365. package/build/client/_app/immutable/chunks/ZUdhP7i92.js.gz +0 -0
  366. package/build/client/_app/immutable/chunks/aLf9ves12.js +1 -0
  367. package/build/client/_app/immutable/chunks/aLf9ves12.js.br +0 -0
  368. package/build/client/_app/immutable/chunks/aLf9ves12.js.gz +0 -0
  369. package/build/client/_app/immutable/chunks/f-j1ldZh.js +1 -0
  370. package/build/client/_app/immutable/chunks/f-j1ldZh.js.br +0 -0
  371. package/build/client/_app/immutable/chunks/f-j1ldZh.js.gz +0 -0
  372. package/build/client/_app/immutable/chunks/gEtmlKTD2.js +2 -0
  373. package/build/client/_app/immutable/chunks/gEtmlKTD2.js.br +0 -0
  374. package/build/client/_app/immutable/chunks/gEtmlKTD2.js.gz +0 -0
  375. package/build/client/_app/immutable/chunks/glszpPm_.js +70 -0
  376. package/build/client/_app/immutable/chunks/glszpPm_.js.br +0 -0
  377. package/build/client/_app/immutable/chunks/glszpPm_.js.gz +0 -0
  378. package/build/client/_app/immutable/chunks/h6BdjjI9.js +321 -0
  379. package/build/client/_app/immutable/chunks/h6BdjjI9.js.br +0 -0
  380. package/build/client/_app/immutable/chunks/h6BdjjI9.js.gz +0 -0
  381. package/build/client/_app/immutable/chunks/hPrUzghv.js +1 -0
  382. package/build/client/_app/immutable/chunks/hPrUzghv.js.br +0 -0
  383. package/build/client/_app/immutable/chunks/hPrUzghv.js.gz +0 -0
  384. package/build/client/_app/immutable/chunks/hoxxCinl.js +1 -0
  385. package/build/client/_app/immutable/chunks/hoxxCinl.js.br +0 -0
  386. package/build/client/_app/immutable/chunks/hoxxCinl.js.gz +0 -0
  387. package/build/client/_app/immutable/chunks/i-CYVfXN.js +1 -0
  388. package/build/client/_app/immutable/chunks/i-CYVfXN.js.br +0 -0
  389. package/build/client/_app/immutable/chunks/i-CYVfXN.js.gz +0 -0
  390. package/build/client/_app/immutable/chunks/kNaey6uv.js.gz +0 -0
  391. package/build/client/_app/immutable/chunks/neNX6gRo.js +1 -0
  392. package/build/client/_app/immutable/chunks/neNX6gRo.js.br +0 -0
  393. package/build/client/_app/immutable/chunks/neNX6gRo.js.gz +0 -0
  394. package/build/client/_app/immutable/chunks/pHXL_F_g2.js +1 -0
  395. package/build/client/_app/immutable/chunks/pHXL_F_g2.js.br +0 -0
  396. package/build/client/_app/immutable/chunks/pHXL_F_g2.js.gz +0 -0
  397. package/build/client/_app/immutable/chunks/pW93EPUQ.js +7 -0
  398. package/build/client/_app/immutable/chunks/pW93EPUQ.js.br +0 -0
  399. package/build/client/_app/immutable/chunks/pW93EPUQ.js.gz +0 -0
  400. package/build/client/_app/immutable/chunks/qP818rgB2.js +1 -0
  401. package/build/client/_app/immutable/chunks/qP818rgB2.js.br +0 -0
  402. package/build/client/_app/immutable/chunks/qP818rgB2.js.gz +0 -0
  403. package/build/client/_app/immutable/chunks/sotTapaw.js +1 -0
  404. package/build/client/_app/immutable/chunks/sotTapaw.js.br +0 -0
  405. package/build/client/_app/immutable/chunks/sotTapaw.js.gz +0 -0
  406. package/build/client/_app/immutable/chunks/wKcgcnDr2.js +1 -0
  407. package/build/client/_app/immutable/chunks/wKcgcnDr2.js.br +0 -0
  408. package/build/client/_app/immutable/chunks/wKcgcnDr2.js.gz +0 -0
  409. package/build/client/_app/immutable/chunks/xihTtKlq.js.gz +0 -0
  410. package/build/client/_app/immutable/chunks/xj8Qu0id.js +39 -0
  411. package/build/client/_app/immutable/chunks/xj8Qu0id.js.br +0 -0
  412. package/build/client/_app/immutable/chunks/xj8Qu0id.js.gz +0 -0
  413. package/build/client/_app/immutable/chunks/y_FyOMsm.js +3 -0
  414. package/build/client/_app/immutable/chunks/y_FyOMsm.js.br +0 -0
  415. package/build/client/_app/immutable/chunks/y_FyOMsm.js.gz +0 -0
  416. package/build/client/_app/immutable/entry/app.BER7E6R_.js +2 -0
  417. package/build/client/_app/immutable/entry/app.BER7E6R_.js.br +0 -0
  418. package/build/client/_app/immutable/entry/app.BER7E6R_.js.gz +0 -0
  419. package/build/client/_app/immutable/entry/start.C8tjv31Y.js +1 -0
  420. package/build/client/_app/immutable/entry/start.C8tjv31Y.js.br +1 -0
  421. package/build/client/_app/immutable/entry/start.C8tjv31Y.js.gz +0 -0
  422. package/build/client/_app/immutable/nodes/0.CAeMhoMc.js +7 -0
  423. package/build/client/_app/immutable/nodes/0.CAeMhoMc.js.br +0 -0
  424. package/build/client/_app/immutable/nodes/0.CAeMhoMc.js.gz +0 -0
  425. package/build/client/_app/immutable/nodes/1.4LtDz-oA.js +1 -0
  426. package/build/client/_app/immutable/nodes/1.4LtDz-oA.js.br +0 -0
  427. package/build/client/_app/immutable/nodes/1.4LtDz-oA.js.gz +0 -0
  428. package/build/client/_app/immutable/nodes/10.CFgia70s.js +1 -0
  429. package/build/client/_app/immutable/nodes/10.CFgia70s.js.br +2 -0
  430. package/build/client/_app/immutable/nodes/10.CFgia70s.js.gz +0 -0
  431. package/build/client/_app/immutable/nodes/11.Ch-vozvS.js +1 -0
  432. package/build/client/_app/immutable/nodes/11.Ch-vozvS.js.br +0 -0
  433. package/build/client/_app/immutable/nodes/11.Ch-vozvS.js.gz +0 -0
  434. package/build/client/_app/immutable/nodes/12.B5VT8cKW.js +2 -0
  435. package/build/client/_app/immutable/nodes/12.B5VT8cKW.js.br +0 -0
  436. package/build/client/_app/immutable/nodes/12.B5VT8cKW.js.gz +0 -0
  437. package/build/client/_app/immutable/nodes/13.CuIA9vng.js +402 -0
  438. package/build/client/_app/immutable/nodes/13.CuIA9vng.js.br +0 -0
  439. package/build/client/_app/immutable/nodes/13.CuIA9vng.js.gz +0 -0
  440. package/build/client/_app/immutable/nodes/2.xI5MnJsL.js +1 -0
  441. package/build/client/_app/immutable/nodes/2.xI5MnJsL.js.br +0 -0
  442. package/build/client/_app/immutable/nodes/2.xI5MnJsL.js.gz +0 -0
  443. package/build/client/_app/immutable/nodes/3.CQ4bIhQ6.js +1 -0
  444. package/build/client/_app/immutable/nodes/3.CQ4bIhQ6.js.br +0 -0
  445. package/build/client/_app/immutable/nodes/3.CQ4bIhQ6.js.gz +0 -0
  446. package/build/client/_app/immutable/nodes/4.N8cjhzIv.js +3 -0
  447. package/build/client/_app/immutable/nodes/4.N8cjhzIv.js.br +0 -0
  448. package/build/client/_app/immutable/nodes/4.N8cjhzIv.js.gz +0 -0
  449. package/build/client/_app/immutable/nodes/5.DfR2h3P4.js +48 -0
  450. package/build/client/_app/immutable/nodes/5.DfR2h3P4.js.br +0 -0
  451. package/build/client/_app/immutable/nodes/5.DfR2h3P4.js.gz +0 -0
  452. package/build/client/_app/immutable/nodes/6.v43avk-a.js +1 -0
  453. package/build/client/_app/immutable/nodes/6.v43avk-a.js.br +0 -0
  454. package/build/client/_app/immutable/nodes/6.v43avk-a.js.gz +0 -0
  455. package/build/client/_app/immutable/nodes/7.DJGq7-fq.js +5 -0
  456. package/build/client/_app/immutable/nodes/7.DJGq7-fq.js.br +0 -0
  457. package/build/client/_app/immutable/nodes/7.DJGq7-fq.js.gz +0 -0
  458. package/build/client/_app/immutable/nodes/8.BYeGayrU.js +3 -0
  459. package/build/client/_app/immutable/nodes/8.BYeGayrU.js.br +0 -0
  460. package/build/client/_app/immutable/nodes/8.BYeGayrU.js.gz +0 -0
  461. package/build/client/_app/immutable/nodes/9.d7hEqsWN.js +5 -0
  462. package/build/client/_app/immutable/nodes/9.d7hEqsWN.js.br +0 -0
  463. package/build/client/_app/immutable/nodes/9.d7hEqsWN.js.gz +0 -0
  464. package/build/client/_app/version.json +1 -1
  465. package/build/client/_app/version.json.br +0 -0
  466. package/build/client/_app/version.json.gz +0 -0
  467. package/build/client/lyriks_logo.svg.gz +0 -0
  468. package/build/client/unspaghettit-demo.gif +0 -0
  469. package/build/server/chunks/0-B9lmqNZh.js +15 -0
  470. package/build/server/chunks/0-B9lmqNZh.js.map +1 -0
  471. package/build/server/chunks/1-BVxoYoy0.js +9 -0
  472. package/build/server/chunks/1-BVxoYoy0.js.map +1 -0
  473. package/build/server/chunks/10-DCxp8jT8.js +9 -0
  474. package/build/server/chunks/10-DCxp8jT8.js.map +1 -0
  475. package/build/server/chunks/11-BmTBBPbT.js +9 -0
  476. package/build/server/chunks/11-BmTBBPbT.js.map +1 -0
  477. package/build/server/chunks/12-CsbhRlL1.js +9 -0
  478. package/build/server/chunks/12-CsbhRlL1.js.map +1 -0
  479. package/build/server/chunks/13-0DWHZ1hi.js +9 -0
  480. package/build/server/chunks/13-0DWHZ1hi.js.map +1 -0
  481. package/build/server/chunks/2-e5usQqOM.js +9 -0
  482. package/build/server/chunks/2-e5usQqOM.js.map +1 -0
  483. package/build/server/chunks/3-DNXwTyoL.js +16 -0
  484. package/build/server/chunks/3-DNXwTyoL.js.map +1 -0
  485. package/build/server/chunks/4-CcbKZlu1.js +16 -0
  486. package/build/server/chunks/4-CcbKZlu1.js.map +1 -0
  487. package/build/server/chunks/5-D2sOEK0c.js +9 -0
  488. package/build/server/chunks/5-D2sOEK0c.js.map +1 -0
  489. package/build/server/chunks/6-BXhVICA0.js +9 -0
  490. package/build/server/chunks/6-BXhVICA0.js.map +1 -0
  491. package/build/server/chunks/7-11gAeU6R.js +9 -0
  492. package/build/server/chunks/7-11gAeU6R.js.map +1 -0
  493. package/build/server/chunks/8-_840pfm4.js +9 -0
  494. package/build/server/chunks/8-_840pfm4.js.map +1 -0
  495. package/build/server/chunks/9-9--rc8Zm.js +9 -0
  496. package/build/server/chunks/9-9--rc8Zm.js.map +1 -0
  497. package/build/server/chunks/Clock-BfMWQpmJ.js +5 -0
  498. package/build/server/chunks/Clock-BfMWQpmJ.js.map +1 -0
  499. package/build/server/chunks/DeleteDomain-BvHEgAyp.js +24 -0
  500. package/build/server/chunks/DeleteDomain-BvHEgAyp.js.map +1 -0
  501. package/build/server/chunks/DeleteFeature-DnK8sBJI.js +611 -0
  502. package/build/server/chunks/DeleteFeature-DnK8sBJI.js.map +1 -0
  503. package/build/server/chunks/DeleteProject-BXZcehHZ.js +41 -0
  504. package/build/server/chunks/DeleteProject-BXZcehHZ.js.map +1 -0
  505. package/build/server/chunks/Effect-BJtLR-6l.js +46 -0
  506. package/build/server/chunks/Effect-BJtLR-6l.js.map +1 -0
  507. package/build/server/chunks/FeatureCard-DMFAdOZD.js +73 -0
  508. package/build/server/chunks/FeatureCard-DMFAdOZD.js.map +1 -0
  509. package/build/server/chunks/FeatureJson-DYvMEAub.js +55 -0
  510. package/build/server/chunks/FeatureJson-DYvMEAub.js.map +1 -0
  511. package/build/server/chunks/FeatureTransforms-B0aI_CJD.js +318 -0
  512. package/build/server/chunks/FeatureTransforms-B0aI_CJD.js.map +1 -0
  513. package/build/server/chunks/ManageTagsDialog-rb6Nv8Rn.js +87 -0
  514. package/build/server/chunks/ManageTagsDialog-rb6Nv8Rn.js.map +1 -0
  515. package/build/server/chunks/ProgressBar-COGq-V1W.js +70 -0
  516. package/build/server/chunks/ProgressBar-COGq-V1W.js.map +1 -0
  517. package/build/server/chunks/ProjectionViewer-5lAckYHW.js +1276 -0
  518. package/build/server/chunks/ProjectionViewer-5lAckYHW.js.map +1 -0
  519. package/build/server/chunks/ProjectsIndex-BUAIKM29.js +307 -0
  520. package/build/server/chunks/ProjectsIndex-BUAIKM29.js.map +1 -0
  521. package/build/server/chunks/RenameTag-DWIIR4Bx.js +55 -0
  522. package/build/server/chunks/RenameTag-DWIIR4Bx.js.map +1 -0
  523. package/build/server/chunks/ScenarioApplier-YPKECfZe.js +55 -0
  524. package/build/server/chunks/ScenarioApplier-YPKECfZe.js.map +1 -0
  525. package/build/server/chunks/SimulatorEngine-DM1F9nCO.js +1391 -0
  526. package/build/server/chunks/SimulatorEngine-DM1F9nCO.js.map +1 -0
  527. package/build/server/chunks/StateValue-BBjWox8f.js +105 -0
  528. package/build/server/chunks/StateValue-BBjWox8f.js.map +1 -0
  529. package/build/server/chunks/TagDotStrip-BeDG7Cqh.js +88 -0
  530. package/build/server/chunks/TagDotStrip-BeDG7Cqh.js.map +1 -0
  531. package/build/server/chunks/TagFilterSelect-CkbZdWK3.js +112 -0
  532. package/build/server/chunks/TagFilterSelect-CkbZdWK3.js.map +1 -0
  533. package/build/server/chunks/TagPalette-CpdTiC_7.js +993 -0
  534. package/build/server/chunks/TagPalette-CpdTiC_7.js.map +1 -0
  535. package/build/server/chunks/TransitionCatalog-CYXUANy6.js +271 -0
  536. package/build/server/chunks/TransitionCatalog-CYXUANy6.js.map +1 -0
  537. package/build/server/chunks/_layout.svelte-CgBWifc7.js +1342 -0
  538. package/build/server/chunks/_layout.svelte-CgBWifc7.js.map +1 -0
  539. package/build/server/chunks/_page.svelte-B-mdxSfs.js +37 -0
  540. package/build/server/chunks/_page.svelte-B-mdxSfs.js.map +1 -0
  541. package/build/server/chunks/_page.svelte-B6cpjvJE.js +37 -0
  542. package/build/server/chunks/_page.svelte-B6cpjvJE.js.map +1 -0
  543. package/build/server/chunks/_page.svelte-BXHSxkOq.js +10707 -0
  544. package/build/server/chunks/_page.svelte-BXHSxkOq.js.map +1 -0
  545. package/build/server/chunks/_page.svelte-CCfXJrLQ.js +454 -0
  546. package/build/server/chunks/_page.svelte-CCfXJrLQ.js.map +1 -0
  547. package/build/server/chunks/_page.svelte-CpNPTC27.js +99 -0
  548. package/build/server/chunks/_page.svelte-CpNPTC27.js.map +1 -0
  549. package/build/server/chunks/_page.svelte-D0MRtAqZ.js +735 -0
  550. package/build/server/chunks/_page.svelte-D0MRtAqZ.js.map +1 -0
  551. package/build/server/chunks/_page.svelte-DE_5ZkTk.js +49 -0
  552. package/build/server/chunks/_page.svelte-DE_5ZkTk.js.map +1 -0
  553. package/build/server/chunks/_page.svelte-cfUGFHhh.js +202 -0
  554. package/build/server/chunks/_page.svelte-cfUGFHhh.js.map +1 -0
  555. package/build/server/chunks/_page.svelte-epVS2H1-.js +368 -0
  556. package/build/server/chunks/_page.svelte-epVS2H1-.js.map +1 -0
  557. package/build/server/chunks/_page.svelte-j7WIQsUE.js +74 -0
  558. package/build/server/chunks/_page.svelte-j7WIQsUE.js.map +1 -0
  559. package/build/server/chunks/_page.svelte-sFsc403N.js +834 -0
  560. package/build/server/chunks/_page.svelte-sFsc403N.js.map +1 -0
  561. package/build/server/chunks/_page.svelte-zBBZNKzG.js +153 -0
  562. package/build/server/chunks/_page.svelte-zBBZNKzG.js.map +1 -0
  563. package/build/server/chunks/_server.ts-1lxF2NFW.js +146 -0
  564. package/build/server/chunks/_server.ts-1lxF2NFW.js.map +1 -0
  565. package/build/server/chunks/_server.ts-BP4OBqaD.js +21 -0
  566. package/build/server/chunks/_server.ts-BP4OBqaD.js.map +1 -0
  567. package/build/server/chunks/_server.ts-BVX4A2PU.js +69 -0
  568. package/build/server/chunks/_server.ts-BVX4A2PU.js.map +1 -0
  569. package/build/server/chunks/_server.ts-BaJa3Xt1.js +56 -0
  570. package/build/server/chunks/_server.ts-BaJa3Xt1.js.map +1 -0
  571. package/build/server/chunks/_server.ts-C5tp9sxp.js +23 -0
  572. package/build/server/chunks/_server.ts-C5tp9sxp.js.map +1 -0
  573. package/build/server/chunks/_server.ts-CeTvD5Mp.js +23 -0
  574. package/build/server/chunks/_server.ts-CeTvD5Mp.js.map +1 -0
  575. package/build/server/chunks/_server.ts-Cvu3XFUs.js +23 -0
  576. package/build/server/chunks/_server.ts-Cvu3XFUs.js.map +1 -0
  577. package/build/server/chunks/_server.ts-DFKEDp9D.js +46 -0
  578. package/build/server/chunks/_server.ts-DFKEDp9D.js.map +1 -0
  579. package/build/server/chunks/_server.ts-DG8DdQoB.js +961 -0
  580. package/build/server/chunks/_server.ts-DG8DdQoB.js.map +1 -0
  581. package/build/server/chunks/_server.ts-DN-6Y5lG.js +61 -0
  582. package/build/server/chunks/_server.ts-DN-6Y5lG.js.map +1 -0
  583. package/build/server/chunks/_server.ts-DSiY2IgM.js +106 -0
  584. package/build/server/chunks/_server.ts-DSiY2IgM.js.map +1 -0
  585. package/build/server/chunks/_server.ts-DapkfYPR.js +77 -0
  586. package/build/server/chunks/_server.ts-DapkfYPR.js.map +1 -0
  587. package/build/server/chunks/_server.ts-GHO81alX.js +50 -0
  588. package/build/server/chunks/_server.ts-GHO81alX.js.map +1 -0
  589. package/build/server/chunks/_server.ts-KPwcTd2q.js +56 -0
  590. package/build/server/chunks/_server.ts-KPwcTd2q.js.map +1 -0
  591. package/build/server/chunks/_server.ts-nBHIdesV.js +50 -0
  592. package/build/server/chunks/_server.ts-nBHIdesV.js.map +1 -0
  593. package/build/server/chunks/_server.ts-tonCHVx_.js +21 -0
  594. package/build/server/chunks/_server.ts-tonCHVx_.js.map +1 -0
  595. package/build/server/chunks/browserContainer-CnyD6-Fb.js +1577 -0
  596. package/build/server/chunks/browserContainer-CnyD6-Fb.js.map +1 -0
  597. package/build/server/chunks/buildSearchDocs-Cyfrnw9G.js +337 -0
  598. package/build/server/chunks/buildSearchDocs-Cyfrnw9G.js.map +1 -0
  599. package/build/server/chunks/builderModeStore.svelte-5gHGj8fb.js +893 -0
  600. package/build/server/chunks/builderModeStore.svelte-5gHGj8fb.js.map +1 -0
  601. package/build/server/chunks/client-BMtVEMju.js +51 -0
  602. package/build/server/chunks/client-BMtVEMju.js.map +1 -0
  603. package/build/server/chunks/error.svelte-x31ayNE1.js +15 -0
  604. package/build/server/chunks/error.svelte-x31ayNE1.js.map +1 -0
  605. package/build/server/chunks/featureQueueContext-BbgVWKQG.js +32 -0
  606. package/build/server/chunks/featureQueueContext-BbgVWKQG.js.map +1 -0
  607. package/build/server/chunks/featureStore.svelte-CNLEsBJy.js +162 -0
  608. package/build/server/chunks/featureStore.svelte-CNLEsBJy.js.map +1 -0
  609. package/build/server/chunks/featuresStore.svelte-CIFEpGD9.js +212 -0
  610. package/build/server/chunks/featuresStore.svelte-CIFEpGD9.js.map +1 -0
  611. package/build/server/chunks/humanize-CkCPfeWi.js +53 -0
  612. package/build/server/chunks/humanize-CkCPfeWi.js.map +1 -0
  613. package/build/server/chunks/index-server-Bzpc8zwf.js +4815 -0
  614. package/build/server/chunks/index-server-Bzpc8zwf.js.map +1 -0
  615. package/build/server/chunks/internal-CPpC8eDZ.js +1820 -0
  616. package/build/server/chunks/internal-CPpC8eDZ.js.map +1 -0
  617. package/build/server/chunks/projectBundleClient-BTd9AFu6.js +168 -0
  618. package/build/server/chunks/projectBundleClient-BTd9AFu6.js.map +1 -0
  619. package/build/server/chunks/projectContextStore.svelte-CFTa-2W7.js +141 -0
  620. package/build/server/chunks/projectContextStore.svelte-CFTa-2W7.js.map +1 -0
  621. package/build/server/chunks/projectFeaturesStore.svelte-BmMgsX-B.js +87 -0
  622. package/build/server/chunks/projectFeaturesStore.svelte-BmMgsX-B.js.map +1 -0
  623. package/build/server/chunks/projectStore.svelte-D47f2Ze4.js +230 -0
  624. package/build/server/chunks/projectStore.svelte-D47f2Ze4.js.map +1 -0
  625. package/build/server/chunks/reconcile-DWYiyWQW.js +393 -0
  626. package/build/server/chunks/reconcile-DWYiyWQW.js.map +1 -0
  627. package/build/server/chunks/snapshotRepository-DatB6XLT.js +1173 -0
  628. package/build/server/chunks/snapshotRepository-DatB6XLT.js.map +1 -0
  629. package/build/server/chunks/state-C8lQ-4Ip.js +61 -0
  630. package/build/server/chunks/state-C8lQ-4Ip.js.map +1 -0
  631. package/build/server/chunks/stores-C4apQGTo.js +35 -0
  632. package/build/server/chunks/stores-C4apQGTo.js.map +1 -0
  633. package/build/server/chunks/sync-Dorsvxhj.js +955 -0
  634. package/build/server/chunks/sync-Dorsvxhj.js.map +1 -0
  635. package/build/server/chunks/syncAwareRepositories-OJq78sW0.js +57 -0
  636. package/build/server/chunks/syncAwareRepositories-OJq78sW0.js.map +1 -0
  637. package/build/server/chunks/tagPaletteStore.svelte-CsI7lh_H.js +181 -0
  638. package/build/server/chunks/tagPaletteStore.svelte-CsI7lh_H.js.map +1 -0
  639. package/build/server/index.js +2 -2
  640. package/build/server/index.js.map +1 -1
  641. package/build/server/manifest.js +76 -32
  642. package/build/server/manifest.js.map +1 -1
  643. package/cli/README.md +70 -2
  644. package/cli/commands/check.ts +190 -0
  645. package/cli/commands/ci.ts +71 -0
  646. package/cli/commands/coverage-ingest.ts +112 -0
  647. package/cli/commands/scenarios-adapter.ts +96 -0
  648. package/cli/scenarios/adapter-scaffold.ts +99 -0
  649. package/cli/scenarios/codegen.ts +7 -1
  650. package/cli/scenarios/results.ts +85 -0
  651. package/cli/skills/unspa-audit/SKILL.md +19 -0
  652. package/cli/skills/unspa-edit/SKILL.md +20 -3
  653. package/cli/skills/unspa-implement/SKILL.md +28 -0
  654. package/cli/unspa.ts +98 -0
  655. package/cli/util/context-files.ts +13 -2
  656. package/mcp-server/bin.ts +109 -104
  657. package/mcp-server/migrate-defaults.ts +164 -164
  658. package/mcp-server/repo-link.ts +142 -134
  659. package/mcp-server/resources/guide.ts +24 -4
  660. package/mcp-server/resources/operations.ts +3 -0
  661. package/mcp-server/seed-snapshots.ts +22 -22
  662. package/mcp-server/server.ts +15 -4
  663. package/mcp-server/sync-aware-repos.ts +79 -79
  664. package/mcp-server/sync-notifier.ts +180 -180
  665. package/mcp-server/tools/_codegen.ts +115 -115
  666. package/mcp-server/tools/_entity_builders.ts +30 -0
  667. package/mcp-server/tools/_shared.ts +212 -210
  668. package/mcp-server/tools/action.ts +210 -210
  669. package/mcp-server/tools/batch.ts +29 -5
  670. package/mcp-server/tools/effect.ts +139 -135
  671. package/mcp-server/tools/entity.ts +132 -132
  672. package/mcp-server/tools/entityField.ts +132 -132
  673. package/mcp-server/tools/event.ts +116 -116
  674. package/mcp-server/tools/feature.ts +264 -264
  675. package/mcp-server/tools/invariant.ts +275 -275
  676. package/mcp-server/tools/persona.ts +141 -141
  677. package/mcp-server/tools/project.ts +500 -391
  678. package/mcp-server/tools/provenance.ts +217 -0
  679. package/mcp-server/tools/reachabilityGoal.ts +97 -0
  680. package/mcp-server/tools/read.ts +526 -483
  681. package/mcp-server/tools/reorder.ts +114 -114
  682. package/mcp-server/tools/resource.ts +194 -194
  683. package/mcp-server/tools/rule.ts +302 -302
  684. package/mcp-server/tools/scenario.ts +4 -1
  685. package/mcp-server/tools/specGaps.ts +221 -221
  686. package/mcp-server/tools/state.ts +10 -2
  687. package/mcp-server/tools/surface.ts +102 -102
  688. package/mcp-server/tools/transition.ts +96 -96
  689. package/mcp-server/tools/verification.ts +131 -0
  690. package/package.json +18 -5
  691. package/src/app.css +26 -14
  692. package/src/features/behavior-model/application/ports/FeatureRepository.ts +16 -16
  693. package/src/features/behavior-model/application/use-cases/CreateFeature.ts +24 -24
  694. package/src/features/behavior-model/application/use-cases/DeleteFeature.ts +8 -8
  695. package/src/features/behavior-model/application/use-cases/GetFeature.ts +9 -9
  696. package/src/features/behavior-model/application/use-cases/ListFeatures.ts +10 -10
  697. package/src/features/behavior-model/application/use-cases/MutateFeature.ts +90 -90
  698. package/src/features/behavior-model/application/use-cases/SaveFeature.ts +31 -31
  699. package/src/features/behavior-model/domain/entities/Entity.ts +45 -45
  700. package/src/features/behavior-model/domain/entities/EventDefinition.ts +35 -35
  701. package/src/features/behavior-model/domain/entities/Feature.ts +10 -0
  702. package/src/features/behavior-model/domain/entities/Persona.ts +33 -33
  703. package/src/features/behavior-model/domain/entities/ReachabilityGoal.ts +39 -0
  704. package/src/features/behavior-model/domain/entities/Resource.ts +54 -54
  705. package/src/features/behavior-model/domain/entities/Scenario.ts +15 -0
  706. package/src/features/behavior-model/domain/entities/StateDefinition.ts +13 -0
  707. package/src/features/behavior-model/domain/entities/Surface.ts +75 -75
  708. package/src/features/behavior-model/domain/entities/index.ts +9 -9
  709. package/src/features/behavior-model/domain/services/BehaviorGraphModel.ts +25 -0
  710. package/src/features/behavior-model/domain/services/DerivedState.ts +67 -0
  711. package/src/features/behavior-model/domain/services/EffectApplier.ts +112 -3
  712. package/src/features/behavior-model/domain/services/EffectiveEntities.ts +166 -166
  713. package/src/features/behavior-model/domain/services/EntityDeducer.ts +83 -83
  714. package/src/features/behavior-model/domain/services/EventCatalog.ts +141 -141
  715. package/src/features/behavior-model/domain/services/FeatureExpressionNormalizer.ts +43 -5
  716. package/src/features/behavior-model/domain/services/FeatureSharedStateNormalizer.ts +24 -3
  717. package/src/features/behavior-model/domain/services/FeatureTransforms.ts +33 -0
  718. package/src/features/behavior-model/domain/services/FeatureValidator.ts +124 -16
  719. package/src/features/behavior-model/domain/services/PersonaApplier.ts +39 -39
  720. package/src/features/behavior-model/domain/services/ResourceDeducer.ts +64 -64
  721. package/src/features/behavior-model/domain/services/ResourceUsage.ts +79 -79
  722. package/src/features/behavior-model/domain/services/ScenarioApplier.ts +40 -40
  723. package/src/features/behavior-model/domain/services/SharedStateDefinitions.ts +32 -32
  724. package/src/features/behavior-model/domain/services/StatePathReferences.ts +249 -217
  725. package/src/features/behavior-model/domain/services/TransitionCatalog.ts +173 -173
  726. package/src/features/behavior-model/domain/value-objects/Effect.ts +100 -3
  727. package/src/features/behavior-model/domain/value-objects/EntityFieldType.ts +57 -57
  728. package/src/features/behavior-model/domain/value-objects/Expression.ts +22 -2
  729. package/src/features/behavior-model/domain/value-objects/ParameterType.ts +57 -57
  730. package/src/features/behavior-model/domain/value-objects/Resource.ts +210 -210
  731. package/src/features/behavior-model/domain/value-objects/RuleCategory.ts +57 -57
  732. package/src/features/behavior-model/domain/value-objects/RuleCondition.ts +52 -1
  733. package/src/features/behavior-model/domain/value-objects/SimulationClock.ts +35 -0
  734. package/src/features/behavior-model/domain/value-objects/ids.ts +2 -0
  735. package/src/features/behavior-model/infrastructure/io/FeatureJson.ts +89 -89
  736. package/src/features/behavior-model/infrastructure/persistence/HttpFeatureRepository.ts +43 -43
  737. package/src/features/behavior-model/infrastructure/persistence/JsonFolderFeatureRepository.ts +10 -0
  738. package/src/features/behavior-model/infrastructure/persistence/snapshot-discovery.ts +76 -76
  739. package/src/features/behavior-model/infrastructure/seed/seedStorefront.ts +967 -967
  740. package/src/features/behavior-model/presentation/adapters/VisBehaviorGraphRenderer.ts +10 -1
  741. package/src/features/behavior-model/presentation/components/ActionEditor.svelte +683 -682
  742. package/src/features/behavior-model/presentation/components/ActionsEditor.svelte +232 -232
  743. package/src/features/behavior-model/presentation/components/BehaviorGraph.svelte +279 -82
  744. package/src/features/behavior-model/presentation/components/EffectEditor.svelte +168 -168
  745. package/src/features/behavior-model/presentation/components/EntityEditor.svelte +241 -248
  746. package/src/features/behavior-model/presentation/components/EntityFieldRow.svelte +180 -181
  747. package/src/features/behavior-model/presentation/components/EntityManager.svelte +252 -251
  748. package/src/features/behavior-model/presentation/components/EventsManager.svelte +373 -372
  749. package/src/features/behavior-model/presentation/components/FeatureEditor.svelte +396 -348
  750. package/src/features/behavior-model/presentation/components/FeatureHeader.svelte +160 -143
  751. package/src/features/behavior-model/presentation/components/FeatureHealthStrip.svelte +110 -110
  752. package/src/features/behavior-model/presentation/components/HistoryPanel.svelte +154 -154
  753. package/src/features/behavior-model/presentation/components/NewFeatureForm.svelte +66 -66
  754. package/src/features/behavior-model/presentation/components/ParameterNameSelect.svelte +84 -84
  755. package/src/features/behavior-model/presentation/components/ParametersEditor.svelte +411 -411
  756. package/src/features/behavior-model/presentation/components/PersonaEditor.svelte +244 -244
  757. package/src/features/behavior-model/presentation/components/PersonasManager.svelte +130 -130
  758. package/src/features/behavior-model/presentation/components/ReachabilityGoalEditor.svelte +230 -0
  759. package/src/features/behavior-model/presentation/components/ReachabilityGoalsEditor.svelte +86 -0
  760. package/src/features/behavior-model/presentation/components/ResourcesManager.svelte +291 -290
  761. package/src/features/behavior-model/presentation/components/ScenariosEditor.svelte +496 -496
  762. package/src/features/behavior-model/presentation/components/StateDefinitionsEditor.svelte +356 -356
  763. package/src/features/behavior-model/presentation/components/SurfaceEntitiesView.svelte +88 -88
  764. package/src/features/behavior-model/presentation/components/SurfaceInvariantsEditor.svelte +76 -76
  765. package/src/features/behavior-model/presentation/components/SurfaceList.svelte +300 -300
  766. package/src/features/behavior-model/presentation/components/SurfaceMetaEditor.svelte +158 -156
  767. package/src/features/behavior-model/presentation/components/SurfacePanel.svelte +198 -198
  768. package/src/features/behavior-model/presentation/components/SurfacePersonasView.svelte +122 -122
  769. package/src/features/behavior-model/presentation/components/SurfaceResourcesView.svelte +113 -113
  770. package/src/features/behavior-model/presentation/components/SurfaceRulesEditor.svelte +69 -69
  771. package/src/features/behavior-model/presentation/components/TransitionsManager.svelte +322 -321
  772. package/src/features/behavior-model/presentation/context/featureQueueContext.ts +78 -0
  773. package/src/features/behavior-model/presentation/stores/editorStore.svelte.ts +132 -131
  774. package/src/features/behavior-model/presentation/stores/featureStore.svelte.ts +177 -177
  775. package/src/features/behavior-model/presentation/stores/featuresStore.svelte.ts +98 -98
  776. package/src/features/behavior-model/presentation/view-models/BehaviorGraphTheme.ts +1 -0
  777. package/src/features/behavior-model/presentation/view-models/factories.ts +181 -132
  778. package/src/features/diagram-projection/application/projectionComposition.ts +32 -0
  779. package/src/features/diagram-projection/application/projectionEvents.ts +26 -0
  780. package/src/features/diagram-projection/domain/DiagramSpec.ts +39 -0
  781. package/src/features/diagram-projection/domain/ports/DiagramExporter.ts +13 -0
  782. package/src/features/diagram-projection/domain/ports/ProjectionEvents.ts +21 -0
  783. package/src/features/diagram-projection/domain/ports/Projector.ts +26 -0
  784. package/src/features/diagram-projection/domain/services/ProjectorRegistry.ts +32 -0
  785. package/src/features/diagram-projection/domain/services/projections/erProjector.ts +37 -0
  786. package/src/features/diagram-projection/domain/services/projections/flowchartProjector.ts +57 -0
  787. package/src/features/diagram-projection/domain/services/projections/graphToDiagramSpec.ts +18 -0
  788. package/src/features/diagram-projection/domain/services/projections/mindmapProjector.ts +57 -0
  789. package/src/features/diagram-projection/domain/services/projections/sequenceProjector.ts +61 -0
  790. package/src/features/diagram-projection/domain/services/projections/statechartProjector.ts +70 -0
  791. package/src/features/diagram-projection/domain/services/sourceFacts.ts +32 -0
  792. package/src/features/diagram-projection/infrastructure/exporters/DotExporter.ts +33 -0
  793. package/src/features/diagram-projection/infrastructure/exporters/MermaidExporter.ts +117 -0
  794. package/src/features/diagram-projection/infrastructure/exporters/SvgExporter.ts +73 -0
  795. package/src/features/diagram-projection/infrastructure/render/mermaidLoader.ts +25 -0
  796. package/src/features/diagram-projection/presentation/components/ExportPanel.svelte +162 -0
  797. package/src/features/diagram-projection/presentation/components/MermaidDiagram.svelte +232 -0
  798. package/src/features/diagram-projection/presentation/components/ProjectionViewer.svelte +325 -0
  799. package/src/features/domains/infrastructure/persistence/JsonFolderDomainRepository.ts +9 -0
  800. package/src/features/global-search/application/use-cases/LoadSearchIndex.ts +70 -0
  801. package/src/features/global-search/domain/SearchDoc.ts +111 -0
  802. package/src/features/global-search/domain/buildSearchDocs.ts +483 -0
  803. package/src/features/global-search/domain/searchNav.ts +58 -0
  804. package/src/features/global-search/domain/searchScoring.ts +81 -0
  805. package/src/features/global-search/infrastructure/adapters/defaultSearchHost.ts +28 -0
  806. package/src/features/global-search/presentation/components/GlobalSearch.svelte +262 -0
  807. package/src/features/global-search/presentation/ports/SearchHostPorts.ts +41 -0
  808. package/src/features/global-search/presentation/searchKindMeta.ts +108 -0
  809. package/src/features/global-search/presentation/stores/globalSearchStore.svelte.ts +171 -0
  810. package/src/features/implementation-queue/presentation/components/FloatingQueueWidget.svelte +264 -0
  811. package/src/features/implementation-queue/presentation/stores/globalQueueStore.svelte.ts +172 -0
  812. package/src/features/implementation-status/application/ports/ImplementationStatusRepository.ts +8 -8
  813. package/src/features/implementation-status/application/use-cases/GetImplementationStatus.ts +8 -8
  814. package/src/features/implementation-status/domain/ApplyCapturedToSpec.ts +323 -322
  815. package/src/features/implementation-status/domain/FieldDiff.ts +238 -236
  816. package/src/features/implementation-status/infrastructure/persistence/InMemoryImplementationStatusRepository.ts +21 -21
  817. package/src/features/implementation-status/presentation/components/ImplementationStatusPanel.svelte +831 -831
  818. package/src/features/implementation-status/presentation/stores/implementationStatusStore.svelte.ts +97 -97
  819. package/src/features/library/application/use-cases/ApplyBlueprintsToFeature.ts +33 -33
  820. package/src/features/library/domain/services/BlueprintApplier.ts +94 -94
  821. package/src/features/library/infrastructure/blueprints/auth/ResetPasswordBlueprint.ts +332 -332
  822. package/src/features/library/infrastructure/blueprints/auth/SignInBlueprint.ts +281 -281
  823. package/src/features/library/infrastructure/blueprints/auth/SignUpBlueprint.ts +299 -299
  824. package/src/features/library/infrastructure/blueprints/auth/VerifyEmailBlueprint.ts +288 -288
  825. package/src/features/library/infrastructure/blueprints/auth/shared.ts +146 -146
  826. package/src/features/library/infrastructure/blueprints/commerce/CartBlueprint.ts +222 -222
  827. package/src/features/library/infrastructure/blueprints/commerce/CatalogBlueprint.ts +190 -190
  828. package/src/features/library/infrastructure/blueprints/commerce/CheckoutBlueprint.ts +322 -322
  829. package/src/features/library/infrastructure/blueprints/commerce/OrderConfirmationBlueprint.ts +172 -172
  830. package/src/features/library/infrastructure/blueprints/commerce/ProductDetailsBlueprint.ts +290 -290
  831. package/src/features/library/infrastructure/blueprints/content/ReviewsBlueprint.ts +392 -392
  832. package/src/features/library/infrastructure/blueprints/onboarding/OnboardingWizardBlueprint.ts +344 -344
  833. package/src/features/library/infrastructure/blueprints/utility/CanvasBlueprint.ts +419 -419
  834. package/src/features/library/infrastructure/blueprints/utility/CookieConsentBlueprint.ts +195 -195
  835. package/src/features/library/infrastructure/blueprints/utility/NotFoundBlueprint.ts +86 -86
  836. package/src/features/library/infrastructure/blueprints/utility/SearchPaletteBlueprint.ts +192 -192
  837. package/src/features/library/infrastructure/blueprints/utility/StoreLocatorBlueprint.ts +221 -221
  838. package/src/features/library/infrastructure/blueprints/utility/TaskBoardBlueprint.ts +196 -196
  839. package/src/features/maturity/application/use-cases/ScoreFeature.ts +7 -7
  840. package/src/features/maturity/domain/MaturityReport.ts +70 -70
  841. package/src/features/maturity/domain/MaturityScorer.ts +1001 -985
  842. package/src/features/maturity/presentation/components/MaturityPanel.svelte +376 -372
  843. package/src/features/mcp-tools/application/tools/dryRunSimulate.ts +24 -24
  844. package/src/features/mcp-tools/application/tools/findStateReferences.ts +19 -19
  845. package/src/features/mcp-tools/application/tools/generateTypes.ts +0 -1
  846. package/src/features/mcp-tools/application/tools/getAction.ts +165 -165
  847. package/src/features/mcp-tools/application/tools/getFeature.ts +5 -5
  848. package/src/features/mcp-tools/application/tools/getFeatureIndex.ts +79 -79
  849. package/src/features/mcp-tools/application/tools/getNeighborhood.ts +319 -319
  850. package/src/features/mcp-tools/application/tools/getSurface.ts +86 -86
  851. package/src/features/mcp-tools/application/tools/index.ts +56 -56
  852. package/src/features/mcp-tools/application/tools/listActions.ts +49 -49
  853. package/src/features/mcp-tools/application/tools/listFeatures.ts +7 -7
  854. package/src/features/mcp-tools/application/tools/scoreFeature.ts +153 -153
  855. package/src/features/projects/application/ports/ProjectRepository.ts +14 -14
  856. package/src/features/projects/application/use-cases/AddFeatureToProject.ts +23 -23
  857. package/src/features/projects/application/use-cases/CreateProject.ts +16 -16
  858. package/src/features/projects/application/use-cases/FindProjectContainingFeature.ts +23 -23
  859. package/src/features/projects/application/use-cases/GetProjectAggregate.ts +131 -131
  860. package/src/features/projects/application/use-cases/ImportProjectBundle.ts +45 -0
  861. package/src/features/projects/application/use-cases/MoveFeatureInProject.ts +36 -36
  862. package/src/features/projects/application/use-cases/RemoveFeatureFromProject.ts +23 -23
  863. package/src/features/projects/domain/entities/Project.ts +12 -0
  864. package/src/features/projects/domain/services/InheritedFromProject.ts +130 -130
  865. package/src/features/projects/infrastructure/persistence/JsonFolderProjectRepository.ts +9 -0
  866. package/src/features/projects/presentation/components/ProjectCard.svelte +27 -8
  867. package/src/features/projects/presentation/components/ProjectEditor.svelte +17 -20
  868. package/src/features/projects/presentation/components/ProjectFeaturesPanel.svelte +462 -433
  869. package/src/features/projects/presentation/components/ProjectsIndex.svelte +54 -10
  870. package/src/features/projects/presentation/stores/projectContextStore.svelte.ts +170 -170
  871. package/src/features/projects/presentation/stores/projectFeaturesStore.svelte.ts +114 -114
  872. package/src/features/projects/presentation/stores/projectStore.svelte.ts +265 -266
  873. package/src/features/projects/presentation/stores/projectsStore.svelte.ts +134 -134
  874. package/src/features/simulator/application/use-cases/RunScenarios.ts +12 -0
  875. package/src/features/simulator/application/use-cases/SimulateAction.ts +47 -47
  876. package/src/features/simulator/domain/SimulationResult.ts +79 -79
  877. package/src/features/simulator/domain/SimulatorEngine.ts +43 -9
  878. package/src/features/simulator/domain/StateExplorer.ts +369 -0
  879. package/src/features/simulator/domain/SurfaceReachability.ts +130 -0
  880. package/src/features/simulator/presentation/components/ParameterInputs.svelte +277 -277
  881. package/src/features/simulator/presentation/components/PersonaPicker.svelte +52 -52
  882. package/src/features/simulator/presentation/components/ScenarioPicker.svelte +42 -45
  883. package/src/features/simulator/presentation/components/SidePanel.svelte +170 -170
  884. package/src/features/simulator/presentation/components/SimulationResultView.svelte +394 -394
  885. package/src/features/simulator/presentation/components/SimulatorPanel.svelte +293 -293
  886. package/src/features/simulator/presentation/components/StateInspector.svelte +101 -101
  887. package/src/features/simulator/presentation/stores/simulatorStore.svelte.ts +268 -268
  888. package/src/features/source-provenance/application/ports/ProvenanceRepository.ts +8 -0
  889. package/src/features/source-provenance/domain/FeatureElements.ts +50 -0
  890. package/src/features/source-provenance/domain/Highlighting.ts +91 -0
  891. package/src/features/source-provenance/domain/Provenance.ts +220 -0
  892. package/src/features/source-provenance/infrastructure/io/ProvenanceJson.ts +98 -0
  893. package/src/features/source-provenance/infrastructure/persistence/InMemoryProvenanceRepository.ts +19 -0
  894. package/src/features/source-provenance/infrastructure/persistence/JsonFolderProvenanceRepository.ts +71 -0
  895. package/src/features/source-provenance/presentation/components/SourceViewer.svelte +228 -0
  896. package/src/features/source-provenance/presentation/stores/provenanceStore.svelte.ts +70 -0
  897. package/src/features/tutorial/presentation/components/CodeBlock.svelte +5 -1
  898. package/src/features/verification/application/ports/BehavioralIndexReader.ts +12 -0
  899. package/src/features/verification/application/use-cases/VerifyFeatures.ts +151 -0
  900. package/src/features/verification/domain/DriftReport.ts +37 -0
  901. package/src/features/verification/domain/EventCoherenceReport.ts +27 -0
  902. package/src/features/verification/domain/IndexedImplementation.ts +27 -0
  903. package/src/features/verification/domain/VerificationReport.ts +59 -0
  904. package/src/features/verification/domain/VerificationThresholds.ts +52 -0
  905. package/src/features/verification/domain/VerificationVerdict.ts +43 -0
  906. package/src/features/verification/domain/aggregateVerdict.ts +244 -0
  907. package/src/features/verification/domain/analyzeEventCoherence.ts +43 -0
  908. package/src/features/verification/domain/detectDrift.ts +166 -0
  909. package/src/features/verification/domain/verifiedCoverage.ts +37 -0
  910. package/src/features/verification/infrastructure/persistence/FileBehavioralIndexReader.ts +81 -0
  911. package/src/features/verification/infrastructure/persistence/StaticBehavioralIndexReader.ts +15 -0
  912. package/src/features/verification/presentation/components/VerifyPanel.svelte +74 -0
  913. package/src/features/verification/presentation/stores/verificationStore.svelte.ts +64 -0
  914. package/src/lib/server/openLocalDirectory.ts +40 -0
  915. package/src/lib/server/searchIndex.ts +161 -0
  916. package/src/lib/server/snapshotRepository.ts +41 -37
  917. package/src/lib/server/sync/YDocManager.ts +391 -391
  918. package/src/lib/server/sync/historyStore.ts +276 -276
  919. package/src/lib/server/sync/wsServer.ts +1 -1
  920. package/src/lib/sync/protocol.ts +147 -147
  921. package/src/lib/sync/roomId.ts +33 -33
  922. package/src/routes/+layout.svelte +149 -85
  923. package/src/routes/api/domains/[id]/+server.ts +7 -3
  924. package/src/routes/api/projects/[id]/+server.ts +14 -4
  925. package/src/routes/api/projects/import/+server.ts +16 -38
  926. package/src/routes/api/search-index/+server.ts +16 -0
  927. package/src/routes/api/snapshots/[id]/+server.ts +56 -44
  928. package/src/routes/api/snapshots/[id]/implementation-status/+server.ts +13 -13
  929. package/src/routes/api/snapshots/[id]/provenance/+server.ts +13 -0
  930. package/src/routes/api/snapshots/[id]/verify/+server.ts +37 -0
  931. package/src/routes/api/sync/reload/+server.ts +157 -157
  932. package/src/routes/api/system/hub-directory/+server.ts +24 -0
  933. package/src/routes/features/+page.svelte +484 -484
  934. package/src/routes/features/[id]/+page.svelte +55 -49
  935. package/src/routes/features/[id]/graph/+page.svelte +8 -3
  936. package/src/routes/features/[id]/provenance/+page.svelte +54 -0
  937. package/src/routes/features/[id]/verify/+page.svelte +89 -0
  938. package/src/routes/mcp/+page.svelte +16 -1
  939. package/src/routes/projects/[id]/+page.svelte +70 -70
  940. package/src/routes/projects/[id]/graph/+page.svelte +3 -3
  941. package/src/routes/tutorial/+page.svelte +3 -2
  942. package/src/shared/infrastructure/browserContainer.ts +61 -61
  943. package/src/shared/infrastructure/persistence/snapshotLayout.ts +12 -0
  944. package/src/shared/presentation/components/KebabMenu.svelte +95 -0
  945. package/src/shared/presentation/components/MenuItem.svelte +29 -0
  946. package/static/unspaghettit-demo.gif +0 -0
  947. package/vite.config.ts +53 -47
  948. package/build/client/_app/immutable/assets/0.DSctqr5I.css +0 -1
  949. package/build/client/_app/immutable/assets/0.DSctqr5I.css.br +0 -0
  950. package/build/client/_app/immutable/assets/0.DSctqr5I.css.gz +0 -0
  951. package/build/client/_app/immutable/assets/11.nv0I59TU.css.gz +0 -0
  952. package/build/client/_app/immutable/assets/BehaviorGraph.Bk0xQRZk.css +0 -1
  953. package/build/client/_app/immutable/assets/BehaviorGraph.Bk0xQRZk.css.br +0 -0
  954. package/build/client/_app/immutable/assets/BehaviorGraph.Bk0xQRZk.css.gz +0 -0
  955. package/build/client/_app/immutable/chunks/9nXQ5qrY2.js +0 -1
  956. package/build/client/_app/immutable/chunks/9nXQ5qrY2.js.br +0 -0
  957. package/build/client/_app/immutable/chunks/9nXQ5qrY2.js.gz +0 -0
  958. package/build/client/_app/immutable/chunks/B439_FLv.js +0 -1
  959. package/build/client/_app/immutable/chunks/B439_FLv.js.br +0 -0
  960. package/build/client/_app/immutable/chunks/B439_FLv.js.gz +0 -0
  961. package/build/client/_app/immutable/chunks/BCEY79Dw.js +0 -1
  962. package/build/client/_app/immutable/chunks/BCEY79Dw.js.br +0 -2
  963. package/build/client/_app/immutable/chunks/BCEY79Dw.js.gz +0 -0
  964. package/build/client/_app/immutable/chunks/BOrLmFwJ.js +0 -1
  965. package/build/client/_app/immutable/chunks/BOrLmFwJ.js.br +0 -0
  966. package/build/client/_app/immutable/chunks/BOrLmFwJ.js.gz +0 -0
  967. package/build/client/_app/immutable/chunks/BPl9BITm.js +0 -3
  968. package/build/client/_app/immutable/chunks/BPl9BITm.js.br +0 -0
  969. package/build/client/_app/immutable/chunks/BPl9BITm.js.gz +0 -0
  970. package/build/client/_app/immutable/chunks/BYIrIC5L.js +0 -1
  971. package/build/client/_app/immutable/chunks/BYIrIC5L.js.br +0 -0
  972. package/build/client/_app/immutable/chunks/BYIrIC5L.js.gz +0 -0
  973. package/build/client/_app/immutable/chunks/B_9TWPrx2.js +0 -1
  974. package/build/client/_app/immutable/chunks/B_9TWPrx2.js.br +0 -0
  975. package/build/client/_app/immutable/chunks/B_9TWPrx2.js.gz +0 -0
  976. package/build/client/_app/immutable/chunks/BfMYiIUi.js +0 -1
  977. package/build/client/_app/immutable/chunks/BfMYiIUi.js.br +0 -0
  978. package/build/client/_app/immutable/chunks/BfMYiIUi.js.gz +0 -0
  979. package/build/client/_app/immutable/chunks/Bp2_Vghh.js +0 -1
  980. package/build/client/_app/immutable/chunks/Bp2_Vghh.js.br +0 -0
  981. package/build/client/_app/immutable/chunks/Bp2_Vghh.js.gz +0 -0
  982. package/build/client/_app/immutable/chunks/Bp8HpEPe2.js +0 -4
  983. package/build/client/_app/immutable/chunks/Bp8HpEPe2.js.br +0 -0
  984. package/build/client/_app/immutable/chunks/Bp8HpEPe2.js.gz +0 -0
  985. package/build/client/_app/immutable/chunks/BvOhVtZg.js +0 -1
  986. package/build/client/_app/immutable/chunks/BvOhVtZg.js.br +0 -1
  987. package/build/client/_app/immutable/chunks/BvOhVtZg.js.gz +0 -0
  988. package/build/client/_app/immutable/chunks/C8rRKIXT.js +0 -1
  989. package/build/client/_app/immutable/chunks/C8rRKIXT.js.br +0 -0
  990. package/build/client/_app/immutable/chunks/C8rRKIXT.js.gz +0 -0
  991. package/build/client/_app/immutable/chunks/CJjJLwzv2.js +0 -1
  992. package/build/client/_app/immutable/chunks/CJjJLwzv2.js.br +0 -0
  993. package/build/client/_app/immutable/chunks/CJjJLwzv2.js.gz +0 -0
  994. package/build/client/_app/immutable/chunks/CY3em1ma2.js +0 -1
  995. package/build/client/_app/immutable/chunks/CY3em1ma2.js.br +0 -0
  996. package/build/client/_app/immutable/chunks/CY3em1ma2.js.gz +0 -0
  997. package/build/client/_app/immutable/chunks/CgdRZPgI.js +0 -1
  998. package/build/client/_app/immutable/chunks/CgdRZPgI.js.br +0 -0
  999. package/build/client/_app/immutable/chunks/CgdRZPgI.js.gz +0 -0
  1000. package/build/client/_app/immutable/chunks/CxyLMlpt2.js +0 -2
  1001. package/build/client/_app/immutable/chunks/CxyLMlpt2.js.br +0 -0
  1002. package/build/client/_app/immutable/chunks/CxyLMlpt2.js.gz +0 -0
  1003. package/build/client/_app/immutable/chunks/D5speDV82.js.gz +0 -0
  1004. package/build/client/_app/immutable/chunks/D6jhrpTg.js +0 -1
  1005. package/build/client/_app/immutable/chunks/D6jhrpTg.js.br +0 -0
  1006. package/build/client/_app/immutable/chunks/D6jhrpTg.js.gz +0 -0
  1007. package/build/client/_app/immutable/chunks/D8YEa1po.js +0 -1
  1008. package/build/client/_app/immutable/chunks/D8YEa1po.js.br +0 -0
  1009. package/build/client/_app/immutable/chunks/D8YEa1po.js.gz +0 -0
  1010. package/build/client/_app/immutable/chunks/D9dKmajw.js +0 -1
  1011. package/build/client/_app/immutable/chunks/D9dKmajw.js.br +0 -0
  1012. package/build/client/_app/immutable/chunks/D9dKmajw.js.gz +0 -0
  1013. package/build/client/_app/immutable/chunks/DKgYpi6_.js +0 -1
  1014. package/build/client/_app/immutable/chunks/DKgYpi6_.js.br +0 -0
  1015. package/build/client/_app/immutable/chunks/DKgYpi6_.js.gz +0 -0
  1016. package/build/client/_app/immutable/chunks/Dg0acPpT.js +0 -1
  1017. package/build/client/_app/immutable/chunks/Dg0acPpT.js.br +0 -0
  1018. package/build/client/_app/immutable/chunks/Dg0acPpT.js.gz +0 -0
  1019. package/build/client/_app/immutable/chunks/DkxwAIfJ2.js +0 -1
  1020. package/build/client/_app/immutable/chunks/DkxwAIfJ2.js.br +0 -0
  1021. package/build/client/_app/immutable/chunks/DkxwAIfJ2.js.gz +0 -0
  1022. package/build/client/_app/immutable/chunks/HKLi1Yz3.js +0 -1
  1023. package/build/client/_app/immutable/chunks/HKLi1Yz3.js.br +0 -0
  1024. package/build/client/_app/immutable/chunks/HKLi1Yz3.js.gz +0 -0
  1025. package/build/client/_app/immutable/chunks/N7PXjlRH.js +0 -1
  1026. package/build/client/_app/immutable/chunks/N7PXjlRH.js.br +0 -0
  1027. package/build/client/_app/immutable/chunks/N7PXjlRH.js.gz +0 -0
  1028. package/build/client/_app/immutable/chunks/OJscNS3T.js +0 -1
  1029. package/build/client/_app/immutable/chunks/OJscNS3T.js.br +0 -0
  1030. package/build/client/_app/immutable/chunks/OJscNS3T.js.gz +0 -0
  1031. package/build/client/_app/immutable/chunks/U9p9CtKG2.js +0 -2
  1032. package/build/client/_app/immutable/chunks/U9p9CtKG2.js.br +0 -0
  1033. package/build/client/_app/immutable/chunks/U9p9CtKG2.js.gz +0 -0
  1034. package/build/client/_app/immutable/chunks/aNMRV4sP2.js +0 -5
  1035. package/build/client/_app/immutable/chunks/aNMRV4sP2.js.br +0 -0
  1036. package/build/client/_app/immutable/chunks/aNMRV4sP2.js.gz +0 -0
  1037. package/build/client/_app/immutable/chunks/cMamJTsF.js +0 -1
  1038. package/build/client/_app/immutable/chunks/cMamJTsF.js.br +0 -0
  1039. package/build/client/_app/immutable/chunks/cMamJTsF.js.gz +0 -0
  1040. package/build/client/_app/immutable/chunks/hpWJNn0t2.js +0 -2
  1041. package/build/client/_app/immutable/chunks/hpWJNn0t2.js.br +0 -0
  1042. package/build/client/_app/immutable/chunks/hpWJNn0t2.js.gz +0 -0
  1043. package/build/client/_app/immutable/chunks/ib21i2T_.js +0 -6
  1044. package/build/client/_app/immutable/chunks/ib21i2T_.js.br +0 -0
  1045. package/build/client/_app/immutable/chunks/ib21i2T_.js.gz +0 -0
  1046. package/build/client/_app/immutable/chunks/suTxxv1t.js +0 -1
  1047. package/build/client/_app/immutable/chunks/suTxxv1t.js.br +0 -1
  1048. package/build/client/_app/immutable/chunks/suTxxv1t.js.gz +0 -0
  1049. package/build/client/_app/immutable/entry/app.Cd4S3giu.js +0 -2
  1050. package/build/client/_app/immutable/entry/app.Cd4S3giu.js.br +0 -0
  1051. package/build/client/_app/immutable/entry/app.Cd4S3giu.js.gz +0 -0
  1052. package/build/client/_app/immutable/entry/start.C3xXQVkq.js +0 -1
  1053. package/build/client/_app/immutable/entry/start.C3xXQVkq.js.br +0 -0
  1054. package/build/client/_app/immutable/entry/start.C3xXQVkq.js.gz +0 -0
  1055. package/build/client/_app/immutable/nodes/0.dIOlQ-0y.js +0 -4
  1056. package/build/client/_app/immutable/nodes/0.dIOlQ-0y.js.br +0 -0
  1057. package/build/client/_app/immutable/nodes/0.dIOlQ-0y.js.gz +0 -0
  1058. package/build/client/_app/immutable/nodes/1.Dyte3Ggf.js +0 -1
  1059. package/build/client/_app/immutable/nodes/1.Dyte3Ggf.js.br +0 -2
  1060. package/build/client/_app/immutable/nodes/1.Dyte3Ggf.js.gz +0 -0
  1061. package/build/client/_app/immutable/nodes/10.ivxAosDg.js +0 -2
  1062. package/build/client/_app/immutable/nodes/10.ivxAosDg.js.br +0 -0
  1063. package/build/client/_app/immutable/nodes/10.ivxAosDg.js.gz +0 -0
  1064. package/build/client/_app/immutable/nodes/11.wvMfJKC2.js +0 -401
  1065. package/build/client/_app/immutable/nodes/11.wvMfJKC2.js.br +0 -0
  1066. package/build/client/_app/immutable/nodes/11.wvMfJKC2.js.gz +0 -0
  1067. package/build/client/_app/immutable/nodes/2.CmPPom9Z.js +0 -1
  1068. package/build/client/_app/immutable/nodes/2.CmPPom9Z.js.br +0 -0
  1069. package/build/client/_app/immutable/nodes/2.CmPPom9Z.js.gz +0 -0
  1070. package/build/client/_app/immutable/nodes/3.D-iCGCEx.js +0 -1
  1071. package/build/client/_app/immutable/nodes/3.D-iCGCEx.js.br +0 -0
  1072. package/build/client/_app/immutable/nodes/3.D-iCGCEx.js.gz +0 -0
  1073. package/build/client/_app/immutable/nodes/4.DbfAvO8Z.js +0 -3
  1074. package/build/client/_app/immutable/nodes/4.DbfAvO8Z.js.br +0 -0
  1075. package/build/client/_app/immutable/nodes/4.DbfAvO8Z.js.gz +0 -0
  1076. package/build/client/_app/immutable/nodes/5.CC5Q7lVw.js +0 -42
  1077. package/build/client/_app/immutable/nodes/5.CC5Q7lVw.js.br +0 -0
  1078. package/build/client/_app/immutable/nodes/5.CC5Q7lVw.js.gz +0 -0
  1079. package/build/client/_app/immutable/nodes/6.CHIjlzpO.js +0 -1
  1080. package/build/client/_app/immutable/nodes/6.CHIjlzpO.js.br +0 -0
  1081. package/build/client/_app/immutable/nodes/6.CHIjlzpO.js.gz +0 -0
  1082. package/build/client/_app/immutable/nodes/7.Ejs18ZUc.js +0 -5
  1083. package/build/client/_app/immutable/nodes/7.Ejs18ZUc.js.br +0 -0
  1084. package/build/client/_app/immutable/nodes/7.Ejs18ZUc.js.gz +0 -0
  1085. package/build/client/_app/immutable/nodes/8.B-HweAc8.js +0 -1
  1086. package/build/client/_app/immutable/nodes/8.B-HweAc8.js.br +0 -0
  1087. package/build/client/_app/immutable/nodes/8.B-HweAc8.js.gz +0 -0
  1088. package/build/client/_app/immutable/nodes/9.CKPeM6tx.js +0 -5
  1089. package/build/client/_app/immutable/nodes/9.CKPeM6tx.js.br +0 -0
  1090. package/build/client/_app/immutable/nodes/9.CKPeM6tx.js.gz +0 -0
  1091. package/build/server/chunks/0-Co8kcANG.js +0 -15
  1092. package/build/server/chunks/0-Co8kcANG.js.map +0 -1
  1093. package/build/server/chunks/1-BSUItTig.js +0 -9
  1094. package/build/server/chunks/1-BSUItTig.js.map +0 -1
  1095. package/build/server/chunks/10-BygvxrZp.js +0 -9
  1096. package/build/server/chunks/10-BygvxrZp.js.map +0 -1
  1097. package/build/server/chunks/11-DRx0tRx2.js +0 -9
  1098. package/build/server/chunks/11-DRx0tRx2.js.map +0 -1
  1099. package/build/server/chunks/2-BQT3m1vc.js +0 -9
  1100. package/build/server/chunks/2-BQT3m1vc.js.map +0 -1
  1101. package/build/server/chunks/3-DPZ9BquJ.js +0 -16
  1102. package/build/server/chunks/3-DPZ9BquJ.js.map +0 -1
  1103. package/build/server/chunks/4-DHo47YX6.js +0 -16
  1104. package/build/server/chunks/4-DHo47YX6.js.map +0 -1
  1105. package/build/server/chunks/5-Cp9evBAG.js +0 -9
  1106. package/build/server/chunks/5-Cp9evBAG.js.map +0 -1
  1107. package/build/server/chunks/6-DiBq3bOV.js +0 -9
  1108. package/build/server/chunks/6-DiBq3bOV.js.map +0 -1
  1109. package/build/server/chunks/7-C4hmS0dG.js +0 -9
  1110. package/build/server/chunks/7-C4hmS0dG.js.map +0 -1
  1111. package/build/server/chunks/8-CFFuDzBC.js +0 -9
  1112. package/build/server/chunks/8-CFFuDzBC.js.map +0 -1
  1113. package/build/server/chunks/9-nhhKZJrs.js +0 -9
  1114. package/build/server/chunks/9-nhhKZJrs.js.map +0 -1
  1115. package/build/server/chunks/BehaviorGraph-m5kYj5HH.js +0 -757
  1116. package/build/server/chunks/BehaviorGraph-m5kYj5HH.js.map +0 -1
  1117. package/build/server/chunks/FeatureCard-CfbXNYe8.js +0 -73
  1118. package/build/server/chunks/FeatureCard-CfbXNYe8.js.map +0 -1
  1119. package/build/server/chunks/FeatureJson-Bv-qiOSf.js +0 -55
  1120. package/build/server/chunks/FeatureJson-Bv-qiOSf.js.map +0 -1
  1121. package/build/server/chunks/FeatureTransforms-UWDHmWEg.js +0 -311
  1122. package/build/server/chunks/FeatureTransforms-UWDHmWEg.js.map +0 -1
  1123. package/build/server/chunks/FeatureValidator-B8qEjAUW.js +0 -546
  1124. package/build/server/chunks/FeatureValidator-B8qEjAUW.js.map +0 -1
  1125. package/build/server/chunks/ManageTagsDialog-DBxA3tM2.js +0 -87
  1126. package/build/server/chunks/ManageTagsDialog-DBxA3tM2.js.map +0 -1
  1127. package/build/server/chunks/ProgressBar-DDoQJ_C9.js +0 -70
  1128. package/build/server/chunks/ProgressBar-DDoQJ_C9.js.map +0 -1
  1129. package/build/server/chunks/ProjectsIndex-DUVJ3hyL.js +0 -186
  1130. package/build/server/chunks/ProjectsIndex-DUVJ3hyL.js.map +0 -1
  1131. package/build/server/chunks/RenameTag-BuWLMl1m.js +0 -58
  1132. package/build/server/chunks/RenameTag-BuWLMl1m.js.map +0 -1
  1133. package/build/server/chunks/TagDotStrip-B1XQ0m0Y.js +0 -88
  1134. package/build/server/chunks/TagDotStrip-B1XQ0m0Y.js.map +0 -1
  1135. package/build/server/chunks/TagFilterSelect-DbO0Qduh.js +0 -112
  1136. package/build/server/chunks/TagFilterSelect-DbO0Qduh.js.map +0 -1
  1137. package/build/server/chunks/TagPalette-CtMNYCmu.js +0 -901
  1138. package/build/server/chunks/TagPalette-CtMNYCmu.js.map +0 -1
  1139. package/build/server/chunks/TransitionCatalog-B8zHs-2E.js +0 -271
  1140. package/build/server/chunks/TransitionCatalog-B8zHs-2E.js.map +0 -1
  1141. package/build/server/chunks/_layout.svelte-CLTmk0xU.js +0 -667
  1142. package/build/server/chunks/_layout.svelte-CLTmk0xU.js.map +0 -1
  1143. package/build/server/chunks/_page.svelte-B1nG3PKn.js +0 -29
  1144. package/build/server/chunks/_page.svelte-B1nG3PKn.js.map +0 -1
  1145. package/build/server/chunks/_page.svelte-B1s7jxaQ.js +0 -94
  1146. package/build/server/chunks/_page.svelte-B1s7jxaQ.js.map +0 -1
  1147. package/build/server/chunks/_page.svelte-BW_nbAAH.js +0 -828
  1148. package/build/server/chunks/_page.svelte-BW_nbAAH.js.map +0 -1
  1149. package/build/server/chunks/_page.svelte-Caq7J0jU.js +0 -448
  1150. package/build/server/chunks/_page.svelte-Caq7J0jU.js.map +0 -1
  1151. package/build/server/chunks/_page.svelte-Cham-dsM.js +0 -29
  1152. package/build/server/chunks/_page.svelte-Cham-dsM.js.map +0 -1
  1153. package/build/server/chunks/_page.svelte-Dhwjwph_.js +0 -41
  1154. package/build/server/chunks/_page.svelte-Dhwjwph_.js.map +0 -1
  1155. package/build/server/chunks/_page.svelte-DlFVT40-.js +0 -827
  1156. package/build/server/chunks/_page.svelte-DlFVT40-.js.map +0 -1
  1157. package/build/server/chunks/_page.svelte-NVT2dzpG.js +0 -10752
  1158. package/build/server/chunks/_page.svelte-NVT2dzpG.js.map +0 -1
  1159. package/build/server/chunks/_page.svelte-Oj-W7G5s.js +0 -197
  1160. package/build/server/chunks/_page.svelte-Oj-W7G5s.js.map +0 -1
  1161. package/build/server/chunks/_page.svelte-Z_kK2lHY.js +0 -68
  1162. package/build/server/chunks/_page.svelte-Z_kK2lHY.js.map +0 -1
  1163. package/build/server/chunks/_server.ts-0uNTZKwF.js +0 -50
  1164. package/build/server/chunks/_server.ts-0uNTZKwF.js.map +0 -1
  1165. package/build/server/chunks/_server.ts-BIBWjQI-.js +0 -46
  1166. package/build/server/chunks/_server.ts-BIBWjQI-.js.map +0 -1
  1167. package/build/server/chunks/_server.ts-BihpbxOW.js +0 -23
  1168. package/build/server/chunks/_server.ts-BihpbxOW.js.map +0 -1
  1169. package/build/server/chunks/_server.ts-BuoQ02BW.js +0 -50
  1170. package/build/server/chunks/_server.ts-BuoQ02BW.js.map +0 -1
  1171. package/build/server/chunks/_server.ts-CWvU15tL.js +0 -21
  1172. package/build/server/chunks/_server.ts-CWvU15tL.js.map +0 -1
  1173. package/build/server/chunks/_server.ts-D4EO0VHu.js +0 -106
  1174. package/build/server/chunks/_server.ts-D4EO0VHu.js.map +0 -1
  1175. package/build/server/chunks/_server.ts-DDa0Nk_S.js +0 -23
  1176. package/build/server/chunks/_server.ts-DDa0Nk_S.js.map +0 -1
  1177. package/build/server/chunks/_server.ts-DcZPhyhK.js +0 -59
  1178. package/build/server/chunks/_server.ts-DcZPhyhK.js.map +0 -1
  1179. package/build/server/chunks/_server.ts-DsbbVoOn.js +0 -23
  1180. package/build/server/chunks/_server.ts-DsbbVoOn.js.map +0 -1
  1181. package/build/server/chunks/_server.ts-Dy5zQHe2.js +0 -79
  1182. package/build/server/chunks/_server.ts-Dy5zQHe2.js.map +0 -1
  1183. package/build/server/chunks/_server.ts-YnfXkeMJ.js +0 -52
  1184. package/build/server/chunks/_server.ts-YnfXkeMJ.js.map +0 -1
  1185. package/build/server/chunks/_server.ts-vcaqdwxS.js +0 -45
  1186. package/build/server/chunks/_server.ts-vcaqdwxS.js.map +0 -1
  1187. package/build/server/chunks/browserContainer-CNX7ANld.js +0 -2884
  1188. package/build/server/chunks/browserContainer-CNX7ANld.js.map +0 -1
  1189. package/build/server/chunks/builderModeStore.svelte-BpRIU_zP.js +0 -892
  1190. package/build/server/chunks/builderModeStore.svelte-BpRIU_zP.js.map +0 -1
  1191. package/build/server/chunks/client-DeX3TC3s.js +0 -51
  1192. package/build/server/chunks/client-DeX3TC3s.js.map +0 -1
  1193. package/build/server/chunks/error.svelte-Cdjeq3L2.js +0 -15
  1194. package/build/server/chunks/error.svelte-Cdjeq3L2.js.map +0 -1
  1195. package/build/server/chunks/featureStore.svelte-DIYgPBVm.js +0 -161
  1196. package/build/server/chunks/featureStore.svelte-DIYgPBVm.js.map +0 -1
  1197. package/build/server/chunks/featuresStore.svelte-DR1gYZyu.js +0 -98
  1198. package/build/server/chunks/featuresStore.svelte-DR1gYZyu.js.map +0 -1
  1199. package/build/server/chunks/identityStore.svelte-IIvW2_3b.js +0 -59
  1200. package/build/server/chunks/identityStore.svelte-IIvW2_3b.js.map +0 -1
  1201. package/build/server/chunks/index-server-7H0jzj0M.js +0 -4770
  1202. package/build/server/chunks/index-server-7H0jzj0M.js.map +0 -1
  1203. package/build/server/chunks/internal-KYK0WpL7.js +0 -1820
  1204. package/build/server/chunks/internal-KYK0WpL7.js.map +0 -1
  1205. package/build/server/chunks/projectFeaturesStore.svelte-2o-72_vr.js +0 -313
  1206. package/build/server/chunks/projectFeaturesStore.svelte-2o-72_vr.js.map +0 -1
  1207. package/build/server/chunks/projectsStore.svelte-QDz5PchX.js +0 -120
  1208. package/build/server/chunks/projectsStore.svelte-QDz5PchX.js.map +0 -1
  1209. package/build/server/chunks/reconcile-B5xqb6-s.js +0 -337
  1210. package/build/server/chunks/reconcile-B5xqb6-s.js.map +0 -1
  1211. package/build/server/chunks/snapshotRepository-BPXCjX92.js +0 -999
  1212. package/build/server/chunks/snapshotRepository-BPXCjX92.js.map +0 -1
  1213. package/build/server/chunks/state-DBjl9lhV.js +0 -61
  1214. package/build/server/chunks/state-DBjl9lhV.js.map +0 -1
  1215. package/build/server/chunks/sync-DZ3dn761.js +0 -955
  1216. package/build/server/chunks/sync-DZ3dn761.js.map +0 -1
  1217. package/build/server/chunks/syncBridge-BwXzPdjJ.js +0 -33
  1218. package/build/server/chunks/syncBridge-BwXzPdjJ.js.map +0 -1
  1219. package/build/server/chunks/tagPaletteStore.svelte-DfZOBvgY.js +0 -181
  1220. package/build/server/chunks/tagPaletteStore.svelte-DfZOBvgY.js.map +0 -1
  1221. package/src/features/implementation-queue/presentation/components/QueuePanel.svelte +0 -204
  1222. package/src/features/implementation-queue/presentation/stores/queueStore.svelte.ts +0 -143
  1223. /package/build/client/_app/immutable/assets/{11.nv0I59TU.css → 13.nv0I59TU.css} +0 -0
  1224. /package/build/client/_app/immutable/assets/{11.nv0I59TU.css.br → 13.nv0I59TU.css.br} +0 -0
  1225. /package/build/client/_app/immutable/chunks/{D5speDV82.js → D5speDV8.js} +0 -0
  1226. /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="120" />
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
- <img src="https://github.com/lyriks-io/unspaghettit/actions/workflows/ci.yml/badge.svg" alt="CI" />
14
- </a>
15
- <a href="https://www.gnu.org/licenses/agpl-3.0.html">
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 &nbsp;·&nbsp; MCP-native &nbsp;·&nbsp; AGPL-3.0
25
- </p>
16
+ <p align="center"><strong>Local-first</strong> &nbsp;·&nbsp; <strong>MCP-native</strong> &nbsp;·&nbsp; <strong>AGPL-3.0</strong></p>
26
17
 
27
18
  <p align="center">
28
- <em>An open-source project by <a href="https://lyriks.io">Lyriks.io</a>.</em>
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
- ## Why Unspaghettit?
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
- From nothing to a running Unspaghettit workspace:
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
- ```bash
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
- `unspa init` wires the MCP server into the AI clients you choose. If your client supports skills or custom instructions, it can install the Unspaghettit guidance there too.
30
+ ## See it work
77
31
 
78
- Restart your IDE or AI client. When it comes back up, accept the MCP server and the guidance if your client asks. Then ask your LLM something like:
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
- The dashboard opens at `http://localhost:3000`, so you can watch the spec take shape while the LLM works.
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
- If you want a smaller first pass:
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
- For an existing codebase:
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
- ### Choose the maturity level
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
- ```text
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 MCP is also useful as a query layer. Ask the agent to inspect the current model instead of relying on memory or screenshots.
56
+ ## The problem it kills
204
57
 
205
- ```text
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
- ```text
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
- ```text
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 for AI-assisted development. It gives the LLM durable project memory that can be validated, simulated, scored, and mapped back to source code.
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
- `unspa init` registers the MCP server with the AI clients you pick. Supported out of the box:
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
- | Client | Project config | Global config |
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
- For Codex (and any other client without an automated config write), `unspa init` prints the MCP JSON snippet to copy into the client's settings.
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
- unspa init --local # scaffold this repo's unspa/ folder (found by walk-up)
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
- unspa init --with builder # at setup (or just answer the init prompt)
340
- unspa view add builder # anytime; persists for every `unspa dashboard`
341
- unspa dashboard --view builder # one-off, no persistence
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
- ## Where this came from
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
- ## Definitely Do Not Use This For Fun
90
+ Full setup, client config, and shared-hub mode: [docs/getting-started.md](docs/getting-started.md).
420
91
 
421
- *(RPG quests, interactive fiction, narrative worlds, tabletop campaign logic — for the avoidance of doubt.)*
92
+ ## Documentation
422
93
 
423
- If you have read this far, one final piece of very serious advice.
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
- Under no circumstances should you try using Unspaghettit to model RPG quests, branching stories, interactive fiction, tabletop campaign logic, NPC behavior, faction states, mystery plots, puzzle chains, or alternate endings — any narrative system where choices, rules, consequences, and world state need to stay coherent.
104
+ ## Status
426
105
 
427
- You might discover that executable specs are suspiciously good at checking whether a dragon deal can be broken, whether a locked door can be opened before the key exists, whether two endings contradict each other, or whether your "simple little side quest" has quietly become a state machine with twelve emotional failure modes.
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
- There are two halves. **Building** the world maps locations to surfaces, world state to shared state, NPC schedules to time-driven rules, and "what the player can do here" to actions with preconditions. **Playing** the world is the dangerous part: a chat reads a saved game file on every turn, maps the player's intent to a modeled action, asks the deterministic simulator to resolve it, applies the diff back to disk, and narrates the result. The save file is canonical — your inventory, time of day, and current location survive the LLM forgetting the conversation.
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
- This would be extremely dangerous, because you may have fun.
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
- ## License
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>