unspaghettit 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (772) hide show
  1. package/README.md +56 -18
  2. package/build/client/_app/immutable/assets/0.DCOD5ne_.css +1 -0
  3. package/build/client/_app/immutable/assets/0.DCOD5ne_.css.br +0 -0
  4. package/build/client/_app/immutable/assets/0.DCOD5ne_.css.gz +0 -0
  5. package/build/client/_app/immutable/assets/12.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/BehaviorGraph.Bk0xQRZk.css +1 -0
  8. package/build/client/_app/immutable/assets/BehaviorGraph.Bk0xQRZk.css.br +0 -0
  9. package/build/client/_app/immutable/assets/BehaviorGraph.Bk0xQRZk.css.gz +0 -0
  10. package/build/client/_app/immutable/chunks/B3vnQs252.js +1 -0
  11. package/build/client/_app/immutable/chunks/B3vnQs252.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/B3vnQs252.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/{CxyLMlpt2.js → BANF9BhQ2.js} +1 -1
  14. package/build/client/_app/immutable/chunks/BANF9BhQ2.js.br +0 -0
  15. package/build/client/_app/immutable/chunks/BANF9BhQ2.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/BJdTO_n6.js +1 -0
  17. package/build/client/_app/immutable/chunks/BJdTO_n6.js.br +0 -0
  18. package/build/client/_app/immutable/chunks/BJdTO_n6.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/BPl9BITm.js.gz +0 -0
  20. package/build/client/_app/immutable/chunks/BQ9GodWX2.js.gz +0 -0
  21. package/build/client/_app/immutable/chunks/Bcyn5YUg.js +4 -0
  22. package/build/client/_app/immutable/chunks/Bcyn5YUg.js.br +0 -0
  23. package/build/client/_app/immutable/chunks/Bcyn5YUg.js.gz +0 -0
  24. package/build/client/_app/immutable/chunks/Bfc9rQXP.js +1 -0
  25. package/build/client/_app/immutable/chunks/Bfc9rQXP.js.br +0 -0
  26. package/build/client/_app/immutable/chunks/Bfc9rQXP.js.gz +0 -0
  27. package/build/client/_app/immutable/chunks/{BfMYiIUi.js → BjxqhpPG.js} +1 -1
  28. package/build/client/_app/immutable/chunks/BjxqhpPG.js.br +0 -0
  29. package/build/client/_app/immutable/chunks/BjxqhpPG.js.gz +0 -0
  30. package/build/client/_app/immutable/chunks/ByaoVvNB.js +1 -0
  31. package/build/client/_app/immutable/chunks/ByaoVvNB.js.br +0 -0
  32. package/build/client/_app/immutable/chunks/ByaoVvNB.js.gz +0 -0
  33. package/build/client/_app/immutable/chunks/BzLd0mTH.js.gz +0 -0
  34. package/build/client/_app/immutable/chunks/C8b3IMj8.js +1 -0
  35. package/build/client/_app/immutable/chunks/C8b3IMj8.js.br +0 -0
  36. package/build/client/_app/immutable/chunks/C8b3IMj8.js.gz +0 -0
  37. package/build/client/_app/immutable/chunks/CXvvf4uQ.js +1 -0
  38. package/build/client/_app/immutable/chunks/CXvvf4uQ.js.br +0 -0
  39. package/build/client/_app/immutable/chunks/CXvvf4uQ.js.gz +0 -0
  40. package/build/client/_app/immutable/chunks/Cl7Z3e6-.js.gz +0 -0
  41. package/build/client/_app/immutable/chunks/ClC4qR7W2.js +2 -0
  42. package/build/client/_app/immutable/chunks/ClC4qR7W2.js.br +0 -0
  43. package/build/client/_app/immutable/chunks/ClC4qR7W2.js.gz +0 -0
  44. package/build/client/_app/immutable/chunks/CuGlh1c2.js +1 -0
  45. package/build/client/_app/immutable/chunks/CuGlh1c2.js.br +0 -0
  46. package/build/client/_app/immutable/chunks/CuGlh1c2.js.gz +0 -0
  47. package/build/client/_app/immutable/chunks/CwzIdrQR.js +1 -0
  48. package/build/client/_app/immutable/chunks/CwzIdrQR.js.br +0 -0
  49. package/build/client/_app/immutable/chunks/CwzIdrQR.js.gz +0 -0
  50. package/build/client/_app/immutable/chunks/D5speDV82.js +908 -0
  51. package/build/client/_app/immutable/chunks/D5speDV82.js.br +0 -0
  52. package/build/client/_app/immutable/chunks/D5speDV82.js.gz +0 -0
  53. package/build/client/_app/immutable/chunks/D64sGJRN.js +1 -0
  54. package/build/client/_app/immutable/chunks/D64sGJRN.js.br +0 -0
  55. package/build/client/_app/immutable/chunks/D64sGJRN.js.gz +0 -0
  56. package/build/client/_app/immutable/chunks/DNaA4QRO2.js +1 -0
  57. package/build/client/_app/immutable/chunks/DNaA4QRO2.js.br +0 -0
  58. package/build/client/_app/immutable/chunks/DNaA4QRO2.js.gz +0 -0
  59. package/build/client/_app/immutable/chunks/Da59TXPe.js +1 -0
  60. package/build/client/_app/immutable/chunks/Da59TXPe.js.br +2 -0
  61. package/build/client/_app/immutable/chunks/Da59TXPe.js.gz +0 -0
  62. package/build/client/_app/immutable/chunks/DhTiE3j02.js +2 -0
  63. package/build/client/_app/immutable/chunks/DhTiE3j02.js.br +0 -0
  64. package/build/client/_app/immutable/chunks/DhTiE3j02.js.gz +0 -0
  65. package/build/client/_app/immutable/chunks/Dhqg7r_2.js.gz +0 -0
  66. package/build/client/_app/immutable/chunks/DmyaDy4d2.js +1 -0
  67. package/build/client/_app/immutable/chunks/DmyaDy4d2.js.br +0 -0
  68. package/build/client/_app/immutable/chunks/DmyaDy4d2.js.gz +0 -0
  69. package/build/client/_app/immutable/chunks/DryaQyjN2.js +1 -0
  70. package/build/client/_app/immutable/chunks/DryaQyjN2.js.br +0 -0
  71. package/build/client/_app/immutable/chunks/DryaQyjN2.js.gz +0 -0
  72. package/build/client/_app/immutable/chunks/DtK8qK5Q2.js +1 -0
  73. package/build/client/_app/immutable/chunks/DtK8qK5Q2.js.br +0 -0
  74. package/build/client/_app/immutable/chunks/DtK8qK5Q2.js.gz +0 -0
  75. package/build/client/_app/immutable/chunks/DtblIi6X2.js +1 -0
  76. package/build/client/_app/immutable/chunks/DtblIi6X2.js.br +1 -0
  77. package/build/client/_app/immutable/chunks/DtblIi6X2.js.gz +0 -0
  78. package/build/client/_app/immutable/chunks/UkzDDeO42.js +1 -0
  79. package/build/client/_app/immutable/chunks/UkzDDeO42.js.br +0 -0
  80. package/build/client/_app/immutable/chunks/UkzDDeO42.js.gz +0 -0
  81. package/build/client/_app/immutable/chunks/Vu8LzrwP2.js +1 -0
  82. package/build/client/_app/immutable/chunks/Vu8LzrwP2.js.br +0 -0
  83. package/build/client/_app/immutable/chunks/Vu8LzrwP2.js.gz +0 -0
  84. package/build/client/_app/immutable/chunks/_b612aVb.js +1 -0
  85. package/build/client/_app/immutable/chunks/_b612aVb.js.br +0 -0
  86. package/build/client/_app/immutable/chunks/_b612aVb.js.gz +0 -0
  87. package/build/client/_app/immutable/chunks/aNMRV4sP2.js.gz +0 -0
  88. package/build/client/_app/immutable/chunks/cMamJTsF.js.gz +0 -0
  89. package/build/client/_app/immutable/chunks/ib21i2T_.js.gz +0 -0
  90. package/build/client/_app/immutable/chunks/kNaey6uv.js.gz +0 -0
  91. package/build/client/_app/immutable/chunks/oVMDLirx.js +1 -0
  92. package/build/client/_app/immutable/chunks/oVMDLirx.js.br +0 -0
  93. package/build/client/_app/immutable/chunks/oVMDLirx.js.gz +0 -0
  94. package/build/client/_app/immutable/chunks/olAc024e.js +1 -0
  95. package/build/client/_app/immutable/chunks/olAc024e.js.br +0 -0
  96. package/build/client/_app/immutable/chunks/olAc024e.js.gz +0 -0
  97. package/build/client/_app/immutable/chunks/suTxxv1t.js.gz +0 -0
  98. package/build/client/_app/immutable/chunks/wXIHzLMQ2.js +1 -0
  99. package/build/client/_app/immutable/chunks/wXIHzLMQ2.js.br +0 -0
  100. package/build/client/_app/immutable/chunks/wXIHzLMQ2.js.gz +0 -0
  101. package/build/client/_app/immutable/chunks/wrqalH0a.js +1 -0
  102. package/build/client/_app/immutable/chunks/wrqalH0a.js.br +0 -0
  103. package/build/client/_app/immutable/chunks/wrqalH0a.js.gz +0 -0
  104. package/build/client/_app/immutable/chunks/x60Tn5kT.js +1 -0
  105. package/build/client/_app/immutable/chunks/x60Tn5kT.js.br +0 -0
  106. package/build/client/_app/immutable/chunks/x60Tn5kT.js.gz +0 -0
  107. package/build/client/_app/immutable/chunks/xihTtKlq.js.gz +0 -0
  108. package/build/client/_app/immutable/chunks/{BOrLmFwJ.js → yShDxCNj.js} +1 -1
  109. package/build/client/_app/immutable/chunks/yShDxCNj.js.br +2 -0
  110. package/build/client/_app/immutable/chunks/yShDxCNj.js.gz +0 -0
  111. package/build/client/_app/immutable/entry/app.Etd-exTb.js +2 -0
  112. package/build/client/_app/immutable/entry/app.Etd-exTb.js.br +0 -0
  113. package/build/client/_app/immutable/entry/app.Etd-exTb.js.gz +0 -0
  114. package/build/client/_app/immutable/entry/start.DY2B3u4g.js +1 -0
  115. package/build/client/_app/immutable/entry/start.DY2B3u4g.js.br +0 -0
  116. package/build/client/_app/immutable/entry/start.DY2B3u4g.js.gz +0 -0
  117. package/build/client/_app/immutable/nodes/0.tKfYV3__.js +8 -0
  118. package/build/client/_app/immutable/nodes/0.tKfYV3__.js.br +0 -0
  119. package/build/client/_app/immutable/nodes/0.tKfYV3__.js.gz +0 -0
  120. package/build/client/_app/immutable/nodes/{1.KYdA6ppX.js → 1.CER5ICKt.js} +1 -1
  121. package/build/client/_app/immutable/nodes/1.CER5ICKt.js.br +1 -0
  122. package/build/client/_app/immutable/nodes/1.CER5ICKt.js.gz +0 -0
  123. package/build/client/_app/immutable/nodes/10.rT7cD8kX.js +1 -0
  124. package/build/client/_app/immutable/nodes/10.rT7cD8kX.js.br +0 -0
  125. package/build/client/_app/immutable/nodes/10.rT7cD8kX.js.gz +0 -0
  126. package/build/client/_app/immutable/nodes/11.BAnV_Y5Y.js +2 -0
  127. package/build/client/_app/immutable/nodes/11.BAnV_Y5Y.js.br +0 -0
  128. package/build/client/_app/immutable/nodes/11.BAnV_Y5Y.js.gz +0 -0
  129. package/build/client/_app/immutable/nodes/{9.CMW6a2Lg.js → 12.DCTRFMqo.js} +4 -3
  130. package/build/client/_app/immutable/nodes/12.DCTRFMqo.js.br +0 -0
  131. package/build/client/_app/immutable/nodes/12.DCTRFMqo.js.gz +0 -0
  132. package/build/client/_app/immutable/nodes/{2.DBz20KgG.js → 2.CF488WWF.js} +1 -1
  133. package/build/client/_app/immutable/nodes/2.CF488WWF.js.br +0 -0
  134. package/build/client/_app/immutable/nodes/2.CF488WWF.js.gz +0 -0
  135. package/build/client/_app/immutable/nodes/3.CP7CPPVH.js +1 -0
  136. package/build/client/_app/immutable/nodes/3.CP7CPPVH.js.br +0 -0
  137. package/build/client/_app/immutable/nodes/3.CP7CPPVH.js.gz +0 -0
  138. package/build/client/_app/immutable/nodes/4.D1bxCSiM.js +3 -0
  139. package/build/client/_app/immutable/nodes/4.D1bxCSiM.js.br +0 -0
  140. package/build/client/_app/immutable/nodes/4.D1bxCSiM.js.gz +0 -0
  141. package/build/client/_app/immutable/nodes/5.D6jZgh9y.js +48 -0
  142. package/build/client/_app/immutable/nodes/5.D6jZgh9y.js.br +0 -0
  143. package/build/client/_app/immutable/nodes/5.D6jZgh9y.js.gz +0 -0
  144. package/build/client/_app/immutable/nodes/6.BrBFUA0s.js +1 -0
  145. package/build/client/_app/immutable/nodes/6.BrBFUA0s.js.br +0 -0
  146. package/build/client/_app/immutable/nodes/6.BrBFUA0s.js.gz +0 -0
  147. package/build/client/_app/immutable/nodes/7.pajo8MfM.js +3 -0
  148. package/build/client/_app/immutable/nodes/7.pajo8MfM.js.br +0 -0
  149. package/build/client/_app/immutable/nodes/7.pajo8MfM.js.gz +0 -0
  150. package/build/client/_app/immutable/nodes/8.Cc80_Igi.js +5 -0
  151. package/build/client/_app/immutable/nodes/8.Cc80_Igi.js.br +0 -0
  152. package/build/client/_app/immutable/nodes/8.Cc80_Igi.js.gz +0 -0
  153. package/build/client/_app/immutable/nodes/{7.CemgNJfw.js → 9.D72NaL3l.js} +1 -1
  154. package/build/client/_app/immutable/nodes/9.D72NaL3l.js.br +1 -0
  155. package/build/client/_app/immutable/nodes/9.D72NaL3l.js.gz +0 -0
  156. package/build/client/_app/version.json +1 -1
  157. package/build/client/_app/version.json.br +0 -0
  158. package/build/client/_app/version.json.gz +0 -0
  159. package/build/client/lyriks_logo.svg +148 -0
  160. package/build/client/lyriks_logo.svg.br +0 -0
  161. package/build/client/lyriks_logo.svg.gz +0 -0
  162. package/build/server/chunks/0-8YZc572z.js +15 -0
  163. package/build/server/chunks/0-8YZc572z.js.map +1 -0
  164. package/build/server/chunks/1-DxkfSJLu.js +9 -0
  165. package/build/server/chunks/{1-DPpKAKXV.js.map → 1-DxkfSJLu.js.map} +1 -1
  166. package/build/server/chunks/10-DkObdGtU.js +9 -0
  167. package/build/server/chunks/10-DkObdGtU.js.map +1 -0
  168. package/build/server/chunks/11-DL94HxpZ.js +9 -0
  169. package/build/server/chunks/11-DL94HxpZ.js.map +1 -0
  170. package/build/server/chunks/12-CI74sCkt.js +9 -0
  171. package/build/server/chunks/12-CI74sCkt.js.map +1 -0
  172. package/build/server/chunks/2-qhWwQ4eL.js +9 -0
  173. package/build/server/chunks/2-qhWwQ4eL.js.map +1 -0
  174. package/build/server/chunks/3-CzoZtSTp.js +16 -0
  175. package/build/server/chunks/3-CzoZtSTp.js.map +1 -0
  176. package/build/server/chunks/4-CDa9DBsh.js +16 -0
  177. package/build/server/chunks/4-CDa9DBsh.js.map +1 -0
  178. package/build/server/chunks/5-qD2xxOrq.js +9 -0
  179. package/build/server/chunks/5-qD2xxOrq.js.map +1 -0
  180. package/build/server/chunks/6-B4mWzvDn.js +9 -0
  181. package/build/server/chunks/6-B4mWzvDn.js.map +1 -0
  182. package/build/server/chunks/7-zExv-fTN.js +9 -0
  183. package/build/server/chunks/7-zExv-fTN.js.map +1 -0
  184. package/build/server/chunks/8-BVrGdQg4.js +9 -0
  185. package/build/server/chunks/{6-QQ7r8Rd5.js.map → 8-BVrGdQg4.js.map} +1 -1
  186. package/build/server/chunks/9-BnZLRMYA.js +9 -0
  187. package/build/server/chunks/9-BnZLRMYA.js.map +1 -0
  188. package/build/server/chunks/BehaviorGraph-C-9z37Sm.js +788 -0
  189. package/build/server/chunks/BehaviorGraph-C-9z37Sm.js.map +1 -0
  190. package/build/server/chunks/Clock-BfMWQpmJ.js +5 -0
  191. package/build/server/chunks/Clock-BfMWQpmJ.js.map +1 -0
  192. package/build/server/chunks/DeleteDomain-BvHEgAyp.js +24 -0
  193. package/build/server/chunks/DeleteDomain-BvHEgAyp.js.map +1 -0
  194. package/build/server/chunks/{FeatureValidator-B8qEjAUW.js → DeleteFeature-DnK8sBJI.js} +142 -77
  195. package/build/server/chunks/DeleteFeature-DnK8sBJI.js.map +1 -0
  196. package/build/server/chunks/DeleteProject-BXZcehHZ.js +41 -0
  197. package/build/server/chunks/DeleteProject-BXZcehHZ.js.map +1 -0
  198. package/build/server/chunks/Effect-BJtLR-6l.js +46 -0
  199. package/build/server/chunks/Effect-BJtLR-6l.js.map +1 -0
  200. package/build/server/chunks/{FeatureCard-BQOY6gJQ.js → FeatureCard-Bb50FEfp.js} +4 -4
  201. package/build/server/chunks/{FeatureCard-BQOY6gJQ.js.map → FeatureCard-Bb50FEfp.js.map} +1 -1
  202. package/build/server/chunks/{FeatureJson-Bv-qiOSf.js → FeatureJson-DYvMEAub.js} +2 -2
  203. package/build/server/chunks/{FeatureJson-Bv-qiOSf.js.map → FeatureJson-DYvMEAub.js.map} +1 -1
  204. package/build/server/chunks/{FeatureTransforms-UWDHmWEg.js → FeatureTransforms-B0aI_CJD.js} +10 -3
  205. package/build/server/chunks/FeatureTransforms-B0aI_CJD.js.map +1 -0
  206. package/build/server/chunks/{ManageTagsDialog-DBxA3tM2.js → ManageTagsDialog-D5xbAVNB.js} +5 -5
  207. package/build/server/chunks/ManageTagsDialog-D5xbAVNB.js.map +1 -0
  208. package/build/server/chunks/{ProgressBar-CfhccQ83.js → ProgressBar-CUC2EZqG.js} +3 -3
  209. package/build/server/chunks/ProgressBar-CUC2EZqG.js.map +1 -0
  210. package/build/server/chunks/{ProjectsIndex-CoDrvRya.js → ProjectsIndex-FgIu9dBp.js} +135 -14
  211. package/build/server/chunks/ProjectsIndex-FgIu9dBp.js.map +1 -0
  212. package/build/server/chunks/{RenameTag-BuWLMl1m.js → RenameTag-DWIIR4Bx.js} +3 -6
  213. package/build/server/chunks/RenameTag-DWIIR4Bx.js.map +1 -0
  214. package/build/server/chunks/ScenarioApplier-YPKECfZe.js +55 -0
  215. package/build/server/chunks/ScenarioApplier-YPKECfZe.js.map +1 -0
  216. package/build/server/chunks/SimulatorEngine-DM1F9nCO.js +1391 -0
  217. package/build/server/chunks/SimulatorEngine-DM1F9nCO.js.map +1 -0
  218. package/build/server/chunks/StateValue-BBjWox8f.js +105 -0
  219. package/build/server/chunks/StateValue-BBjWox8f.js.map +1 -0
  220. package/build/server/chunks/{TagDotStrip-B1XQ0m0Y.js → TagDotStrip-0rn-IJVE.js} +4 -4
  221. package/build/server/chunks/TagDotStrip-0rn-IJVE.js.map +1 -0
  222. package/build/server/chunks/{TagFilterSelect-DbO0Qduh.js → TagFilterSelect-Dbu-7Dg4.js} +5 -5
  223. package/build/server/chunks/{TagFilterSelect-DbO0Qduh.js.map → TagFilterSelect-Dbu-7Dg4.js.map} +1 -1
  224. package/build/server/chunks/{TagPalette-CtMNYCmu.js → TagPalette-CpdTiC_7.js} +101 -9
  225. package/build/server/chunks/TagPalette-CpdTiC_7.js.map +1 -0
  226. package/build/server/chunks/TransitionCatalog-CYXUANy6.js +271 -0
  227. package/build/server/chunks/TransitionCatalog-CYXUANy6.js.map +1 -0
  228. package/build/server/chunks/_layout.svelte-pSSG85WT.js +1342 -0
  229. package/build/server/chunks/_layout.svelte-pSSG85WT.js.map +1 -0
  230. package/build/server/chunks/{_page.svelte-BKTveFAj.js → _page.svelte-BNH3szkk.js} +22 -17
  231. package/build/server/chunks/{_page.svelte-BKTveFAj.js.map → _page.svelte-BNH3szkk.js.map} +1 -1
  232. package/build/server/chunks/_page.svelte-BcuGvUt1.js +37 -0
  233. package/build/server/chunks/{_page.svelte-B7hT3P8E.js.map → _page.svelte-BcuGvUt1.js.map} +1 -1
  234. package/build/server/chunks/_page.svelte-BoOMG5Y0.js +37 -0
  235. package/build/server/chunks/{_page.svelte-De508ek8.js.map → _page.svelte-BoOMG5Y0.js.map} +1 -1
  236. package/build/server/chunks/{_page.svelte-BqSC-1vK.js → _page.svelte-C4PRh_wP.js} +104 -54
  237. package/build/server/chunks/_page.svelte-C4PRh_wP.js.map +1 -0
  238. package/build/server/chunks/_page.svelte-Cqn34NXy.js +74 -0
  239. package/build/server/chunks/_page.svelte-Cqn34NXy.js.map +1 -0
  240. package/build/server/chunks/{_page.svelte-B1s7jxaQ.js → _page.svelte-DSCeOGv7.js} +15 -10
  241. package/build/server/chunks/_page.svelte-DSCeOGv7.js.map +1 -0
  242. package/build/server/chunks/_page.svelte-DqWdGt48.js +182 -0
  243. package/build/server/chunks/_page.svelte-DqWdGt48.js.map +1 -0
  244. package/build/server/chunks/_page.svelte-DsQHSEl4.js +49 -0
  245. package/build/server/chunks/_page.svelte-DsQHSEl4.js.map +1 -0
  246. package/build/server/chunks/{_page.svelte-BKKCa9H5.js → _page.svelte-Uioz8hsG.js} +18 -11
  247. package/build/server/chunks/{_page.svelte-BKKCa9H5.js.map → _page.svelte-Uioz8hsG.js.map} +1 -1
  248. package/build/server/chunks/{_page.svelte-Zf9H4KOP.js → _page.svelte-p38jot9e.js} +81 -478
  249. package/build/server/chunks/_page.svelte-p38jot9e.js.map +1 -0
  250. package/build/server/chunks/{_page.svelte-BtI2zZ_Z.js → _page.svelte-yN5kzgJ9.js} +251 -447
  251. package/build/server/chunks/_page.svelte-yN5kzgJ9.js.map +1 -0
  252. package/build/server/chunks/{_server.ts-DsbbVoOn.js → _server.ts-1CtrHhte.js} +4 -4
  253. package/build/server/chunks/{_server.ts-DsbbVoOn.js.map → _server.ts-1CtrHhte.js.map} +1 -1
  254. package/build/server/chunks/{_server.ts-CWvU15tL.js → _server.ts-71Qx1lQb.js} +4 -4
  255. package/build/server/chunks/{_server.ts-CWvU15tL.js.map → _server.ts-71Qx1lQb.js.map} +1 -1
  256. package/build/server/chunks/_server.ts-BAyekGHB.js +961 -0
  257. package/build/server/chunks/_server.ts-BAyekGHB.js.map +1 -0
  258. package/build/server/chunks/{_server.ts-BihpbxOW.js → _server.ts-BLWhU22T.js} +4 -4
  259. package/build/server/chunks/{_server.ts-BihpbxOW.js.map → _server.ts-BLWhU22T.js.map} +1 -1
  260. package/build/server/chunks/{_server.ts-YnfXkeMJ.js → _server.ts-C7EVZVxv.js} +22 -13
  261. package/build/server/chunks/_server.ts-C7EVZVxv.js.map +1 -0
  262. package/build/server/chunks/{_server.ts-vcaqdwxS.js → _server.ts-CGjYuLmo.js} +12 -7
  263. package/build/server/chunks/_server.ts-CGjYuLmo.js.map +1 -0
  264. package/build/server/chunks/{_server.ts-Dy5zQHe2.js → _server.ts-CX6H8fSE.js} +8 -31
  265. package/build/server/chunks/_server.ts-CX6H8fSE.js.map +1 -0
  266. package/build/server/chunks/{_server.ts-BuoQ02BW.js → _server.ts-CyEdTCLr.js} +4 -4
  267. package/build/server/chunks/{_server.ts-BuoQ02BW.js.map → _server.ts-CyEdTCLr.js.map} +1 -1
  268. package/build/server/chunks/_server.ts-DKVTM9Pj.js +77 -0
  269. package/build/server/chunks/_server.ts-DKVTM9Pj.js.map +1 -0
  270. package/build/server/chunks/{_server.ts-0uNTZKwF.js → _server.ts-Dip65hLJ.js} +15 -9
  271. package/build/server/chunks/_server.ts-Dip65hLJ.js.map +1 -0
  272. package/build/server/chunks/{_server.ts-D4EO0VHu.js → _server.ts-Dm0tCs2i.js} +5 -5
  273. package/build/server/chunks/{_server.ts-D4EO0VHu.js.map → _server.ts-Dm0tCs2i.js.map} +1 -1
  274. package/build/server/chunks/{_server.ts-BIBWjQI-.js → _server.ts-DsYwK_uW.js} +4 -4
  275. package/build/server/chunks/{_server.ts-BIBWjQI-.js.map → _server.ts-DsYwK_uW.js.map} +1 -1
  276. package/build/server/chunks/{_server.ts-DDa0Nk_S.js → _server.ts-RCEgegYU.js} +4 -4
  277. package/build/server/chunks/{_server.ts-DDa0Nk_S.js.map → _server.ts-RCEgegYU.js.map} +1 -1
  278. package/build/server/chunks/_server.ts-XOLAT4dd.js +146 -0
  279. package/build/server/chunks/_server.ts-XOLAT4dd.js.map +1 -0
  280. package/build/server/chunks/_server.ts-afh_zLVi.js +69 -0
  281. package/build/server/chunks/_server.ts-afh_zLVi.js.map +1 -0
  282. package/build/server/chunks/{browserContainer-CNX7ANld.js → browserContainer-BdldtueJ.js} +71 -1378
  283. package/build/server/chunks/browserContainer-BdldtueJ.js.map +1 -0
  284. package/build/server/chunks/buildSearchDocs-Cyfrnw9G.js +337 -0
  285. package/build/server/chunks/buildSearchDocs-Cyfrnw9G.js.map +1 -0
  286. package/build/server/chunks/{builderModeStore.svelte-ihupr-3p.js → builderModeStore.svelte-BEZMQEqn.js} +223 -11
  287. package/build/server/chunks/builderModeStore.svelte-BEZMQEqn.js.map +1 -0
  288. package/build/server/chunks/client-C9Cat4DK.js +51 -0
  289. package/build/server/chunks/{client-DfpLcAZ9.js.map → client-C9Cat4DK.js.map} +1 -1
  290. package/build/server/chunks/{error.svelte-C35KOpru.js → error.svelte-CzVR_A6P.js} +5 -5
  291. package/build/server/chunks/{error.svelte-C35KOpru.js.map → error.svelte-CzVR_A6P.js.map} +1 -1
  292. package/build/server/chunks/featureQueueContext-DuXpyTdC.js +32 -0
  293. package/build/server/chunks/featureQueueContext-DuXpyTdC.js.map +1 -0
  294. package/build/server/chunks/featureStore.svelte-DHZf88gu.js +162 -0
  295. package/build/server/chunks/featureStore.svelte-DHZf88gu.js.map +1 -0
  296. package/build/server/chunks/{projectsStore.svelte-QDz5PchX.js → featuresStore.svelte-bUyQBg1-.js} +95 -3
  297. package/build/server/chunks/featuresStore.svelte-bUyQBg1-.js.map +1 -0
  298. package/build/server/chunks/{hooks.server-Rv301GTB.js → hooks.server-y3jdg_sB.js} +6 -2
  299. package/build/server/chunks/hooks.server-y3jdg_sB.js.map +1 -0
  300. package/build/server/chunks/humanize-CkCPfeWi.js +53 -0
  301. package/build/server/chunks/humanize-CkCPfeWi.js.map +1 -0
  302. package/build/server/chunks/{index-server-7H0jzj0M.js → index-server-DvBux_Gf.js} +47 -2
  303. package/build/server/chunks/{index-server-7H0jzj0M.js.map → index-server-DvBux_Gf.js.map} +1 -1
  304. package/build/server/chunks/{internal-BPKrFkK1.js → internal-BFt8yDlf.js} +5 -5
  305. package/build/server/chunks/{internal-BPKrFkK1.js.map → internal-BFt8yDlf.js.map} +1 -1
  306. package/build/server/chunks/projectBundleClient-BtvWPh87.js +168 -0
  307. package/build/server/chunks/projectBundleClient-BtvWPh87.js.map +1 -0
  308. package/build/server/chunks/projectContextStore.svelte-jRJGJZ42.js +141 -0
  309. package/build/server/chunks/projectContextStore.svelte-jRJGJZ42.js.map +1 -0
  310. package/build/server/chunks/projectFeaturesStore.svelte-BwNEtDIL.js +87 -0
  311. package/build/server/chunks/projectFeaturesStore.svelte-BwNEtDIL.js.map +1 -0
  312. package/build/server/chunks/projectStore.svelte-BNuLNxk_.js +230 -0
  313. package/build/server/chunks/projectStore.svelte-BNuLNxk_.js.map +1 -0
  314. package/build/server/chunks/{reconcile-Dv7jS3C8.js → reconcile-CVG2LSlW.js} +54 -267
  315. package/build/server/chunks/reconcile-CVG2LSlW.js.map +1 -0
  316. package/build/server/chunks/registry-DqAn_hVE.js +21 -0
  317. package/build/server/chunks/registry-DqAn_hVE.js.map +1 -0
  318. package/build/server/chunks/{snapshotRepository-BPXCjX92.js → snapshotRepository-8f-2wTrb.js} +30 -5
  319. package/build/server/chunks/snapshotRepository-8f-2wTrb.js.map +1 -0
  320. package/build/server/chunks/{state-CpLVNZq7.js → state-CZZtjXLE.js} +3 -3
  321. package/build/server/chunks/{state-CpLVNZq7.js.map → state-CZZtjXLE.js.map} +1 -1
  322. package/build/server/chunks/{sync-DZ3dn761.js → sync-Bn6eSUhC.js} +3 -3
  323. package/build/server/chunks/{sync-DZ3dn761.js.map → sync-Bn6eSUhC.js.map} +1 -1
  324. package/build/server/chunks/{syncBridge-BwXzPdjJ.js → syncAwareRepositories-DvUjq5Q6.js} +27 -3
  325. package/build/server/chunks/syncAwareRepositories-DvUjq5Q6.js.map +1 -0
  326. package/build/server/chunks/{tagPaletteStore.svelte-DfZOBvgY.js → tagPaletteStore.svelte-C71bdzDl.js} +4 -4
  327. package/build/server/chunks/{tagPaletteStore.svelte-DfZOBvgY.js.map → tagPaletteStore.svelte-C71bdzDl.js.map} +1 -1
  328. package/build/server/index.js +2 -2
  329. package/build/server/index.js.map +1 -1
  330. package/build/server/manifest.js +74 -29
  331. package/build/server/manifest.js.map +1 -1
  332. package/cli/README.md +70 -2
  333. package/cli/commands/check.ts +190 -0
  334. package/cli/commands/ci.ts +71 -0
  335. package/cli/commands/coverage-ingest.ts +112 -0
  336. package/cli/commands/dashboard.ts +14 -0
  337. package/cli/commands/init.ts +26 -0
  338. package/cli/commands/scenarios-adapter.ts +96 -0
  339. package/cli/commands/theme.ts +62 -0
  340. package/cli/scenarios/adapter-scaffold.ts +99 -0
  341. package/cli/scenarios/codegen.ts +7 -1
  342. package/cli/scenarios/results.ts +85 -0
  343. package/cli/skills/unspa-audit/SKILL.md +19 -0
  344. package/cli/skills/unspa-edit/SKILL.md +20 -3
  345. package/cli/skills/unspa-implement/SKILL.md +28 -0
  346. package/cli/unspa.ts +136 -2
  347. package/cli/util/context-files.ts +18 -2
  348. package/cli/util/theme.ts +34 -0
  349. package/mcp-server/bin.ts +104 -104
  350. package/mcp-server/migrate-defaults.ts +164 -164
  351. package/mcp-server/repo-link.ts +142 -134
  352. package/mcp-server/resources/guide.ts +24 -4
  353. package/mcp-server/resources/operations.ts +3 -0
  354. package/mcp-server/seed-snapshots.ts +22 -22
  355. package/mcp-server/server.ts +8 -4
  356. package/mcp-server/sync-aware-repos.ts +79 -79
  357. package/mcp-server/sync-notifier.ts +180 -127
  358. package/mcp-server/tools/_codegen.ts +115 -115
  359. package/mcp-server/tools/_entity_builders.ts +30 -0
  360. package/mcp-server/tools/_shared.ts +210 -210
  361. package/mcp-server/tools/action.ts +210 -210
  362. package/mcp-server/tools/batch.ts +29 -5
  363. package/mcp-server/tools/effect.ts +139 -135
  364. package/mcp-server/tools/entity.ts +132 -132
  365. package/mcp-server/tools/entityField.ts +132 -132
  366. package/mcp-server/tools/event.ts +116 -116
  367. package/mcp-server/tools/feature.ts +264 -264
  368. package/mcp-server/tools/invariant.ts +275 -275
  369. package/mcp-server/tools/persona.ts +141 -141
  370. package/mcp-server/tools/project.ts +500 -391
  371. package/mcp-server/tools/reachabilityGoal.ts +97 -0
  372. package/mcp-server/tools/read.ts +526 -483
  373. package/mcp-server/tools/reorder.ts +114 -114
  374. package/mcp-server/tools/resource.ts +194 -194
  375. package/mcp-server/tools/rule.ts +302 -302
  376. package/mcp-server/tools/scenario.ts +4 -1
  377. package/mcp-server/tools/specGaps.ts +221 -221
  378. package/mcp-server/tools/state.ts +10 -2
  379. package/mcp-server/tools/surface.ts +102 -102
  380. package/mcp-server/tools/transition.ts +96 -96
  381. package/mcp-server/tools/verification.ts +131 -0
  382. package/package.json +15 -2
  383. package/src/app.css +208 -9
  384. package/src/app.html +15 -1
  385. package/src/features/behavior-model/application/ports/FeatureRepository.ts +16 -16
  386. package/src/features/behavior-model/application/use-cases/CreateFeature.ts +24 -24
  387. package/src/features/behavior-model/application/use-cases/DeleteFeature.ts +8 -8
  388. package/src/features/behavior-model/application/use-cases/GetFeature.ts +9 -9
  389. package/src/features/behavior-model/application/use-cases/ListFeatures.ts +10 -10
  390. package/src/features/behavior-model/application/use-cases/MutateFeature.ts +90 -90
  391. package/src/features/behavior-model/application/use-cases/SaveFeature.ts +31 -31
  392. package/src/features/behavior-model/domain/entities/Entity.ts +45 -45
  393. package/src/features/behavior-model/domain/entities/EventDefinition.ts +35 -35
  394. package/src/features/behavior-model/domain/entities/Feature.ts +10 -0
  395. package/src/features/behavior-model/domain/entities/Persona.ts +33 -33
  396. package/src/features/behavior-model/domain/entities/ReachabilityGoal.ts +39 -0
  397. package/src/features/behavior-model/domain/entities/Resource.ts +54 -54
  398. package/src/features/behavior-model/domain/entities/Scenario.ts +15 -0
  399. package/src/features/behavior-model/domain/entities/StateDefinition.ts +13 -0
  400. package/src/features/behavior-model/domain/entities/Surface.ts +75 -75
  401. package/src/features/behavior-model/domain/entities/index.ts +9 -9
  402. package/src/features/behavior-model/domain/services/BehaviorGraphModel.ts +556 -0
  403. package/src/features/behavior-model/domain/services/DerivedState.ts +67 -0
  404. package/src/features/behavior-model/domain/services/EffectApplier.ts +112 -3
  405. package/src/features/behavior-model/domain/services/EffectiveEntities.ts +166 -166
  406. package/src/features/behavior-model/domain/services/EntityDeducer.ts +83 -83
  407. package/src/features/behavior-model/domain/services/EventCatalog.ts +141 -141
  408. package/src/features/behavior-model/domain/services/FeatureExpressionNormalizer.ts +43 -5
  409. package/src/features/behavior-model/domain/services/FeatureSharedStateNormalizer.ts +24 -3
  410. package/src/features/behavior-model/domain/services/FeatureTransforms.ts +33 -0
  411. package/src/features/behavior-model/domain/services/FeatureValidator.ts +124 -16
  412. package/src/features/behavior-model/domain/services/PersonaApplier.ts +39 -39
  413. package/src/features/behavior-model/domain/services/ResourceDeducer.ts +64 -64
  414. package/src/features/behavior-model/domain/services/ResourceUsage.ts +79 -79
  415. package/src/features/behavior-model/domain/services/ScenarioApplier.ts +40 -40
  416. package/src/features/behavior-model/domain/services/SharedStateDefinitions.ts +32 -32
  417. package/src/features/behavior-model/domain/services/StatePathReferences.ts +249 -217
  418. package/src/features/behavior-model/domain/services/TransitionCatalog.ts +173 -173
  419. package/src/features/behavior-model/domain/value-objects/Effect.ts +100 -3
  420. package/src/features/behavior-model/domain/value-objects/EntityFieldType.ts +57 -57
  421. package/src/features/behavior-model/domain/value-objects/Expression.ts +22 -2
  422. package/src/features/behavior-model/domain/value-objects/ParameterType.ts +57 -57
  423. package/src/features/behavior-model/domain/value-objects/Resource.ts +210 -210
  424. package/src/features/behavior-model/domain/value-objects/RuleCategory.ts +57 -57
  425. package/src/features/behavior-model/domain/value-objects/RuleCondition.ts +52 -1
  426. package/src/features/behavior-model/domain/value-objects/SimulationClock.ts +35 -0
  427. package/src/features/behavior-model/domain/value-objects/ids.ts +2 -0
  428. package/src/features/behavior-model/infrastructure/io/FeatureJson.ts +89 -89
  429. package/src/features/behavior-model/infrastructure/persistence/HttpFeatureRepository.ts +43 -43
  430. package/src/features/behavior-model/infrastructure/persistence/JsonFolderFeatureRepository.ts +10 -0
  431. package/src/features/behavior-model/infrastructure/persistence/snapshot-discovery.ts +76 -76
  432. package/src/features/behavior-model/infrastructure/seed/seedStorefront.ts +967 -967
  433. package/src/features/behavior-model/presentation/adapters/VisBehaviorGraphRenderer.ts +501 -0
  434. package/src/features/behavior-model/presentation/components/ActionEditor.svelte +683 -682
  435. package/src/features/behavior-model/presentation/components/ActionsEditor.svelte +232 -232
  436. package/src/features/behavior-model/presentation/components/BehaviorGraph.svelte +568 -0
  437. package/src/features/behavior-model/presentation/components/EffectEditor.svelte +168 -168
  438. package/src/features/behavior-model/presentation/components/EntityEditor.svelte +241 -248
  439. package/src/features/behavior-model/presentation/components/EntityFieldRow.svelte +180 -181
  440. package/src/features/behavior-model/presentation/components/EntityManager.svelte +252 -251
  441. package/src/features/behavior-model/presentation/components/EventsManager.svelte +373 -372
  442. package/src/features/behavior-model/presentation/components/FeatureEditor.svelte +396 -348
  443. package/src/features/behavior-model/presentation/components/FeatureHeader.svelte +165 -148
  444. package/src/features/behavior-model/presentation/components/FeatureHealthStrip.svelte +110 -110
  445. package/src/features/behavior-model/presentation/components/HistoryPanel.svelte +154 -154
  446. package/src/features/behavior-model/presentation/components/NewFeatureForm.svelte +66 -66
  447. package/src/features/behavior-model/presentation/components/ParameterNameSelect.svelte +84 -84
  448. package/src/features/behavior-model/presentation/components/ParametersEditor.svelte +411 -411
  449. package/src/features/behavior-model/presentation/components/PersonaEditor.svelte +244 -244
  450. package/src/features/behavior-model/presentation/components/PersonasManager.svelte +130 -130
  451. package/src/features/behavior-model/presentation/components/ReachabilityGoalEditor.svelte +230 -0
  452. package/src/features/behavior-model/presentation/components/ReachabilityGoalsEditor.svelte +86 -0
  453. package/src/features/behavior-model/presentation/components/ResourcesManager.svelte +291 -290
  454. package/src/features/behavior-model/presentation/components/ScenariosEditor.svelte +496 -496
  455. package/src/features/behavior-model/presentation/components/StateDefinitionsEditor.svelte +356 -356
  456. package/src/features/behavior-model/presentation/components/SurfaceEntitiesView.svelte +88 -88
  457. package/src/features/behavior-model/presentation/components/SurfaceInvariantsEditor.svelte +76 -76
  458. package/src/features/behavior-model/presentation/components/SurfaceList.svelte +300 -300
  459. package/src/features/behavior-model/presentation/components/SurfaceMetaEditor.svelte +158 -156
  460. package/src/features/behavior-model/presentation/components/SurfacePanel.svelte +198 -198
  461. package/src/features/behavior-model/presentation/components/SurfacePersonasView.svelte +122 -122
  462. package/src/features/behavior-model/presentation/components/SurfaceResourcesView.svelte +113 -113
  463. package/src/features/behavior-model/presentation/components/SurfaceRulesEditor.svelte +69 -69
  464. package/src/features/behavior-model/presentation/components/TransitionsManager.svelte +322 -321
  465. package/src/features/behavior-model/presentation/context/featureQueueContext.ts +78 -0
  466. package/src/features/behavior-model/presentation/stores/editorStore.svelte.ts +132 -131
  467. package/src/features/behavior-model/presentation/stores/featureStore.svelte.ts +177 -177
  468. package/src/features/behavior-model/presentation/stores/featuresStore.svelte.ts +98 -98
  469. package/src/features/behavior-model/presentation/view-models/BehaviorGraphTheme.ts +44 -0
  470. package/src/features/behavior-model/presentation/view-models/factories.ts +181 -132
  471. package/src/features/builder-mode/domain/BuilderModeDashboard.ts +7 -1
  472. package/src/features/builder-mode/presentation/components/BuilderModeDashboard.svelte +78 -16
  473. package/src/features/builder-mode/presentation/components/BuilderTagChips.svelte +25 -0
  474. package/src/features/builder-mode/presentation/stores/builderModeStore.svelte.ts +247 -3
  475. package/src/features/domains/infrastructure/persistence/JsonFolderDomainRepository.ts +9 -0
  476. package/src/features/global-search/application/use-cases/LoadSearchIndex.ts +70 -0
  477. package/src/features/global-search/domain/SearchDoc.ts +111 -0
  478. package/src/features/global-search/domain/buildSearchDocs.ts +483 -0
  479. package/src/features/global-search/domain/searchNav.ts +58 -0
  480. package/src/features/global-search/domain/searchScoring.ts +81 -0
  481. package/src/features/global-search/infrastructure/adapters/defaultSearchHost.ts +28 -0
  482. package/src/features/global-search/presentation/components/GlobalSearch.svelte +262 -0
  483. package/src/features/global-search/presentation/ports/SearchHostPorts.ts +41 -0
  484. package/src/features/global-search/presentation/searchKindMeta.ts +108 -0
  485. package/src/features/global-search/presentation/stores/globalSearchStore.svelte.ts +171 -0
  486. package/src/features/implementation-queue/presentation/components/FloatingQueueWidget.svelte +264 -0
  487. package/src/features/implementation-queue/presentation/stores/globalQueueStore.svelte.ts +172 -0
  488. package/src/features/implementation-status/application/ports/ImplementationStatusRepository.ts +8 -8
  489. package/src/features/implementation-status/application/use-cases/GetImplementationStatus.ts +8 -8
  490. package/src/features/implementation-status/domain/ApplyCapturedToSpec.ts +323 -322
  491. package/src/features/implementation-status/domain/FieldDiff.ts +238 -236
  492. package/src/features/implementation-status/infrastructure/persistence/InMemoryImplementationStatusRepository.ts +21 -21
  493. package/src/features/implementation-status/presentation/components/ImplementationStatusPanel.svelte +831 -831
  494. package/src/features/implementation-status/presentation/stores/implementationStatusStore.svelte.ts +97 -97
  495. package/src/features/library/application/use-cases/ApplyBlueprintsToFeature.ts +33 -33
  496. package/src/features/library/domain/services/BlueprintApplier.ts +94 -94
  497. package/src/features/library/infrastructure/blueprints/auth/ResetPasswordBlueprint.ts +332 -332
  498. package/src/features/library/infrastructure/blueprints/auth/SignInBlueprint.ts +281 -281
  499. package/src/features/library/infrastructure/blueprints/auth/SignUpBlueprint.ts +299 -299
  500. package/src/features/library/infrastructure/blueprints/auth/VerifyEmailBlueprint.ts +288 -288
  501. package/src/features/library/infrastructure/blueprints/auth/shared.ts +146 -146
  502. package/src/features/library/infrastructure/blueprints/commerce/CartBlueprint.ts +222 -222
  503. package/src/features/library/infrastructure/blueprints/commerce/CatalogBlueprint.ts +190 -190
  504. package/src/features/library/infrastructure/blueprints/commerce/CheckoutBlueprint.ts +322 -322
  505. package/src/features/library/infrastructure/blueprints/commerce/OrderConfirmationBlueprint.ts +172 -172
  506. package/src/features/library/infrastructure/blueprints/commerce/ProductDetailsBlueprint.ts +290 -290
  507. package/src/features/library/infrastructure/blueprints/content/ReviewsBlueprint.ts +392 -392
  508. package/src/features/library/infrastructure/blueprints/onboarding/OnboardingWizardBlueprint.ts +344 -344
  509. package/src/features/library/infrastructure/blueprints/utility/CanvasBlueprint.ts +419 -419
  510. package/src/features/library/infrastructure/blueprints/utility/CookieConsentBlueprint.ts +195 -195
  511. package/src/features/library/infrastructure/blueprints/utility/NotFoundBlueprint.ts +86 -86
  512. package/src/features/library/infrastructure/blueprints/utility/SearchPaletteBlueprint.ts +192 -192
  513. package/src/features/library/infrastructure/blueprints/utility/StoreLocatorBlueprint.ts +221 -221
  514. package/src/features/library/infrastructure/blueprints/utility/TaskBoardBlueprint.ts +196 -196
  515. package/src/features/maturity/application/use-cases/ScoreFeature.ts +7 -7
  516. package/src/features/maturity/domain/MaturityReport.ts +70 -70
  517. package/src/features/maturity/domain/MaturityScorer.ts +1001 -985
  518. package/src/features/maturity/presentation/components/MaturityPanel.svelte +376 -372
  519. package/src/features/mcp-tools/application/tools/dryRunSimulate.ts +24 -24
  520. package/src/features/mcp-tools/application/tools/findStateReferences.ts +19 -19
  521. package/src/features/mcp-tools/application/tools/generateTypes.ts +0 -1
  522. package/src/features/mcp-tools/application/tools/getAction.ts +165 -165
  523. package/src/features/mcp-tools/application/tools/getFeature.ts +5 -5
  524. package/src/features/mcp-tools/application/tools/getFeatureIndex.ts +79 -79
  525. package/src/features/mcp-tools/application/tools/getNeighborhood.ts +319 -319
  526. package/src/features/mcp-tools/application/tools/getSurface.ts +86 -86
  527. package/src/features/mcp-tools/application/tools/index.ts +56 -56
  528. package/src/features/mcp-tools/application/tools/listActions.ts +49 -49
  529. package/src/features/mcp-tools/application/tools/listFeatures.ts +7 -7
  530. package/src/features/mcp-tools/application/tools/scoreFeature.ts +153 -153
  531. package/src/features/projects/application/ports/ProjectRepository.ts +14 -14
  532. package/src/features/projects/application/use-cases/AddFeatureToProject.ts +23 -23
  533. package/src/features/projects/application/use-cases/CreateProject.ts +16 -16
  534. package/src/features/projects/application/use-cases/FindProjectContainingFeature.ts +23 -23
  535. package/src/features/projects/application/use-cases/GetProjectAggregate.ts +131 -131
  536. package/src/features/projects/application/use-cases/ImportProjectBundle.ts +45 -0
  537. package/src/features/projects/application/use-cases/MoveFeatureInProject.ts +36 -36
  538. package/src/features/projects/application/use-cases/RemoveFeatureFromProject.ts +23 -23
  539. package/src/features/projects/domain/entities/Project.ts +12 -0
  540. package/src/features/projects/domain/services/InheritedFromProject.ts +130 -130
  541. package/src/features/projects/infrastructure/persistence/JsonFolderProjectRepository.ts +9 -0
  542. package/src/features/projects/presentation/components/ProjectCard.svelte +27 -8
  543. package/src/features/projects/presentation/components/ProjectEditor.svelte +23 -19
  544. package/src/features/projects/presentation/components/ProjectFeaturesPanel.svelte +433 -433
  545. package/src/features/projects/presentation/components/ProjectsIndex.svelte +54 -10
  546. package/src/features/projects/presentation/stores/projectContextStore.svelte.ts +170 -170
  547. package/src/features/projects/presentation/stores/projectFeaturesStore.svelte.ts +114 -114
  548. package/src/features/projects/presentation/stores/projectStore.svelte.ts +265 -266
  549. package/src/features/projects/presentation/stores/projectsStore.svelte.ts +134 -134
  550. package/src/features/simulator/application/use-cases/RunScenarios.ts +27 -1
  551. package/src/features/simulator/application/use-cases/SimulateAction.ts +47 -47
  552. package/src/features/simulator/domain/SimulationResult.ts +79 -79
  553. package/src/features/simulator/domain/SimulatorEngine.ts +43 -9
  554. package/src/features/simulator/domain/StateExplorer.ts +369 -0
  555. package/src/features/simulator/domain/SurfaceReachability.ts +130 -0
  556. package/src/features/simulator/presentation/components/ParameterInputs.svelte +277 -277
  557. package/src/features/simulator/presentation/components/PersonaPicker.svelte +52 -52
  558. package/src/features/simulator/presentation/components/ScenarioPicker.svelte +42 -45
  559. package/src/features/simulator/presentation/components/SidePanel.svelte +170 -170
  560. package/src/features/simulator/presentation/components/SimulationResultView.svelte +394 -394
  561. package/src/features/simulator/presentation/components/SimulatorPanel.svelte +293 -293
  562. package/src/features/simulator/presentation/components/StateInspector.svelte +101 -101
  563. package/src/features/simulator/presentation/stores/simulatorStore.svelte.ts +268 -268
  564. package/src/features/tutorial/presentation/components/CodeBlock.svelte +5 -1
  565. package/src/features/verification/application/ports/BehavioralIndexReader.ts +12 -0
  566. package/src/features/verification/application/use-cases/VerifyFeatures.ts +151 -0
  567. package/src/features/verification/domain/DriftReport.ts +37 -0
  568. package/src/features/verification/domain/EventCoherenceReport.ts +27 -0
  569. package/src/features/verification/domain/IndexedImplementation.ts +27 -0
  570. package/src/features/verification/domain/VerificationReport.ts +59 -0
  571. package/src/features/verification/domain/VerificationThresholds.ts +52 -0
  572. package/src/features/verification/domain/VerificationVerdict.ts +43 -0
  573. package/src/features/verification/domain/aggregateVerdict.ts +244 -0
  574. package/src/features/verification/domain/analyzeEventCoherence.ts +43 -0
  575. package/src/features/verification/domain/detectDrift.ts +166 -0
  576. package/src/features/verification/domain/verifiedCoverage.ts +37 -0
  577. package/src/features/verification/infrastructure/persistence/FileBehavioralIndexReader.ts +81 -0
  578. package/src/features/verification/infrastructure/persistence/StaticBehavioralIndexReader.ts +15 -0
  579. package/src/features/verification/presentation/components/VerifyPanel.svelte +74 -0
  580. package/src/features/verification/presentation/stores/verificationStore.svelte.ts +64 -0
  581. package/src/hooks.server.ts +11 -1
  582. package/src/lib/server/openLocalDirectory.ts +40 -0
  583. package/src/lib/server/searchIndex.ts +161 -0
  584. package/src/lib/server/snapshotRepository.ts +37 -37
  585. package/src/lib/server/sync/YDocManager.ts +391 -391
  586. package/src/lib/server/sync/historyStore.ts +276 -276
  587. package/src/lib/server/sync/wsServer.ts +1 -1
  588. package/src/lib/sync/protocol.ts +147 -147
  589. package/src/lib/sync/roomId.ts +33 -33
  590. package/src/lib/theme/registry.ts +77 -0
  591. package/src/lib/theme/themeStore.svelte.ts +64 -0
  592. package/src/routes/+layout.svelte +288 -30
  593. package/src/routes/api/domains/[id]/+server.ts +7 -3
  594. package/src/routes/api/projects/[id]/+server.ts +14 -4
  595. package/src/routes/api/projects/import/+server.ts +16 -38
  596. package/src/routes/api/search-index/+server.ts +16 -0
  597. package/src/routes/api/snapshots/[id]/+server.ts +56 -44
  598. package/src/routes/api/snapshots/[id]/implementation-status/+server.ts +13 -13
  599. package/src/routes/api/snapshots/[id]/verify/+server.ts +37 -0
  600. package/src/routes/api/sync/reload/+server.ts +157 -157
  601. package/src/routes/api/system/hub-directory/+server.ts +24 -0
  602. package/src/routes/features/+page.svelte +484 -484
  603. package/src/routes/features/[id]/+page.svelte +55 -49
  604. package/src/routes/features/[id]/graph/+page.svelte +39 -0
  605. package/src/routes/features/[id]/verify/+page.svelte +89 -0
  606. package/src/routes/mcp/+page.svelte +16 -1
  607. package/src/routes/projects/[id]/+page.svelte +70 -70
  608. package/src/routes/projects/[id]/graph/+page.svelte +79 -0
  609. package/src/routes/tutorial/+page.svelte +3 -2
  610. package/src/shared/infrastructure/browserContainer.ts +61 -61
  611. package/src/shared/presentation/components/KebabMenu.svelte +95 -0
  612. package/src/shared/presentation/components/MenuItem.svelte +29 -0
  613. package/src/shared/presentation/components/ProgressBar.svelte +1 -1
  614. package/src/shared/presentation/toast/SyncToast.svelte +14 -3
  615. package/src/shared/presentation/toast/viewLinkResolver.ts +32 -0
  616. package/static/lyriks_logo.svg +148 -0
  617. package/vite.config.ts +47 -47
  618. package/build/client/_app/immutable/assets/0.DFMDYAU9.css +0 -1
  619. package/build/client/_app/immutable/assets/0.DFMDYAU9.css.br +0 -0
  620. package/build/client/_app/immutable/assets/0.DFMDYAU9.css.gz +0 -0
  621. package/build/client/_app/immutable/assets/9.nv0I59TU.css.gz +0 -0
  622. package/build/client/_app/immutable/chunks/BO66rBOa2.js +0 -1
  623. package/build/client/_app/immutable/chunks/BO66rBOa2.js.br +0 -0
  624. package/build/client/_app/immutable/chunks/BO66rBOa2.js.gz +0 -0
  625. package/build/client/_app/immutable/chunks/BOrLmFwJ.js.br +0 -0
  626. package/build/client/_app/immutable/chunks/BOrLmFwJ.js.gz +0 -0
  627. package/build/client/_app/immutable/chunks/BfMYiIUi.js.br +0 -0
  628. package/build/client/_app/immutable/chunks/BfMYiIUi.js.gz +0 -0
  629. package/build/client/_app/immutable/chunks/Bp2_Vghh.js +0 -1
  630. package/build/client/_app/immutable/chunks/Bp2_Vghh.js.br +0 -0
  631. package/build/client/_app/immutable/chunks/Bp2_Vghh.js.gz +0 -0
  632. package/build/client/_app/immutable/chunks/Bp8HpEPe2.js +0 -4
  633. package/build/client/_app/immutable/chunks/Bp8HpEPe2.js.br +0 -0
  634. package/build/client/_app/immutable/chunks/Bp8HpEPe2.js.gz +0 -0
  635. package/build/client/_app/immutable/chunks/C8rRKIXT.js +0 -1
  636. package/build/client/_app/immutable/chunks/C8rRKIXT.js.br +0 -0
  637. package/build/client/_app/immutable/chunks/C8rRKIXT.js.gz +0 -0
  638. package/build/client/_app/immutable/chunks/CJjJLwzv2.js +0 -1
  639. package/build/client/_app/immutable/chunks/CJjJLwzv2.js.br +0 -0
  640. package/build/client/_app/immutable/chunks/CJjJLwzv2.js.gz +0 -0
  641. package/build/client/_app/immutable/chunks/CxyLMlpt2.js.br +0 -0
  642. package/build/client/_app/immutable/chunks/CxyLMlpt2.js.gz +0 -0
  643. package/build/client/_app/immutable/chunks/D6jhrpTg.js +0 -1
  644. package/build/client/_app/immutable/chunks/D6jhrpTg.js.br +0 -0
  645. package/build/client/_app/immutable/chunks/D6jhrpTg.js.gz +0 -0
  646. package/build/client/_app/immutable/chunks/D8YEa1po.js +0 -1
  647. package/build/client/_app/immutable/chunks/D8YEa1po.js.br +0 -0
  648. package/build/client/_app/immutable/chunks/D8YEa1po.js.gz +0 -0
  649. package/build/client/_app/immutable/chunks/D9dKmajw.js +0 -1
  650. package/build/client/_app/immutable/chunks/D9dKmajw.js.br +0 -0
  651. package/build/client/_app/immutable/chunks/D9dKmajw.js.gz +0 -0
  652. package/build/client/_app/immutable/chunks/DBJWcC6Y.js +0 -1
  653. package/build/client/_app/immutable/chunks/DBJWcC6Y.js.br +0 -0
  654. package/build/client/_app/immutable/chunks/DBJWcC6Y.js.gz +0 -0
  655. package/build/client/_app/immutable/chunks/DHoA038D.js +0 -1
  656. package/build/client/_app/immutable/chunks/DHoA038D.js.br +0 -2
  657. package/build/client/_app/immutable/chunks/DHoA038D.js.gz +0 -0
  658. package/build/client/_app/immutable/chunks/DKgYpi6_.js +0 -1
  659. package/build/client/_app/immutable/chunks/DKgYpi6_.js.br +0 -0
  660. package/build/client/_app/immutable/chunks/DKgYpi6_.js.gz +0 -0
  661. package/build/client/_app/immutable/chunks/DatGSObE.js +0 -1
  662. package/build/client/_app/immutable/chunks/DatGSObE.js.br +0 -0
  663. package/build/client/_app/immutable/chunks/DatGSObE.js.gz +0 -0
  664. package/build/client/_app/immutable/chunks/Dg0acPpT.js +0 -1
  665. package/build/client/_app/immutable/chunks/Dg0acPpT.js.br +0 -0
  666. package/build/client/_app/immutable/chunks/Dg0acPpT.js.gz +0 -0
  667. package/build/client/_app/immutable/chunks/DjWKKtqp.js +0 -1
  668. package/build/client/_app/immutable/chunks/DjWKKtqp.js.br +0 -1
  669. package/build/client/_app/immutable/chunks/DjWKKtqp.js.gz +0 -0
  670. package/build/client/_app/immutable/chunks/Dq0DUAz1.js +0 -1
  671. package/build/client/_app/immutable/chunks/Dq0DUAz1.js.br +0 -0
  672. package/build/client/_app/immutable/chunks/Dq0DUAz1.js.gz +0 -0
  673. package/build/client/_app/immutable/chunks/HKLi1Yz3.js +0 -1
  674. package/build/client/_app/immutable/chunks/HKLi1Yz3.js.br +0 -0
  675. package/build/client/_app/immutable/chunks/HKLi1Yz3.js.gz +0 -0
  676. package/build/client/_app/immutable/chunks/N7PXjlRH.js +0 -1
  677. package/build/client/_app/immutable/chunks/N7PXjlRH.js.br +0 -0
  678. package/build/client/_app/immutable/chunks/N7PXjlRH.js.gz +0 -0
  679. package/build/client/_app/immutable/chunks/hpWJNn0t2.js +0 -2
  680. package/build/client/_app/immutable/chunks/hpWJNn0t2.js.br +0 -0
  681. package/build/client/_app/immutable/chunks/hpWJNn0t2.js.gz +0 -0
  682. package/build/client/_app/immutable/chunks/iQu0D9Ux.js +0 -1
  683. package/build/client/_app/immutable/chunks/iQu0D9Ux.js.br +0 -0
  684. package/build/client/_app/immutable/chunks/iQu0D9Ux.js.gz +0 -0
  685. package/build/client/_app/immutable/entry/app.CLgh6Mx_.js +0 -2
  686. package/build/client/_app/immutable/entry/app.CLgh6Mx_.js.br +0 -0
  687. package/build/client/_app/immutable/entry/app.CLgh6Mx_.js.gz +0 -0
  688. package/build/client/_app/immutable/entry/start.D5GPCQZD.js +0 -1
  689. package/build/client/_app/immutable/entry/start.D5GPCQZD.js.br +0 -0
  690. package/build/client/_app/immutable/entry/start.D5GPCQZD.js.gz +0 -0
  691. package/build/client/_app/immutable/nodes/0.BOoI-hsu.js +0 -4
  692. package/build/client/_app/immutable/nodes/0.BOoI-hsu.js.br +0 -0
  693. package/build/client/_app/immutable/nodes/0.BOoI-hsu.js.gz +0 -0
  694. package/build/client/_app/immutable/nodes/1.KYdA6ppX.js.br +0 -2
  695. package/build/client/_app/immutable/nodes/1.KYdA6ppX.js.gz +0 -0
  696. package/build/client/_app/immutable/nodes/2.DBz20KgG.js.br +0 -0
  697. package/build/client/_app/immutable/nodes/2.DBz20KgG.js.gz +0 -0
  698. package/build/client/_app/immutable/nodes/3.19DIoFtw.js +0 -1
  699. package/build/client/_app/immutable/nodes/3.19DIoFtw.js.br +0 -0
  700. package/build/client/_app/immutable/nodes/3.19DIoFtw.js.gz +0 -0
  701. package/build/client/_app/immutable/nodes/4.BvMzqBJj.js +0 -3
  702. package/build/client/_app/immutable/nodes/4.BvMzqBJj.js.br +0 -0
  703. package/build/client/_app/immutable/nodes/4.BvMzqBJj.js.gz +0 -0
  704. package/build/client/_app/immutable/nodes/5.Dq6obSGG.js +0 -42
  705. package/build/client/_app/immutable/nodes/5.Dq6obSGG.js.br +0 -0
  706. package/build/client/_app/immutable/nodes/5.Dq6obSGG.js.gz +0 -0
  707. package/build/client/_app/immutable/nodes/6.BOHISqs-.js +0 -5
  708. package/build/client/_app/immutable/nodes/6.BOHISqs-.js.br +0 -0
  709. package/build/client/_app/immutable/nodes/6.BOHISqs-.js.gz +0 -0
  710. package/build/client/_app/immutable/nodes/7.CemgNJfw.js.br +0 -0
  711. package/build/client/_app/immutable/nodes/7.CemgNJfw.js.gz +0 -0
  712. package/build/client/_app/immutable/nodes/8.DejSfIYh.js +0 -5
  713. package/build/client/_app/immutable/nodes/8.DejSfIYh.js.br +0 -0
  714. package/build/client/_app/immutable/nodes/8.DejSfIYh.js.gz +0 -0
  715. package/build/client/_app/immutable/nodes/9.CMW6a2Lg.js.br +0 -0
  716. package/build/client/_app/immutable/nodes/9.CMW6a2Lg.js.gz +0 -0
  717. package/build/server/chunks/0-C_o0oz-N.js +0 -15
  718. package/build/server/chunks/0-C_o0oz-N.js.map +0 -1
  719. package/build/server/chunks/1-DPpKAKXV.js +0 -9
  720. package/build/server/chunks/2-AlfFqtL1.js +0 -9
  721. package/build/server/chunks/2-AlfFqtL1.js.map +0 -1
  722. package/build/server/chunks/3-vbjUt_51.js +0 -16
  723. package/build/server/chunks/3-vbjUt_51.js.map +0 -1
  724. package/build/server/chunks/4-BNow4x6D.js +0 -16
  725. package/build/server/chunks/4-BNow4x6D.js.map +0 -1
  726. package/build/server/chunks/5-D7OCJpxD.js +0 -9
  727. package/build/server/chunks/5-D7OCJpxD.js.map +0 -1
  728. package/build/server/chunks/6-QQ7r8Rd5.js +0 -9
  729. package/build/server/chunks/7-CbPLGaIG.js +0 -9
  730. package/build/server/chunks/7-CbPLGaIG.js.map +0 -1
  731. package/build/server/chunks/8-CVO-E-sf.js +0 -9
  732. package/build/server/chunks/8-CVO-E-sf.js.map +0 -1
  733. package/build/server/chunks/9-DxT1baO5.js +0 -9
  734. package/build/server/chunks/9-DxT1baO5.js.map +0 -1
  735. package/build/server/chunks/FeatureTransforms-UWDHmWEg.js.map +0 -1
  736. package/build/server/chunks/FeatureValidator-B8qEjAUW.js.map +0 -1
  737. package/build/server/chunks/ManageTagsDialog-DBxA3tM2.js.map +0 -1
  738. package/build/server/chunks/ProgressBar-CfhccQ83.js.map +0 -1
  739. package/build/server/chunks/ProjectsIndex-CoDrvRya.js.map +0 -1
  740. package/build/server/chunks/RenameTag-BuWLMl1m.js.map +0 -1
  741. package/build/server/chunks/TagDotStrip-B1XQ0m0Y.js.map +0 -1
  742. package/build/server/chunks/TagPalette-CtMNYCmu.js.map +0 -1
  743. package/build/server/chunks/_layout.svelte-BREws55o.js +0 -616
  744. package/build/server/chunks/_layout.svelte-BREws55o.js.map +0 -1
  745. package/build/server/chunks/_page.svelte-B1s7jxaQ.js.map +0 -1
  746. package/build/server/chunks/_page.svelte-B7hT3P8E.js +0 -29
  747. package/build/server/chunks/_page.svelte-BqSC-1vK.js.map +0 -1
  748. package/build/server/chunks/_page.svelte-BtI2zZ_Z.js.map +0 -1
  749. package/build/server/chunks/_page.svelte-De508ek8.js +0 -29
  750. package/build/server/chunks/_page.svelte-Zf9H4KOP.js.map +0 -1
  751. package/build/server/chunks/_server.ts-0uNTZKwF.js.map +0 -1
  752. package/build/server/chunks/_server.ts-DcZPhyhK.js +0 -59
  753. package/build/server/chunks/_server.ts-DcZPhyhK.js.map +0 -1
  754. package/build/server/chunks/_server.ts-Dy5zQHe2.js.map +0 -1
  755. package/build/server/chunks/_server.ts-YnfXkeMJ.js.map +0 -1
  756. package/build/server/chunks/_server.ts-vcaqdwxS.js.map +0 -1
  757. package/build/server/chunks/browserContainer-CNX7ANld.js.map +0 -1
  758. package/build/server/chunks/builderModeStore.svelte-ihupr-3p.js.map +0 -1
  759. package/build/server/chunks/client-DfpLcAZ9.js +0 -24
  760. package/build/server/chunks/featuresStore.svelte-DR1gYZyu.js +0 -98
  761. package/build/server/chunks/featuresStore.svelte-DR1gYZyu.js.map +0 -1
  762. package/build/server/chunks/hooks.server-Rv301GTB.js.map +0 -1
  763. package/build/server/chunks/identityStore.svelte-IIvW2_3b.js +0 -59
  764. package/build/server/chunks/identityStore.svelte-IIvW2_3b.js.map +0 -1
  765. package/build/server/chunks/projectsStore.svelte-QDz5PchX.js.map +0 -1
  766. package/build/server/chunks/reconcile-Dv7jS3C8.js.map +0 -1
  767. package/build/server/chunks/snapshotRepository-BPXCjX92.js.map +0 -1
  768. package/build/server/chunks/syncBridge-BwXzPdjJ.js.map +0 -1
  769. package/src/features/implementation-queue/presentation/components/QueuePanel.svelte +0 -204
  770. package/src/features/implementation-queue/presentation/stores/queueStore.svelte.ts +0 -143
  771. /package/build/client/_app/immutable/assets/{9.nv0I59TU.css → 12.nv0I59TU.css} +0 -0
  772. /package/build/client/_app/immutable/assets/{9.nv0I59TU.css.br → 12.nv0I59TU.css.br} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-BAyekGHB.js","sources":["../../../.svelte-kit/adapter-node/chunks/RunScenarios.js","../../../.svelte-kit/adapter-node/entries/endpoints/api/snapshots/_id_/verify/_server.ts.js"],"sourcesContent":["import { i as advanceClock } from \"./StateValue.js\";\nimport { a as evaluateCondition, o as fillDefaults, t as simulate } from \"./SimulatorEngine.js\";\nimport { i as applyPersonaToSnapshot, n as applyScenarioToSnapshot, r as applyPersonaToParameters, t as applyScenarioToParameters } from \"./ScenarioApplier.js\";\n//#region src/features/simulator/application/use-cases/RunScenarios.ts\n/**\n* Evaluate a scenario's expectedAssertions against a post-simulation snapshot.\n* Shared by the subject action and by each multi-step step. On a `blocked`\n* status every assertion is reported `held: null, skipped: true`: comparing\n* \"state after success\" to a snapshot where no success effects ran is\n* meaningless, so the runner skips explicitly instead of silently evaluating\n* against the untouched snapshot.\n*/\nvar evaluateAssertions = (assertions, status, snapshot, params) => assertions.map((a) => {\n\tif (status === \"blocked\") return {\n\t\tpath: String(a.path),\n\t\toperator: a.operator,\n\t\theld: null,\n\t\tskipped: true,\n\t\t...a.description ? { description: a.description } : {}\n\t};\n\tconst rawPath = a.path;\n\tif (typeof rawPath !== \"string\" || rawPath.length === 0) return {\n\t\tpath: String(a.path),\n\t\toperator: a.operator,\n\t\theld: false,\n\t\t...a.description ? { description: a.description } : {}\n\t};\n\tconst held = evaluateCondition({\n\t\tleft: a.path,\n\t\toperator: a.operator,\n\t\tright: a.value\n\t}, snapshot, params);\n\treturn {\n\t\tpath: rawPath,\n\t\toperator: a.operator,\n\t\theld,\n\t\t...a.description ? { description: a.description } : {}\n\t};\n});\nvar runOne = (surface, action, scenario, feature, projectFeatures) => {\n\tconst persona = scenario.personaId !== void 0 ? feature.personas.find((p) => p.id === scenario.personaId) ?? null : null;\n\tif (scenario.personaId !== void 0 && persona === null) throw new Error(`Scenario ${scenario.id} references unknown personaId \"${String(scenario.personaId)}\"`);\n\tconst personaSnapshot = persona ? applyPersonaToSnapshot(persona, {}) : {};\n\tconst personaParams = persona ? applyPersonaToParameters(persona, action, {}) : {};\n\tconst baseSnapshot = applyScenarioToSnapshot(scenario, personaSnapshot);\n\tconst stepResults = [];\n\tlet snapshot = baseSnapshot;\n\tfor (const [index, step] of (scenario.steps ?? []).entries()) {\n\t\tconst stepSurface = step.surfaceId === void 0 ? surface : feature.surfaces.find((s) => s.id === step.surfaceId);\n\t\tconst stepAction = stepSurface?.actions.find((a) => a.id === step.actionId);\n\t\tif (!stepSurface || !stepAction) throw new Error(`Scenario ${scenario.id} step ${index} references unknown ${!stepSurface ? `surfaceId \"${String(step.surfaceId)}\"` : `actionId \"${String(step.actionId)}\"`}`);\n\t\tconst stepPersonaParams = persona ? applyPersonaToParameters(persona, stepAction, {}) : {};\n\t\tconst stepParamNames = new Set(stepAction.parameters.map((p) => p.name));\n\t\tconst stepOverrideParams = {};\n\t\tfor (const ov of step.parameterOverrides) if (stepParamNames.has(ov.parameterName)) stepOverrideParams[ov.parameterName] = ov.value;\n\t\tconst stepParams = {\n\t\t\t...stepPersonaParams,\n\t\t\t...stepOverrideParams\n\t\t};\n\t\tif (step.timeAdvance !== void 0 && step.timeAdvance !== 0) snapshot = advanceClock(snapshot, step.timeAdvance);\n\t\tconst stepResult = simulate({\n\t\t\tsurface: stepSurface,\n\t\t\taction: stepAction,\n\t\t\tsnapshot,\n\t\t\tparameters: stepParams,\n\t\t\tfeatureInvariants: feature.featureInvariants,\n\t\t\tfeature,\n\t\t\t...projectFeatures ? { projectFeatures } : {}\n\t\t});\n\t\tsnapshot = stepResult.nextState;\n\t\tconst stepStatus = stepResult.status === \"blocked\" ? \"blocked\" : \"success\";\n\t\tconst stepExpected = step.expectedStatus ?? \"success\";\n\t\tconst stepStatusMatches = stepStatus === stepExpected;\n\t\tconst stepFilled = fillDefaults(stepAction.parameters, stepParams);\n\t\tconst stepAssertions = evaluateAssertions(step.expectedAssertions ?? [], stepStatus, stepResult.nextState, stepFilled);\n\t\tconst stepAssertionsHold = stepAssertions.every((a) => a.skipped || a.held);\n\t\tconst stepPass = stepStatusMatches && stepAssertionsHold;\n\t\tconst stepFailedAssertions = stepAssertions.filter((a) => !a.skipped && !a.held).length;\n\t\tstepResults.push({\n\t\t\tindex,\n\t\t\tsurfaceId: stepSurface.id,\n\t\t\tactionId: stepAction.id,\n\t\t\tactionName: stepAction.name,\n\t\t\tdescription: step.description ?? null,\n\t\t\tactualStatus: stepStatus,\n\t\t\texpectedStatus: stepExpected,\n\t\t\tstatusMatches: stepStatusMatches,\n\t\t\tassertions: stepAssertions,\n\t\t\tparameterErrors: stepResult.parameterErrors,\n\t\t\tinvariantViolations: stepResult.invariantViolations,\n\t\t\tpass: stepPass,\n\t\t\tsummary: stepPass ? `pass. ${stepStatus}` : !stepStatusMatches ? `status was ${stepStatus} but expected ${stepExpected}` : `${stepFailedAssertions} assertion${stepFailedAssertions === 1 ? \"\" : \"s\"} did not hold`\n\t\t});\n\t}\n\tconst scenarioParams = applyScenarioToParameters(scenario, action, {});\n\tconst baseParams = {\n\t\t...personaParams,\n\t\t...scenarioParams\n\t};\n\tif (scenario.timeAdvance !== void 0 && scenario.timeAdvance !== 0) snapshot = advanceClock(snapshot, scenario.timeAdvance);\n\tconst result = simulate({\n\t\tsurface,\n\t\taction,\n\t\tsnapshot,\n\t\tparameters: baseParams,\n\t\tfeatureInvariants: feature.featureInvariants,\n\t\tfeature,\n\t\t...projectFeatures ? { projectFeatures } : {}\n\t});\n\tconst filledParams = fillDefaults(action.parameters, baseParams);\n\tconst finalSnapshot = result.nextState;\n\tconst actualStatus = result.status === \"blocked\" ? \"blocked\" : \"success\";\n\tconst assertions = evaluateAssertions(scenario.expectedAssertions ?? [], actualStatus, finalSnapshot, filledParams);\n\tconst expectedStatus = scenario.expectedStatus ?? null;\n\tconst statusMatches = expectedStatus === null || expectedStatus === actualStatus;\n\tconst assertionsHold = assertions.every((a) => a.skipped || a.held);\n\tconst silentSkipFail = assertions.length > 0 && assertions.every((a) => a.skipped) && expectedStatus !== \"blocked\";\n\tconst transitionCheck = scenario.expectedTransition === void 0 ? null : actualStatus === \"blocked\" ? {\n\t\texpected: scenario.expectedTransition,\n\t\tactual: result.transition,\n\t\tmatches: true\n\t} : {\n\t\texpected: scenario.expectedTransition,\n\t\tactual: result.transition,\n\t\tmatches: scenario.expectedTransition === result.transition\n\t};\n\tconst transitionOk = transitionCheck === null || transitionCheck.matches;\n\tconst stepsPass = stepResults.every((s) => s.pass);\n\tconst firstFailedStep = stepResults.find((s) => !s.pass);\n\tconst pass = stepsPass && statusMatches && assertionsHold && transitionOk && !silentSkipFail;\n\tconst failedAssertionCount = assertions.filter((a) => !a.skipped && !a.held).length;\n\tconst paramErrorBlurb = result.parameterErrors.length > 0 ? ` (parameter validation rejected: ${result.parameterErrors.map((e) => `${e.parameterName}. ${e.reason}`).join(\"; \")})` : \"\";\n\tconst invariantBlurb = result.invariantViolations.length > 0 ? ` (invariant violations: ${result.invariantViolations.map((v) => v.invariantName).join(\", \")})` : \"\";\n\tconst evaluatedAssertionCount = assertions.filter((a) => !a.skipped).length;\n\tconst skippedAssertionCount = assertions.length - evaluatedAssertionCount;\n\tconst skippedBlurb = skippedAssertionCount > 0 ? `, ${skippedAssertionCount} skipped (action was blocked)` : \"\";\n\tconst transitionBlurb = transitionCheck && !transitionCheck.matches ? ` (transition went to ${String(transitionCheck.actual)} but expected ${String(transitionCheck.expected)})` : \"\";\n\tconst stepPrefix = stepResults.length > 0 ? `${stepResults.length} step${stepResults.length === 1 ? \"\" : \"s\"} ok, ` : \"\";\n\tconst summary = pass ? `pass. ${stepPrefix}${actualStatus}${evaluatedAssertionCount > 0 ? `, ${evaluatedAssertionCount} assertion${evaluatedAssertionCount === 1 ? \"\" : \"s\"} held` : \"\"}${skippedBlurb}` : `fail. ${!stepsPass && firstFailedStep ? `step ${firstFailedStep.index} (${firstFailedStep.actionName}): ${firstFailedStep.summary}` : !statusMatches ? `status was ${actualStatus} but expected ${expectedStatus}${paramErrorBlurb}${invariantBlurb}` : !transitionOk ? `transition mismatch${transitionBlurb}` : silentSkipFail ? `action was blocked so all ${assertions.length} assertion${assertions.length === 1 ? \"\" : \"s\"} skipped. Set expectedStatus:\"blocked\" if the block is intentional; otherwise fix the scenario so the action runs.${paramErrorBlurb}${invariantBlurb}` : `${failedAssertionCount}/${evaluatedAssertionCount} assertion${evaluatedAssertionCount === 1 ? \"\" : \"s\"} did not hold${invariantBlurb}`}`;\n\treturn {\n\t\tsurfaceId: surface.id,\n\t\tactionId: action.id,\n\t\tactionName: action.name,\n\t\tscenarioId: scenario.id,\n\t\tscenarioName: scenario.name,\n\t\tpersonaId: persona ? String(persona.id) : null,\n\t\tpersonaName: persona?.name ?? null,\n\t\tpass,\n\t\tactualStatus,\n\t\texpectedStatus,\n\t\tstatusMatches,\n\t\tassertions,\n\t\tsteps: stepResults,\n\t\ttransitionCheck,\n\t\tparameterErrors: result.parameterErrors,\n\t\tinvariantViolations: result.invariantViolations,\n\t\tsummary\n\t};\n};\n/**\n* Walk the feature, optionally filtered to one surface or one action,\n* and execute every scenario through the deterministic simulator. Reports\n* pass/fail per scenario so scenarios become executable specs (the report's\n* \"scenarios are decorative\" complaint).\n*/\nvar runScenariosUseCase = () => {\n\treturn (input) => {\n\t\tconst results = [];\n\t\tfor (const surface of input.feature.surfaces) {\n\t\t\tif (input.surfaceId && surface.id !== input.surfaceId) continue;\n\t\t\tfor (const action of surface.actions) {\n\t\t\t\tif (input.actionId && action.id !== input.actionId) continue;\n\t\t\t\tconst scenarios = action.scenarios ?? [];\n\t\t\t\tfor (const scenario of scenarios) results.push(runOne(surface, action, scenario, input.feature, input.projectFeatures));\n\t\t\t}\n\t\t}\n\t\tconst passed = results.filter((r) => r.pass).length;\n\t\treturn {\n\t\t\tfeatureId: String(input.feature.id),\n\t\t\tfeatureName: input.feature.name,\n\t\t\ttotal: results.length,\n\t\t\tpassed,\n\t\t\tfailed: results.length - passed,\n\t\t\tresults\n\t\t};\n\t};\n};\n//#endregion\nexport { runScenariosUseCase as t };\n","import { t as getSnapshotRepository } from \"../../../../../../chunks/snapshotRepository.js\";\nimport { a as evaluateCondition, i as recomputeDerived, n as buildInitialSnapshot, o as fillDefaults, r as collectDerivedDefs, s as scoreFeature, t as simulate, u as isEvolution } from \"../../../../../../chunks/SimulatorEngine.js\";\nimport { t as runScenariosUseCase } from \"../../../../../../chunks/RunScenarios.js\";\nimport { json } from \"@sveltejs/kit\";\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { join, parse, resolve } from \"node:path\";\n//#region src/features/simulator/domain/StateExplorer.ts\nvar DEFAULT_MAX_DEPTH = 6;\nvar DEFAULT_MAX_STATES = 2e3;\n/**\n* Order-stable canonical serialization for the visited set: object keys sorted,\n* array order preserved (order is semantically meaningful for lists).\n*/\nvar canonical = (v) => {\n\tif (v === void 0) return \"undefined\";\n\tif (v === null || typeof v !== \"object\") return JSON.stringify(v);\n\tif (Array.isArray(v)) return `[${v.map(canonical).join(\",\")}]`;\n\tconst obj = v;\n\treturn `{${Object.keys(obj).sort().map((k) => `${JSON.stringify(k)}:${canonical(obj[k])}`).join(\",\")}}`;\n};\nvar requiresUnsuppliableParam = (action) => action.parameters.some((p) => p.required && p.defaultValue === void 0);\nvar exploreStateSpace = (feature, options = {}, projectFeatures) => {\n\tconst maxDepth = options.maxDepth ?? DEFAULT_MAX_DEPTH;\n\tconst maxStates = options.maxStates ?? DEFAULT_MAX_STATES;\n\tconst allDefs = [...feature.surfaces.flatMap((s) => s.stateDefinitions), ...options.seedStateDefs ?? []];\n\tconst derivedDefs = collectDerivedDefs(allDefs);\n\tconst checkedInvariants = [...feature.featureInvariants ?? [], ...options.extraInvariants ?? []];\n\tconst moves = [];\n\tconst skippedActions = [];\n\tfor (const surface of feature.surfaces) for (const action of surface.actions) {\n\t\tif (isEvolution(action)) continue;\n\t\tif (requiresUnsuppliableParam(action)) {\n\t\t\tskippedActions.push({\n\t\t\t\tsurfaceId: String(surface.id),\n\t\t\t\tactionId: String(action.id),\n\t\t\t\tactionName: action.name,\n\t\t\t\treason: \"has a required parameter with no default; the explorer cannot invent a value\"\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tmoves.push({\n\t\t\tsurface,\n\t\t\taction\n\t\t});\n\t}\n\tconst goals = feature.reachabilityGoals ?? [];\n\tconst trackGoals = goals.length > 0;\n\tconst initial = recomputeDerived(buildInitialSnapshot(allDefs), derivedDefs);\n\tconst initialKey = canonical(initial);\n\tconst queue = [{\n\t\tsnapshot: initial,\n\t\tpath: [],\n\t\tkey: initialKey\n\t}];\n\tconst visited = new Set([initialKey]);\n\tconst firedActions = /* @__PURE__ */ new Set();\n\tconst violations = [];\n\tconst violationSeen = /* @__PURE__ */ new Set();\n\tlet statesExplored = 0;\n\tlet depthReached = 0;\n\tlet deadlockStates = 0;\n\tlet truncated = false;\n\tconst forwardEdges = /* @__PURE__ */ new Map();\n\tconst expandedPath = /* @__PURE__ */ new Map();\n\tconst goalSatisfyingKeys = /* @__PURE__ */ new Map();\n\tconst goalEvaluated = /* @__PURE__ */ new Set();\n\tfor (const goal of goals) goalSatisfyingKeys.set(String(goal.id), /* @__PURE__ */ new Set());\n\tconst recordGoalSatisfaction = (snapshot, key) => {\n\t\tif (goalEvaluated.has(key)) return;\n\t\tgoalEvaluated.add(key);\n\t\tfor (const goal of goals) if (evaluateCondition(goal.condition, snapshot)) goalSatisfyingKeys.get(String(goal.id)).add(key);\n\t};\n\tif (trackGoals) recordGoalSatisfaction(initial, initialKey);\n\twhile (queue.length > 0) {\n\t\tconst node = queue.shift();\n\t\tif (statesExplored >= maxStates) {\n\t\t\ttruncated = true;\n\t\t\tbreak;\n\t\t}\n\t\tstatesExplored += 1;\n\t\tdepthReached = Math.max(depthReached, node.path.length);\n\t\tif (trackGoals) expandedPath.set(node.key, node.path);\n\t\tlet anySuccess = false;\n\t\tfor (const move of moves) {\n\t\t\tconst params = fillDefaults(move.action.parameters, {});\n\t\t\tconst result = simulate({\n\t\t\t\tsurface: move.surface,\n\t\t\t\taction: move.action,\n\t\t\t\tsnapshot: node.snapshot,\n\t\t\t\tparameters: params,\n\t\t\t\tfeatureInvariants: checkedInvariants,\n\t\t\t\tfeature,\n\t\t\t\t...projectFeatures ? { projectFeatures } : {}\n\t\t\t});\n\t\t\tif (result.invariantViolations.length > 0) {\n\t\t\t\tfor (const v of result.invariantViolations) {\n\t\t\t\t\tconst key = `${v.invariantId}@${move.action.id}`;\n\t\t\t\t\tif (violationSeen.has(key)) continue;\n\t\t\t\t\tviolationSeen.add(key);\n\t\t\t\t\tviolations.push({\n\t\t\t\t\t\tinvariantId: String(v.invariantId),\n\t\t\t\t\t\tinvariantName: v.invariantName,\n\t\t\t\t\t\tsurfaceId: String(move.surface.id),\n\t\t\t\t\t\tactionId: String(move.action.id),\n\t\t\t\t\t\tactionName: move.action.name,\n\t\t\t\t\t\tpath: [...node.path, move.action.name]\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (result.status === \"success\") {\n\t\t\t\tfiredActions.add(String(move.action.id));\n\t\t\t\tanySuccess = true;\n\t\t\t\tconst key = canonical(result.nextState);\n\t\t\t\tif (trackGoals) {\n\t\t\t\t\tlet succ = forwardEdges.get(node.key);\n\t\t\t\t\tif (!succ) {\n\t\t\t\t\t\tsucc = /* @__PURE__ */ new Set();\n\t\t\t\t\t\tforwardEdges.set(node.key, succ);\n\t\t\t\t\t}\n\t\t\t\t\tsucc.add(key);\n\t\t\t\t\trecordGoalSatisfaction(result.nextState, key);\n\t\t\t\t}\n\t\t\t\tif (!visited.has(key) && node.path.length < maxDepth) {\n\t\t\t\t\tvisited.add(key);\n\t\t\t\t\tqueue.push({\n\t\t\t\t\t\tsnapshot: result.nextState,\n\t\t\t\t\t\tpath: [...node.path, move.action.name],\n\t\t\t\t\t\tkey\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!anySuccess) deadlockStates += 1;\n\t}\n\tconst deadActions = moves.filter((m) => !firedActions.has(String(m.action.id))).map((m) => ({\n\t\tsurfaceId: String(m.surface.id),\n\t\tactionId: String(m.action.id),\n\t\tactionName: m.action.name\n\t}));\n\tconst goalResults = goals.map((goal) => {\n\t\tconst satisfyingKeys = goalSatisfyingKeys.get(String(goal.id));\n\t\tif (goal.kind === \"reachable\") return {\n\t\t\tgoalId: String(goal.id),\n\t\t\tgoalName: goal.name,\n\t\t\tkind: goal.kind,\n\t\t\tsatisfied: satisfyingKeys.size > 0\n\t\t};\n\t\tconst reachesGoal = reverseReachable(satisfyingKeys, forwardEdges);\n\t\tlet trapPath = null;\n\t\tfor (const [key, path] of expandedPath) if (!reachesGoal.has(key) && (trapPath === null || path.length < trapPath.length)) trapPath = path;\n\t\treturn {\n\t\t\tgoalId: String(goal.id),\n\t\t\tgoalName: goal.name,\n\t\t\tkind: goal.kind,\n\t\t\tsatisfied: trapPath === null,\n\t\t\t...trapPath ? { counterexamplePath: trapPath } : {}\n\t\t};\n\t});\n\treturn {\n\t\tstatesExplored,\n\t\tdepthReached,\n\t\ttruncated,\n\t\tinvariantViolations: violations,\n\t\tdeadActions,\n\t\tdeadlockStates,\n\t\tskippedActions,\n\t\tgoalResults\n\t};\n};\n/**\n* The set of state keys that can reach any key in `targets` by following the\n* transition graph forward — computed by walking the graph BACKWARD from the\n* targets. Used for `always_reachable`: a state outside this set is one from\n* which the goal can no longer be reached (a liveness trap).\n*/\nvar reverseReachable = (targets, forwardEdges) => {\n\tconst reverse = /* @__PURE__ */ new Map();\n\tfor (const [from, tos] of forwardEdges) for (const to of tos) {\n\t\tconst preds = reverse.get(to);\n\t\tif (preds) preds.push(from);\n\t\telse reverse.set(to, [from]);\n\t}\n\tconst reached = new Set(targets);\n\tconst stack = [...targets];\n\twhile (stack.length > 0) {\n\t\tconst current = stack.pop();\n\t\tfor (const pred of reverse.get(current) ?? []) if (!reached.has(pred)) {\n\t\t\treached.add(pred);\n\t\t\tstack.push(pred);\n\t\t}\n\t}\n\treturn reached;\n};\n//#endregion\n//#region src/features/simulator/domain/SurfaceReachability.ts\nvar collectTransitionTarget = (effect, into) => {\n\tif (effect.type === \"transition_surface\") into.push(String(effect.target));\n};\n/** Every surface id this surface can navigate to, declared edges + effect edges. */\nvar outgoingTargets = (surface) => {\n\tconst targets = [];\n\tfor (const transition of surface.transitions) targets.push(String(transition.target));\n\tfor (const action of surface.actions) collectActionTargets(action, targets);\n\tfor (const rule of surface.rules) collectTransitionTarget(rule.effect, targets);\n\treturn targets;\n};\nvar collectActionTargets = (action, into) => {\n\tfor (const effect of action.effects) collectTransitionTarget(effect, into);\n\tfor (const effect of action.onBlockedEffects ?? []) collectTransitionTarget(effect, into);\n\tfor (const rule of action.rules) collectTransitionTarget(rule.effect, into);\n};\nvar analyzeSurfaceReachability = (feature) => {\n\tconst surfaces = feature.surfaces;\n\tif (surfaces.length === 0) return {\n\t\tentrySurfaceId: null,\n\t\treachableSurfaceIds: [],\n\t\tunreachableSurfaces: [],\n\t\tterminalSurfaces: []\n\t};\n\tconst surfaceIds = new Set(surfaces.map((s) => String(s.id)));\n\tconst edges = /* @__PURE__ */ new Map();\n\tfor (const surface of surfaces) edges.set(String(surface.id), outgoingTargets(surface).filter((t) => surfaceIds.has(t)));\n\tconst entry = String(surfaces[0].id);\n\tconst reachable = new Set([entry]);\n\tconst queue = [entry];\n\twhile (queue.length > 0) {\n\t\tconst current = queue.shift();\n\t\tfor (const next of edges.get(current) ?? []) if (!reachable.has(next)) {\n\t\t\treachable.add(next);\n\t\t\tqueue.push(next);\n\t\t}\n\t}\n\tconst unreachableSurfaces = [];\n\tconst terminalSurfaces = [];\n\tfor (const surface of surfaces) {\n\t\tconst id = String(surface.id);\n\t\tif (!reachable.has(id)) unreachableSurfaces.push({\n\t\t\tsurfaceId: id,\n\t\t\tsurfaceName: surface.name\n\t\t});\n\t\tif ((edges.get(id) ?? []).length === 0) terminalSurfaces.push({\n\t\t\tsurfaceId: id,\n\t\t\tsurfaceName: surface.name\n\t\t});\n\t}\n\treturn {\n\t\tentrySurfaceId: entry,\n\t\treachableSurfaceIds: [...reachable],\n\t\tunreachableSurfaces,\n\t\tterminalSurfaces\n\t};\n};\n//#endregion\n//#region src/features/verification/domain/VerificationVerdict.ts\nvar verdictPassed = (checks) => checks.every((c) => c.status !== \"fail\");\n//#endregion\n//#region src/features/verification/domain/aggregateVerdict.ts\nvar scenariosCheck = (scenarios, thresholds) => {\n\tif (scenarios.total === 0) return thresholds.requireScenarios ? {\n\t\tid: \"scenarios\",\n\t\tlabel: \"Scenarios\",\n\t\tstatus: \"fail\",\n\t\tdetail: \"no scenarios authored (required)\"\n\t} : {\n\t\tid: \"scenarios\",\n\t\tlabel: \"Scenarios\",\n\t\tstatus: \"warn\",\n\t\tdetail: \"no scenarios authored\"\n\t};\n\tif (scenarios.failed > thresholds.maxScenarioFailures) return {\n\t\tid: \"scenarios\",\n\t\tlabel: \"Scenarios\",\n\t\tstatus: \"fail\",\n\t\tdetail: `${scenarios.failed}/${scenarios.total} failing (max ${thresholds.maxScenarioFailures})`,\n\t\titems: scenarios.results.filter((r) => !r.pass).map((r) => `${r.actionName} › ${r.scenarioName}`)\n\t};\n\treturn {\n\t\tid: \"scenarios\",\n\t\tlabel: \"Scenarios\",\n\t\tstatus: \"pass\",\n\t\tdetail: `${scenarios.passed}/${scenarios.total} passing`\n\t};\n};\nvar invariantsCheck = (exploration, thresholds) => {\n\tif (exploration.invariantViolations.length === 0) return {\n\t\tid: \"invariants\",\n\t\tlabel: \"Invariants\",\n\t\tstatus: \"pass\",\n\t\tdetail: \"no reachable violation within bounds\"\n\t};\n\treturn {\n\t\tid: \"invariants\",\n\t\tlabel: \"Invariants\",\n\t\tstatus: thresholds.allowInvariantViolations ? \"warn\" : \"fail\",\n\t\tdetail: `${exploration.invariantViolations.length} reachable violation(s)`,\n\t\titems: exploration.invariantViolations.map((v) => `${v.invariantName} via [${v.path.join(\" → \")}]`),\n\t\ttraces: exploration.invariantViolations.map((v) => ({\n\t\t\tlabel: v.invariantName,\n\t\t\tpath: v.path,\n\t\t\tsurfaceId: v.surfaceId,\n\t\t\tactionId: v.actionId\n\t\t}))\n\t};\n};\nvar maturityCheck = (maturity, thresholds) => {\n\tif (thresholds.minMaturity <= 0) return {\n\t\tid: \"maturity\",\n\t\tlabel: \"Maturity\",\n\t\tstatus: \"pass\",\n\t\tdetail: `${maturity.percentage}% (no gate)`\n\t};\n\tconst passed = maturity.percentage >= thresholds.minMaturity;\n\treturn {\n\t\tid: \"maturity\",\n\t\tlabel: \"Maturity\",\n\t\tstatus: passed ? \"pass\" : \"fail\",\n\t\tdetail: `${maturity.percentage}% (min ${thresholds.minMaturity}%)`,\n\t\t...passed ? {} : { items: maturity.criticalIssues.slice(0, 10).map((i) => `${i.area}: ${i.message}`) }\n\t};\n};\nvar verifiedCheck = (coverage, thresholds) => {\n\tconst pct = coverage.total === 0 ? 100 : Math.round(coverage.verified / coverage.total * 100);\n\tif (thresholds.minVerified <= 0) return {\n\t\tid: \"verified\",\n\t\tlabel: \"Verified\",\n\t\tstatus: \"pass\",\n\t\tdetail: `${coverage.verified}/${coverage.total} action(s) proven against code (${pct}%, no gate)`\n\t};\n\treturn {\n\t\tid: \"verified\",\n\t\tlabel: \"Verified\",\n\t\tstatus: pct >= thresholds.minVerified ? \"pass\" : \"fail\",\n\t\tdetail: `${pct}% of actions proven against code (${coverage.verified}/${coverage.total}, min ${thresholds.minVerified}%)`\n\t};\n};\nvar reachabilityCheck = (reachability) => {\n\tif (reachability.unreachableSurfaces.length === 0) return {\n\t\tid: \"reachability\",\n\t\tlabel: \"Reachability\",\n\t\tstatus: \"pass\",\n\t\tdetail: \"every surface is reachable\"\n\t};\n\treturn {\n\t\tid: \"reachability\",\n\t\tlabel: \"Reachability\",\n\t\tstatus: \"warn\",\n\t\tdetail: `${reachability.unreachableSurfaces.length} surface(s) unreachable by navigation`,\n\t\titems: reachability.unreachableSurfaces.map((s) => s.surfaceName)\n\t};\n};\nvar livenessCheck = (exploration, thresholds) => {\n\tconst unmet = exploration.goalResults.filter((g) => !g.satisfied);\n\tif (unmet.length === 0) return {\n\t\tid: \"liveness\",\n\t\tlabel: \"Liveness\",\n\t\tstatus: \"pass\",\n\t\tdetail: `${exploration.goalResults.length} reachability goal(s) hold within bounds`\n\t};\n\treturn {\n\t\tid: \"liveness\",\n\t\tlabel: \"Liveness\",\n\t\tstatus: thresholds.failOnUnmetGoals ? \"fail\" : \"warn\",\n\t\tdetail: `${unmet.length} reachability goal(s) unmet`,\n\t\titems: unmet.map((g) => g.counterexamplePath && g.counterexamplePath.length > 0 ? `${g.goalName} (${g.kind}) — trap via [${g.counterexamplePath.join(\" → \")}]` : `${g.goalName} (${g.kind}) — never reached within bounds`),\n\t\ttraces: unmet.filter((g) => g.counterexamplePath && g.counterexamplePath.length > 0).map((g) => ({\n\t\t\tlabel: `${g.goalName} (${g.kind})`,\n\t\t\tpath: g.counterexamplePath ?? []\n\t\t}))\n\t};\n};\nvar deadActionsCheck = (exploration, thresholds) => {\n\tif (exploration.deadActions.length === 0) return {\n\t\tid: \"dead-actions\",\n\t\tlabel: \"Dead actions\",\n\t\tstatus: \"pass\",\n\t\tdetail: \"none within bounds\"\n\t};\n\treturn {\n\t\tid: \"dead-actions\",\n\t\tlabel: \"Dead actions\",\n\t\tstatus: thresholds.failOnDeadActions ? \"fail\" : \"warn\",\n\t\tdetail: `${exploration.deadActions.length} action(s) never fired within bounds`,\n\t\titems: exploration.deadActions.map((a) => a.actionName)\n\t};\n};\nvar aggregateChecks = (input) => {\n\tconst { scenarios, maturity, exploration, reachability, drift, deadHandlers, verifiedCoverage, thresholds } = input;\n\tconst checks = [scenariosCheck(scenarios, thresholds)];\n\tif (exploration) {\n\t\tchecks.push(invariantsCheck(exploration, thresholds));\n\t\tif (exploration.goalResults.length > 0) checks.push(livenessCheck(exploration, thresholds));\n\t\tchecks.push(deadActionsCheck(exploration, thresholds));\n\t\tif (exploration.deadlockStates > 0) checks.push({\n\t\t\tid: \"deadlocks\",\n\t\t\tlabel: \"Deadlocks\",\n\t\t\tstatus: \"warn\",\n\t\t\tdetail: `${exploration.deadlockStates} reachable state(s) with no enabled action (may be legitimate terminals)`\n\t\t});\n\t\tif (exploration.truncated) checks.push({\n\t\t\tid: \"bounds\",\n\t\t\tlabel: \"Search bounds\",\n\t\t\tstatus: \"warn\",\n\t\t\tdetail: \"model check truncated — findings are \\\"within bounds\\\", not a proof. Raise maxDepth/maxStates to widen.\"\n\t\t});\n\t}\n\tchecks.push(maturityCheck(maturity, thresholds));\n\tif (verifiedCoverage) checks.push(verifiedCheck(verifiedCoverage, thresholds));\n\tif (reachability) checks.push(reachabilityCheck(reachability));\n\tif (drift.length > 0) checks.push({\n\t\tid: \"drift\",\n\t\tlabel: \"Drift\",\n\t\tstatus: thresholds.allowDrift ? \"warn\" : \"fail\",\n\t\tdetail: `${drift.length} implementation(s) audited against an older spec`,\n\t\titems: drift.map((d) => `${d.key} (audited ${d.auditedSpecVersion}, now ${d.currentSpecVersion})`)\n\t});\n\tif (deadHandlers && deadHandlers.length > 0) checks.push({\n\t\tid: \"events\",\n\t\tlabel: \"Event wiring\",\n\t\tstatus: \"warn\",\n\t\tdetail: `${deadHandlers.length} handler(s) triggered by an event nothing in the project emits`,\n\t\titems: deadHandlers.map((h) => `${h.actionName} ← \"${h.event}\"`)\n\t});\n\treturn checks;\n};\nvar aggregateFeatureVerdict = (input) => {\n\tconst checks = aggregateChecks(input);\n\treturn {\n\t\tfeatureId: input.featureId,\n\t\tfeatureName: input.featureName,\n\t\tpassed: verdictPassed(checks),\n\t\tchecks\n\t};\n};\n//#endregion\n//#region src/features/verification/domain/analyzeEventCoherence.ts\n/**\n* Pure cross-feature event-coherence analysis. Collects every event emitted\n* anywhere in the cohort, then flags every handler whose triggering event is in\n* nobody's emit set. Evolution placeholders (empty bodies) are ignored on both\n* sides — they aren't committed behavior yet.\n*/\nvar analyzeEventCoherence = (features) => {\n\tconst emitted = /* @__PURE__ */ new Set();\n\tfor (const feature of features) for (const surface of feature.surfaces) for (const action of surface.actions) {\n\t\tif (isEvolution(action)) continue;\n\t\tfor (const event of action.emittedEvents) emitted.add(String(event));\n\t}\n\tconst deadHandlers = [];\n\tfor (const feature of features) for (const surface of feature.surfaces) for (const action of surface.actions) {\n\t\tif (isEvolution(action)) continue;\n\t\tconst trigger = action.triggeredByEvent;\n\t\tif (trigger && !emitted.has(String(trigger))) deadHandlers.push({\n\t\t\tfeatureId: String(feature.id),\n\t\t\tfeatureName: feature.name,\n\t\t\tsurfaceId: String(surface.id),\n\t\t\tactionId: String(action.id),\n\t\t\tactionName: action.name,\n\t\t\tevent: String(trigger)\n\t\t});\n\t}\n\treturn { deadHandlers };\n};\n//#endregion\n//#region src/features/verification/domain/detectDrift.ts\nvar buildIdentifierSets = (feature) => {\n\tconst surfaceIds = /* @__PURE__ */ new Set();\n\tconst actionIds = /* @__PURE__ */ new Set();\n\tconst statePaths = /* @__PURE__ */ new Set();\n\tconst ruleIds = /* @__PURE__ */ new Set();\n\tconst invariantIds = /* @__PURE__ */ new Set();\n\tconst transitionIds = /* @__PURE__ */ new Set();\n\tconst eventNames = /* @__PURE__ */ new Set();\n\tconst otherIds = /* @__PURE__ */ new Set();\n\tfor (const inv of feature.featureInvariants ?? []) invariantIds.add(String(inv.id));\n\tfor (const event of feature.events ?? []) eventNames.add(String(event.name));\n\tfor (const vs of feature.valueSets ?? []) otherIds.add(String(vs.id));\n\tfor (const persona of feature.personas ?? []) otherIds.add(String(persona.id));\n\tfor (const resource of feature.resources ?? []) otherIds.add(String(resource.id));\n\tfor (const entity of feature.entities ?? []) otherIds.add(String(entity.id));\n\tfor (const surface of feature.surfaces) {\n\t\tsurfaceIds.add(String(surface.id));\n\t\tfor (const transition of surface.transitions) transitionIds.add(String(transition.id));\n\t\tfor (const rule of surface.rules) ruleIds.add(String(rule.id));\n\t\tfor (const inv of surface.invariants) invariantIds.add(String(inv.id));\n\t\tfor (const def of surface.stateDefinitions) statePaths.add(String(def.path));\n\t\tfor (const action of surface.actions) {\n\t\t\tactionIds.add(String(action.id));\n\t\t\tfor (const rule of action.rules) ruleIds.add(String(rule.id));\n\t\t\tfor (const inv of action.invariants) invariantIds.add(String(inv.id));\n\t\t\tfor (const transition of action.transitions) transitionIds.add(String(transition.id));\n\t\t}\n\t}\n\treturn {\n\t\tsurfaceIds,\n\t\tactionIds,\n\t\tstatePaths,\n\t\truleIds,\n\t\tinvariantIds,\n\t\ttransitionIds,\n\t\teventNames,\n\t\totherIds\n\t};\n};\n/** Whether `suffix` names an entity of `type` in this feature. Unknown types fall back to any-kind. */\nvar owns = (sets, type, suffix) => {\n\tswitch (type) {\n\t\tcase \"surface\": return sets.surfaceIds.has(suffix);\n\t\tcase \"action\": return sets.actionIds.has(suffix);\n\t\tcase \"state\": return sets.statePaths.has(suffix);\n\t\tcase \"event\": return sets.eventNames.has(suffix);\n\t\tcase \"rule\":\n\t\tcase \"surface_rule\": return sets.ruleIds.has(suffix);\n\t\tcase \"invariant\":\n\t\tcase \"surface_invariant\": return sets.invariantIds.has(suffix);\n\t\tcase \"transition\": return sets.transitionIds.has(suffix);\n\t\tdefault: return sets.surfaceIds.has(suffix) || sets.actionIds.has(suffix) || sets.statePaths.has(suffix) || sets.eventNames.has(suffix) || sets.ruleIds.has(suffix) || sets.invariantIds.has(suffix) || sets.transitionIds.has(suffix) || sets.otherIds.has(suffix);\n\t}\n};\nvar detectDrift = (features, index) => {\n\tconst owners = features.map((feature) => ({\n\t\tfeature,\n\t\tsets: buildIdentifierSets(feature)\n\t}));\n\tconst stale = [];\n\tconst unversioned = [];\n\tconst orphans = [];\n\tlet checked = 0;\n\tfor (const entry of index) {\n\t\tif (entry.status === \"missing\") continue;\n\t\tconst sep = entry.key.indexOf(\":\");\n\t\tif (sep < 0) {\n\t\t\torphans.push({\n\t\t\t\tkey: entry.key,\n\t\t\t\treason: \"malformed key (expected \\\"<type>:<id-or-path>\\\")\"\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tconst type = entry.key.slice(0, sep);\n\t\tconst suffix = entry.key.slice(sep + 1);\n\t\tconst owner = owners.find((o) => owns(o.sets, type, suffix));\n\t\tif (!owner) {\n\t\t\torphans.push({\n\t\t\t\tkey: entry.key,\n\t\t\t\treason: \"no spec entity matches this key (renamed or removed?)\"\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tchecked += 1;\n\t\tif (!entry.auditedSpecVersion) {\n\t\t\tunversioned.push(entry.key);\n\t\t\tcontinue;\n\t\t}\n\t\tconst audited = Date.parse(entry.auditedSpecVersion);\n\t\tconst current = Date.parse(String(owner.feature.updatedAt));\n\t\tif (Number.isNaN(audited) || Number.isNaN(current)) {\n\t\t\tunversioned.push(entry.key);\n\t\t\tcontinue;\n\t\t}\n\t\tif (current > audited) stale.push({\n\t\t\tkey: entry.key,\n\t\t\tentitySuffix: suffix,\n\t\t\tfeatureId: String(owner.feature.id),\n\t\t\tfeatureName: owner.feature.name,\n\t\t\tstatus: entry.status,\n\t\t\tauditedSpecVersion: entry.auditedSpecVersion,\n\t\t\tcurrentSpecVersion: String(owner.feature.updatedAt)\n\t\t});\n\t}\n\treturn {\n\t\tstale,\n\t\tunversioned,\n\t\torphans,\n\t\tchecked\n\t};\n};\n//#endregion\n//#region src/features/verification/domain/verifiedCoverage.ts\nvar verifiedCoverageForFeature = (feature, index) => {\n\tconst verifiedActionIds = /* @__PURE__ */ new Set();\n\tfor (const entry of index) if (entry.verifiedAt && entry.key.startsWith(\"action:\")) verifiedActionIds.add(entry.key.slice(7));\n\tlet verified = 0;\n\tlet total = 0;\n\tfor (const surface of feature.surfaces) for (const action of surface.actions) {\n\t\tif (isEvolution(action)) continue;\n\t\ttotal += 1;\n\t\tif (verifiedActionIds.has(String(action.id))) verified += 1;\n\t}\n\treturn {\n\t\tverified,\n\t\ttotal\n\t};\n};\n//#endregion\n//#region src/features/verification/domain/VerificationThresholds.ts\nvar defaultThresholds = () => ({\n\tminMaturity: 0,\n\tmaxScenarioFailures: 0,\n\tallowInvariantViolations: false,\n\tfailOnDeadActions: false,\n\tallowDrift: true,\n\trequireScenarios: false,\n\tfailOnUnmetGoals: false,\n\tminVerified: 0\n});\nvar withThresholdDefaults = (partial = {}) => ({\n\t...defaultThresholds(),\n\t...partial\n});\n//#endregion\n//#region src/features/verification/application/use-cases/VerifyFeatures.ts\n/**\n* The verification spine as one composable use case: load the cohort, detect\n* spec→code drift across it once, then for each feature run the scenario suite,\n* score maturity, analyze navigation reachability, optionally model-check the\n* state space, and fold it all into a gated verdict.\n*\n* Pure orchestration — it composes deterministic domain functions and returns\n* data. No console, no process exit, no clock: the driving adapters (CLI / MCP)\n* own presentation and the exit code, which keeps this testable with fakes.\n*/\nvar verifyFeaturesUseCase = (deps) => {\n\tconst runScenarios = runScenariosUseCase();\n\treturn async (input = {}) => {\n\t\tconst thresholds = withThresholdDefaults(input.thresholds);\n\t\tconst ids = input.featureIds && input.featureIds.length > 0 ? [...input.featureIds] : (await deps.features.list()).map((s) => s.id);\n\t\tconst loaded = [];\n\t\tfor (const id of ids) {\n\t\t\tconst feature = await deps.features.get(id);\n\t\t\tif (feature) loaded.push(feature);\n\t\t}\n\t\tconst indexEntries = await deps.index.read();\n\t\tconst drift = detectDrift(loaded, indexEntries);\n\t\tconst eventCoherence = analyzeEventCoherence(loaded);\n\t\tconst explorerOptions = input.modelCheck === true ? {} : typeof input.modelCheck === \"object\" ? input.modelCheck : null;\n\t\tconst projectInvariants = input.projectInvariants ?? [];\n\t\tconst perFeature = loaded.map((feature) => {\n\t\t\tconst siblings = loaded.filter((f) => f.id !== feature.id);\n\t\t\tconst scenarios = runScenarios({\n\t\t\t\tfeature,\n\t\t\t\tprojectFeatures: siblings\n\t\t\t});\n\t\t\tconst maturity = scoreFeature(feature);\n\t\t\tconst reachability = analyzeSurfaceReachability(feature);\n\t\t\tconst exploration = explorerOptions !== null ? exploreStateSpace(feature, projectInvariants.length > 0 ? {\n\t\t\t\t...explorerOptions,\n\t\t\t\textraInvariants: projectInvariants,\n\t\t\t\tseedStateDefs: siblings.flatMap((f) => f.surfaces.flatMap((s) => s.stateDefinitions))\n\t\t\t} : explorerOptions, siblings) : void 0;\n\t\t\tconst featureDrift = drift.stale.filter((d) => d.featureId === String(feature.id));\n\t\t\tconst featureDeadHandlers = eventCoherence.deadHandlers.filter((h) => h.featureId === String(feature.id));\n\t\t\treturn {\n\t\t\t\tscenarios,\n\t\t\t\texploration,\n\t\t\t\tverdict: aggregateFeatureVerdict({\n\t\t\t\t\tfeatureId: String(feature.id),\n\t\t\t\t\tfeatureName: feature.name,\n\t\t\t\t\tscenarios,\n\t\t\t\t\tmaturity,\n\t\t\t\t\treachability,\n\t\t\t\t\t...exploration ? { exploration } : {},\n\t\t\t\t\tdrift: featureDrift,\n\t\t\t\t\tdeadHandlers: featureDeadHandlers,\n\t\t\t\t\tverifiedCoverage: verifiedCoverageForFeature(feature, indexEntries),\n\t\t\t\t\tthresholds\n\t\t\t\t})\n\t\t\t};\n\t\t});\n\t\tconst verdicts = perFeature.map((p) => p.verdict);\n\t\treturn {\n\t\t\tpassed: verdicts.every((v) => v.passed),\n\t\t\tfeatures: verdicts,\n\t\t\tdrift,\n\t\t\teventCoherence,\n\t\t\tsummary: {\n\t\t\t\tfeaturesChecked: verdicts.length,\n\t\t\t\tfeaturesPassed: verdicts.filter((v) => v.passed).length,\n\t\t\t\tfeaturesFailed: verdicts.filter((v) => !v.passed).length,\n\t\t\t\tscenariosRun: perFeature.reduce((acc, p) => acc + p.scenarios.total, 0),\n\t\t\t\tscenariosFailed: perFeature.reduce((acc, p) => acc + p.scenarios.failed, 0),\n\t\t\t\tinvariantViolations: perFeature.reduce((acc, p) => acc + (p.exploration?.invariantViolations.length ?? 0), 0)\n\t\t\t}\n\t\t};\n\t};\n};\n//#endregion\n//#region src/features/verification/infrastructure/persistence/FileBehavioralIndexReader.ts\nvar LINK_FILENAME = \".unspa.json\";\nvar VALID_STATUS = new Set([\n\t\"implemented\",\n\t\"partial\",\n\t\"missing\"\n]);\n/** Walk up from `cwd` to the nearest `.unspa.json`, mirroring the MCP/CLI link discovery. */\nvar discover = (cwd) => {\n\tlet current = resolve(cwd);\n\tconst { root } = parse(current);\n\tfor (;;) {\n\t\tconst candidate = join(current, LINK_FILENAME);\n\t\tif (existsSync(candidate)) return candidate;\n\t\tif (current === root) break;\n\t\tconst parent = resolve(current, \"..\");\n\t\tif (parent === current) break;\n\t\tcurrent = parent;\n\t}\n\treturn null;\n};\n/**\n* Reads the audited entries out of a repo's `.unspa.json`. A missing or\n* malformed file is treated as \"no index\" (empty), never an error — a repo that\n* has never run an implementation audit should still verify cleanly. Maps the\n* on-disk entry onto the domain's {@link IndexedImplementation}, dropping the\n* fields drift doesn't need.\n*/\nvar fileBehavioralIndexReader = (options = {}) => ({ async read() {\n\tconst cwd = options.cwd ?? process.cwd();\n\tconst filePath = (options.path ? options.path.endsWith(LINK_FILENAME) ? options.path : join(options.path, LINK_FILENAME) : null) ?? discover(cwd);\n\tif (!filePath || !existsSync(filePath)) return [];\n\tlet link;\n\ttry {\n\t\tlink = JSON.parse(readFileSync(filePath, \"utf8\"));\n\t} catch {\n\t\treturn [];\n\t}\n\tconst index = link.index ?? {};\n\treturn Object.entries(index).map(([key, raw]) => {\n\t\treturn {\n\t\t\tkey,\n\t\t\tstatus: raw?.status && VALID_STATUS.has(raw.status) ? raw.status : \"missing\",\n\t\t\t...typeof raw?.specVersion === \"string\" ? { auditedSpecVersion: raw.specVersion } : {},\n\t\t\t...typeof raw?.verifiedAt === \"string\" ? { verifiedAt: raw.verifiedAt } : {}\n\t\t};\n\t});\n} });\n//#endregion\n//#region src/routes/api/snapshots/[id]/verify/+server.ts\nvar prerender = false;\n/**\n* Run the verification spine for one feature and return the report. The cohort\n* is scoped to the feature's project (when it belongs to one) so the\n* cross-feature checks — event coherence, cascade resolution — see the siblings\n* they need; otherwise it's just this feature. Model checking is on by default\n* (so the view can show counterexamples); pass `?modelCheck=0` to skip the\n* heavier state-space exploration.\n*/\nvar GET = async ({ params, url }) => {\n\tconst id = params.id;\n\tconst { repo, projectRepo } = getSnapshotRepository();\n\tlet cohort = [id];\n\tfor (const summary of await projectRepo.list()) {\n\t\tconst project = await projectRepo.get(summary.id);\n\t\tif (project?.featureIds.some((f) => String(f) === String(id))) {\n\t\t\tcohort = project.featureIds;\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn json(await verifyFeaturesUseCase({\n\t\tfeatures: repo,\n\t\tindex: fileBehavioralIndexReader({})\n\t})({\n\t\tfeatureIds: cohort,\n\t\tmodelCheck: url.searchParams.get(\"modelCheck\") !== \"0\"\n\t}));\n};\n//#endregion\nexport { GET, prerender };\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { g as getSnapshotRepository } from './snapshotRepository-BPXCjX92.js';
1
+ import { h as getSnapshotRepository } from './snapshotRepository-8f-2wTrb.js';
2
2
  import { j as json } from './index-CLnuRv4X.js';
3
- import './TagPalette-CtMNYCmu.js';
4
- import './FeatureJson-Bv-qiOSf.js';
3
+ import './TagPalette-CpdTiC_7.js';
4
+ import './FeatureJson-DYvMEAub.js';
5
5
  import './ImplementationStatus-7CfVZQtq.js';
6
6
  import 'node:fs';
7
7
  import 'write-file-atomic';
@@ -20,4 +20,4 @@ var GET = async () => {
20
20
  };
21
21
 
22
22
  export { GET, prerender };
23
- //# sourceMappingURL=_server.ts-BihpbxOW.js.map
23
+ //# sourceMappingURL=_server.ts-BLWhU22T.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts-BihpbxOW.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/snapshots/_server.ts.js"],"sourcesContent":["import { t as getSnapshotRepository } from \"../../../../chunks/snapshotRepository.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/snapshots/+server.ts\nvar prerender = false;\nvar GET = async () => {\n\tconst { repo, directory } = getSnapshotRepository();\n\treturn json({\n\t\tdirectory,\n\t\tsummaries: await repo.list()\n\t});\n};\n//#endregion\nexport { GET, prerender };\n"],"names":[],"mappings":";;;;;;;;;;;AAEA;AACG,IAAC,SAAS,GAAG;AACb,IAAC,GAAG,GAAG,YAAY;AACtB,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,qBAAqB,EAAE;AACpD,CAAC,OAAO,IAAI,CAAC;AACb,EAAE,SAAS;AACX,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC,IAAI;AAC5B,EAAE,CAAC;AACH;;;;"}
1
+ {"version":3,"file":"_server.ts-BLWhU22T.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/snapshots/_server.ts.js"],"sourcesContent":["import { t as getSnapshotRepository } from \"../../../../chunks/snapshotRepository.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/snapshots/+server.ts\nvar prerender = false;\nvar GET = async () => {\n\tconst { repo, directory } = getSnapshotRepository();\n\treturn json({\n\t\tdirectory,\n\t\tsummaries: await repo.list()\n\t});\n};\n//#endregion\nexport { GET, prerender };\n"],"names":[],"mappings":";;;;;;;;;;;AAEA;AACG,IAAC,SAAS,GAAG;AACb,IAAC,GAAG,GAAG,YAAY;AACtB,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,qBAAqB,EAAE;AACpD,CAAC,OAAO,IAAI,CAAC;AACb,EAAE,SAAS;AACX,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC,IAAI;AAC5B,EAAE,CAAC;AACH;;;;"}
@@ -1,18 +1,20 @@
1
- import { g as getSnapshotRepository } from './snapshotRepository-BPXCjX92.js';
2
- import { r as replaceSnapshotViaSync } from './syncBridge-BwXzPdjJ.js';
3
- import { v as validateFeature } from './FeatureValidator-B8qEjAUW.js';
1
+ import { h as getSnapshotRepository } from './snapshotRepository-8f-2wTrb.js';
2
+ import { s as systemClock } from './Clock-BfMWQpmJ.js';
3
+ import { c as createSyncAwareFeatureRepository } from './syncAwareRepositories-DvUjq5Q6.js';
4
+ import { d as deleteFeatureUseCase, g as getFeatureUseCase, F as FeatureValidationError, s as saveFeatureUseCase } from './DeleteFeature-DnK8sBJI.js';
4
5
  import { e as error, j as json } from './index-CLnuRv4X.js';
5
- import './TagPalette-CtMNYCmu.js';
6
- import './FeatureJson-Bv-qiOSf.js';
6
+ import './TagPalette-CpdTiC_7.js';
7
+ import './FeatureJson-DYvMEAub.js';
7
8
  import './ImplementationStatus-7CfVZQtq.js';
8
9
  import 'node:fs';
9
10
  import 'write-file-atomic';
10
11
  import 'node:path';
11
12
  import 'node:os';
12
- import './sync-DZ3dn761.js';
13
+ import './sync-Bn6eSUhC.js';
13
14
  import './protocol-3LlFyPP_.js';
14
15
  import 'yjs';
15
16
  import 'ws';
17
+ import './StateValue-BBjWox8f.js';
16
18
  import './index-DBqjc0Yf.js';
17
19
 
18
20
  //#region src/routes/api/snapshots/[id]/+server.ts
@@ -20,7 +22,7 @@ var prerender = false;
20
22
  var GET = async ({ params }) => {
21
23
  const id = params.id;
22
24
  const { repo } = getSnapshotRepository();
23
- const feature = await repo.get(id);
25
+ const feature = await getFeatureUseCase({ repository: repo })(id);
24
26
  if (!feature) throw error(404, `Snapshot ${id} not found`);
25
27
  return json(feature);
26
28
  };
@@ -35,18 +37,25 @@ var PUT = async ({ params, request }) => {
35
37
  if (!body || typeof body !== "object") throw error(400, "Body must be an Feature object");
36
38
  const feature = body;
37
39
  if (feature.id !== id) throw error(400, `Body id "${feature.id}" does not match URL id "${id}"`);
38
- if (typeof feature.name !== "string" || feature.name.trim().length === 0) throw error(400, "Feature name is required");
39
- const validation = validateFeature(feature);
40
- if (!validation.valid) throw error(400, `Feature validation failed:\n - ${validation.errors.join("\n - ")}`);
41
- await replaceSnapshotViaSync("feature", id, feature);
40
+ const { repo } = getSnapshotRepository();
41
+ const saveFeature = saveFeatureUseCase({
42
+ repository: createSyncAwareFeatureRepository(repo),
43
+ clock: systemClock
44
+ });
45
+ try {
46
+ await saveFeature(feature);
47
+ } catch (e) {
48
+ if (e instanceof FeatureValidationError) throw error(400, `Feature validation failed:\n - ${e.errors.join("\n - ")}`);
49
+ throw e;
50
+ }
42
51
  return json({ ok: true });
43
52
  };
44
53
  var DELETE = async ({ params }) => {
45
54
  const id = params.id;
46
55
  const { repo } = getSnapshotRepository();
47
- await repo.delete(id);
56
+ await deleteFeatureUseCase({ repository: repo })(id);
48
57
  return new Response(null, { status: 204 });
49
58
  };
50
59
 
51
60
  export { DELETE, GET, PUT, prerender };
52
- //# sourceMappingURL=_server.ts-YnfXkeMJ.js.map
61
+ //# sourceMappingURL=_server.ts-C7EVZVxv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-C7EVZVxv.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/snapshots/_id_/_server.ts.js"],"sourcesContent":["import { t as getSnapshotRepository } from \"../../../../../chunks/snapshotRepository.js\";\nimport { t as systemClock } from \"../../../../../chunks/Clock.js\";\nimport { t as createSyncAwareFeatureRepository } from \"../../../../../chunks/syncAwareRepositories.js\";\nimport { a as getFeatureUseCase, n as saveFeatureUseCase, r as FeatureValidationError, t as deleteFeatureUseCase } from \"../../../../../chunks/DeleteFeature.js\";\nimport { error, json } from \"@sveltejs/kit\";\n//#region src/routes/api/snapshots/[id]/+server.ts\nvar prerender = false;\nvar GET = async ({ params }) => {\n\tconst id = params.id;\n\tconst { repo } = getSnapshotRepository();\n\tconst feature = await getFeatureUseCase({ repository: repo })(id);\n\tif (!feature) throw error(404, `Snapshot ${id} not found`);\n\treturn json(feature);\n};\nvar PUT = async ({ params, request }) => {\n\tconst id = params.id;\n\tlet body;\n\ttry {\n\t\tbody = await request.json();\n\t} catch {\n\t\tthrow error(400, \"Invalid JSON body\");\n\t}\n\tif (!body || typeof body !== \"object\") throw error(400, \"Body must be an Feature object\");\n\tconst feature = body;\n\tif (feature.id !== id) throw error(400, `Body id \"${feature.id}\" does not match URL id \"${id}\"`);\n\tconst { repo } = getSnapshotRepository();\n\tconst saveFeature = saveFeatureUseCase({\n\t\trepository: createSyncAwareFeatureRepository(repo),\n\t\tclock: systemClock\n\t});\n\ttry {\n\t\tawait saveFeature(feature);\n\t} catch (e) {\n\t\tif (e instanceof FeatureValidationError) throw error(400, `Feature validation failed:\\n - ${e.errors.join(\"\\n - \")}`);\n\t\tthrow e;\n\t}\n\treturn json({ ok: true });\n};\nvar DELETE = async ({ params }) => {\n\tconst id = params.id;\n\tconst { repo } = getSnapshotRepository();\n\tawait deleteFeatureUseCase({ repository: repo })(id);\n\treturn new Response(null, { status: 204 });\n};\n//#endregion\nexport { DELETE, GET, PUT, prerender };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAKA;AACG,IAAC,SAAS,GAAG;AACb,IAAC,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK;AAChC,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE;AACrB,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,qBAAqB,EAAE;AACzC,CAAC,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;AAClE,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;AAC3D,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC;AACrB;AACG,IAAC,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK;AACzC,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE;AACrB,CAAC,IAAI,IAAI;AACT,CAAC,IAAI;AACL,EAAE,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AAC7B,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,mBAAmB,CAAC;AACvC,CAAC;AACD,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,gCAAgC,CAAC;AAC1F,CAAC,MAAM,OAAO,GAAG,IAAI;AACrB,CAAC,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACjG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,qBAAqB,EAAE;AACzC,CAAC,MAAM,WAAW,GAAG,kBAAkB,CAAC;AACxC,EAAE,UAAU,EAAE,gCAAgC,CAAC,IAAI,CAAC;AACpD,EAAE,KAAK,EAAE;AACT,EAAE,CAAC;AACH,CAAC,IAAI;AACL,EAAE,MAAM,WAAW,CAAC,OAAO,CAAC;AAC5B,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;AACb,EAAE,IAAI,CAAC,YAAY,sBAAsB,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,+BAA+B,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACvH,EAAE,MAAM,CAAC;AACT,CAAC;AACD,CAAC,OAAO,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AAC1B;AACG,IAAC,MAAM,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK;AACnC,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE;AACrB,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,qBAAqB,EAAE;AACzC,CAAC,MAAM,oBAAoB,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;AACrD,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC3C;;;;"}
@@ -1,7 +1,9 @@
1
- import { g as getSnapshotRepository } from './snapshotRepository-BPXCjX92.js';
1
+ import { h as getSnapshotRepository } from './snapshotRepository-8f-2wTrb.js';
2
+ import { s as systemClock } from './Clock-BfMWQpmJ.js';
3
+ import { d as deleteDomainUseCase, g as getDomainUseCase, s as saveDomainUseCase } from './DeleteDomain-BvHEgAyp.js';
2
4
  import { e as error, j as json } from './index-CLnuRv4X.js';
3
- import './TagPalette-CtMNYCmu.js';
4
- import './FeatureJson-Bv-qiOSf.js';
5
+ import './TagPalette-CpdTiC_7.js';
6
+ import './FeatureJson-DYvMEAub.js';
5
7
  import './ImplementationStatus-7CfVZQtq.js';
6
8
  import 'node:fs';
7
9
  import 'write-file-atomic';
@@ -14,7 +16,7 @@ var prerender = false;
14
16
  var GET = async ({ params }) => {
15
17
  const id = params.id;
16
18
  const { domainRepo } = getSnapshotRepository();
17
- const domain = await domainRepo.get(id);
19
+ const domain = await getDomainUseCase({ repository: domainRepo })(id);
18
20
  if (!domain) throw error(404, `Domain ${id} not found`);
19
21
  return json(domain);
20
22
  };
@@ -31,15 +33,18 @@ var PUT = async ({ params, request }) => {
31
33
  if (domain.id !== id) throw error(400, `Body id "${domain.id}" does not match URL id "${id}"`);
32
34
  if (typeof domain.name !== "string" || domain.name.trim().length === 0) throw error(400, "Domain name is required");
33
35
  const { domainRepo } = getSnapshotRepository();
34
- await domainRepo.save(domain);
36
+ await saveDomainUseCase({
37
+ repository: domainRepo,
38
+ clock: systemClock
39
+ })(domain);
35
40
  return json({ ok: true });
36
41
  };
37
42
  var DELETE = async ({ params }) => {
38
43
  const id = params.id;
39
44
  const { domainRepo } = getSnapshotRepository();
40
- await domainRepo.delete(id);
45
+ await deleteDomainUseCase({ repository: domainRepo })(id);
41
46
  return new Response(null, { status: 204 });
42
47
  };
43
48
 
44
49
  export { DELETE, GET, PUT, prerender };
45
- //# sourceMappingURL=_server.ts-vcaqdwxS.js.map
50
+ //# sourceMappingURL=_server.ts-CGjYuLmo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-CGjYuLmo.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/domains/_id_/_server.ts.js"],"sourcesContent":["import { t as getSnapshotRepository } from \"../../../../../chunks/snapshotRepository.js\";\nimport { t as systemClock } from \"../../../../../chunks/Clock.js\";\nimport { n as saveDomainUseCase, r as getDomainUseCase, t as deleteDomainUseCase } from \"../../../../../chunks/DeleteDomain.js\";\nimport { error, json } from \"@sveltejs/kit\";\n//#region src/routes/api/domains/[id]/+server.ts\nvar prerender = false;\nvar GET = async ({ params }) => {\n\tconst id = params.id;\n\tconst { domainRepo } = getSnapshotRepository();\n\tconst domain = await getDomainUseCase({ repository: domainRepo })(id);\n\tif (!domain) throw error(404, `Domain ${id} not found`);\n\treturn json(domain);\n};\nvar PUT = async ({ params, request }) => {\n\tconst id = params.id;\n\tlet body;\n\ttry {\n\t\tbody = await request.json();\n\t} catch {\n\t\tthrow error(400, \"Invalid JSON body\");\n\t}\n\tif (!body || typeof body !== \"object\") throw error(400, \"Body must be a Domain object\");\n\tconst domain = body;\n\tif (domain.id !== id) throw error(400, `Body id \"${domain.id}\" does not match URL id \"${id}\"`);\n\tif (typeof domain.name !== \"string\" || domain.name.trim().length === 0) throw error(400, \"Domain name is required\");\n\tconst { domainRepo } = getSnapshotRepository();\n\tawait saveDomainUseCase({\n\t\trepository: domainRepo,\n\t\tclock: systemClock\n\t})(domain);\n\treturn json({ ok: true });\n};\nvar DELETE = async ({ params }) => {\n\tconst id = params.id;\n\tconst { domainRepo } = getSnapshotRepository();\n\tawait deleteDomainUseCase({ repository: domainRepo })(id);\n\treturn new Response(null, { status: 204 });\n};\n//#endregion\nexport { DELETE, GET, PUT, prerender };\n"],"names":[],"mappings":";;;;;;;;;;;;;AAIA;AACG,IAAC,SAAS,GAAG;AACb,IAAC,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK;AAChC,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE;AACrB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,qBAAqB,EAAE;AAC/C,CAAC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC;AACtE,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;AACxD,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC;AACpB;AACG,IAAC,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK;AACzC,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE;AACrB,CAAC,IAAI,IAAI;AACT,CAAC,IAAI;AACL,EAAE,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AAC7B,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,mBAAmB,CAAC;AACvC,CAAC;AACD,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,8BAA8B,CAAC;AACxF,CAAC,MAAM,MAAM,GAAG,IAAI;AACpB,CAAC,IAAI,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/F,CAAC,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,yBAAyB,CAAC;AACpH,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,qBAAqB,EAAE;AAC/C,CAAC,MAAM,iBAAiB,CAAC;AACzB,EAAE,UAAU,EAAE,UAAU;AACxB,EAAE,KAAK,EAAE;AACT,EAAE,CAAC,CAAC,MAAM,CAAC;AACX,CAAC,OAAO,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AAC1B;AACG,IAAC,MAAM,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK;AACnC,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE;AACrB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,qBAAqB,EAAE;AAC/C,CAAC,MAAM,mBAAmB,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC;AAC1D,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC3C;;;;"}
@@ -1,44 +1,21 @@
1
- import { g as getSnapshotRepository } from './snapshotRepository-BPXCjX92.js';
2
- import { r as replaceSnapshotViaSync } from './syncBridge-BwXzPdjJ.js';
3
- import { r as renameTagUseCase, s as systemClock } from './RenameTag-BuWLMl1m.js';
1
+ import { h as getSnapshotRepository } from './snapshotRepository-8f-2wTrb.js';
2
+ import { s as systemClock } from './Clock-BfMWQpmJ.js';
3
+ import { c as createSyncAwareFeatureRepository, a as createSyncAwareProjectRepository } from './syncAwareRepositories-DvUjq5Q6.js';
4
+ import { r as renameTagUseCase } from './RenameTag-DWIIR4Bx.js';
4
5
  import { e as error, j as json } from './index-CLnuRv4X.js';
5
- import './TagPalette-CtMNYCmu.js';
6
- import './FeatureJson-Bv-qiOSf.js';
6
+ import './TagPalette-CpdTiC_7.js';
7
+ import './FeatureJson-DYvMEAub.js';
7
8
  import './ImplementationStatus-7CfVZQtq.js';
8
9
  import 'node:fs';
9
10
  import 'write-file-atomic';
10
11
  import 'node:path';
11
12
  import 'node:os';
12
- import './sync-DZ3dn761.js';
13
+ import './sync-Bn6eSUhC.js';
13
14
  import './protocol-3LlFyPP_.js';
14
15
  import 'yjs';
15
16
  import 'ws';
16
17
  import './index-DBqjc0Yf.js';
17
18
 
18
- //#region src/lib/server/syncAwareRepositories.ts
19
- /**
20
- * Decorates a base ProjectRepository so that save() routes through the
21
- * Y.Doc-aware sync bridge instead of writing straight to disk. List, get,
22
- * and delete still defer to the base repo — only the write path needs the
23
- * collaborative-edit broadcast.
24
- */
25
- var createSyncAwareProjectRepository = (base) => ({
26
- list: () => base.list(),
27
- get: (id) => base.get(id),
28
- delete: (id) => base.delete(id),
29
- save: async (project) => {
30
- await replaceSnapshotViaSync("project", project.id, project);
31
- }
32
- });
33
- var createSyncAwareFeatureRepository = (base) => ({
34
- list: () => base.list(),
35
- get: (id) => base.get(id),
36
- delete: (id) => base.delete(id),
37
- save: async (feature) => {
38
- await replaceSnapshotViaSync("feature", feature.id, feature);
39
- }
40
- });
41
- //#endregion
42
19
  //#region src/routes/api/tag-palette/rename/+server.ts
43
20
  var prerender = false;
44
21
  var parseTag = (raw, label) => {
@@ -76,4 +53,4 @@ var POST = async ({ request }) => {
76
53
  };
77
54
 
78
55
  export { POST, prerender };
79
- //# sourceMappingURL=_server.ts-Dy5zQHe2.js.map
56
+ //# sourceMappingURL=_server.ts-CX6H8fSE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-CX6H8fSE.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/tag-palette/rename/_server.ts.js"],"sourcesContent":["import { t as getSnapshotRepository } from \"../../../../../chunks/snapshotRepository.js\";\nimport { t as systemClock } from \"../../../../../chunks/Clock.js\";\nimport { n as createSyncAwareProjectRepository, t as createSyncAwareFeatureRepository } from \"../../../../../chunks/syncAwareRepositories.js\";\nimport { t as renameTagUseCase } from \"../../../../../chunks/RenameTag.js\";\nimport { error, json } from \"@sveltejs/kit\";\n//#region src/routes/api/tag-palette/rename/+server.ts\nvar prerender = false;\nvar parseTag = (raw, label) => {\n\tif (!raw || typeof raw !== \"object\") throw error(400, `${label} must be {type, value}`);\n\tconst obj = raw;\n\tconst type = typeof obj.type === \"string\" ? obj.type.trim() : \"\";\n\tconst value = typeof obj.value === \"string\" ? obj.value.trim() : \"\";\n\tif (!type) throw error(400, `${label}.type is required`);\n\tif (!value) throw error(400, `${label}.value is required`);\n\treturn {\n\t\ttype,\n\t\tvalue\n\t};\n};\nvar POST = async ({ request }) => {\n\tlet body;\n\ttry {\n\t\tbody = await request.json();\n\t} catch {\n\t\tthrow error(400, \"Invalid JSON body\");\n\t}\n\tif (!body || typeof body !== \"object\") throw error(400, \"Body must be {from, to}\");\n\tconst from = parseTag(body.from, \"from\");\n\tconst to = parseTag(body.to, \"to\");\n\tconst { projectRepo, repo, tagPaletteRepo } = getSnapshotRepository();\n\treturn json(await renameTagUseCase({\n\t\tprojects: createSyncAwareProjectRepository(projectRepo),\n\t\tfeatures: createSyncAwareFeatureRepository(repo),\n\t\tpalette: tagPaletteRepo,\n\t\tclock: systemClock\n\t})({\n\t\tfrom,\n\t\tto\n\t}));\n};\n//#endregion\nexport { POST, prerender };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAKA;AACG,IAAC,SAAS,GAAG;AAChB,IAAI,QAAQ,GAAG,CAAC,GAAG,EAAE,KAAK,KAAK;AAC/B,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAC;AACxF,CAAC,MAAM,GAAG,GAAG,GAAG;AAChB,CAAC,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;AACjE,CAAC,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE;AACpE,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACzD,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAC3D,CAAC,OAAO;AACR,EAAE,IAAI;AACN,EAAE;AACF,EAAE;AACF,CAAC;AACE,IAAC,IAAI,GAAG,OAAO,EAAE,OAAO,EAAE,KAAK;AAClC,CAAC,IAAI,IAAI;AACT,CAAC,IAAI;AACL,EAAE,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AAC7B,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,mBAAmB,CAAC;AACvC,CAAC;AACD,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,yBAAyB,CAAC;AACnF,CAAC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;AACzC,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;AACnC,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,qBAAqB,EAAE;AACtE,CAAC,OAAO,IAAI,CAAC,MAAM,gBAAgB,CAAC;AACpC,EAAE,QAAQ,EAAE,gCAAgC,CAAC,WAAW,CAAC;AACzD,EAAE,QAAQ,EAAE,gCAAgC,CAAC,IAAI,CAAC;AAClD,EAAE,OAAO,EAAE,cAAc;AACzB,EAAE,KAAK,EAAE;AACT,EAAE,CAAC,CAAC;AACJ,EAAE,IAAI;AACN,EAAE;AACF,EAAE,CAAC,CAAC;AACJ;;;;"}
@@ -1,7 +1,7 @@
1
- import { f as asFeatureId } from './TagPalette-CtMNYCmu.js';
2
- import { g as getSnapshotRepository } from './snapshotRepository-BPXCjX92.js';
1
+ import { f as asFeatureId } from './TagPalette-CpdTiC_7.js';
2
+ import { h as getSnapshotRepository } from './snapshotRepository-8f-2wTrb.js';
3
3
  import { e as error, j as json } from './index-CLnuRv4X.js';
4
- import './FeatureJson-Bv-qiOSf.js';
4
+ import './FeatureJson-DYvMEAub.js';
5
5
  import './ImplementationStatus-7CfVZQtq.js';
6
6
  import 'node:fs';
7
7
  import 'write-file-atomic';
@@ -47,4 +47,4 @@ var GET = async ({ params }) => {
47
47
  };
48
48
 
49
49
  export { GET, prerender };
50
- //# sourceMappingURL=_server.ts-BuoQ02BW.js.map
50
+ //# sourceMappingURL=_server.ts-CyEdTCLr.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts-BuoQ02BW.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/projects/_id_/bundle/_server.ts.js"],"sourcesContent":["import { _ as asFeatureId } from \"../../../../../../chunks/TagPalette.js\";\nimport { t as getSnapshotRepository } from \"../../../../../../chunks/snapshotRepository.js\";\nimport { error, json } from \"@sveltejs/kit\";\n//#region src/routes/api/projects/[id]/bundle/+server.ts\nvar prerender = false;\n/**\n* Returns the full self-contained ProjectBundleV1 for one Project so the\n* browser can encrypt it client-side and trigger a `.unspa` download.\n*\n* Plaintext only — encryption is the caller's responsibility. The\n* passphrase never reaches the server, which keeps the security model\n* simple (\"the only way to decrypt is the user's passphrase\") and avoids\n* any server-side key storage. The endpoint is GET and unauthenticated\n* for the same reason every other API on this dashboard is: it's\n* intended for `127.0.0.1` use only (the dashboard CLI warns loudly on\n* any non-loopback bind).\n*/\nvar GET = async ({ params }) => {\n\tconst id = params.id;\n\tconst { projectRepo, repo: featureRepo, statusRepo } = getSnapshotRepository();\n\tconst project = await projectRepo.get(id);\n\tif (!project) throw error(404, `Project ${id} not found`);\n\tconst features = [];\n\tconst statuses = [];\n\tfor (const fid of project.featureIds) {\n\t\tconst feature = await featureRepo.get(asFeatureId(String(fid)));\n\t\tif (feature) features.push(feature);\n\t\tconst status = await statusRepo.get(asFeatureId(String(fid)));\n\t\tif (status) statuses.push(status);\n\t}\n\treturn json({\n\t\tformat: \"unspaghettit-project-bundle\",\n\t\tversion: 1,\n\t\texportedAt: (/* @__PURE__ */ new Date()).toISOString(),\n\t\tproject,\n\t\tfeatures,\n\t\tstatuses\n\t});\n};\n//#endregion\nexport { GET, prerender };\n"],"names":[],"mappings":";;;;;;;;;;;AAGA;AACG,IAAC,SAAS,GAAG;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACG,IAAC,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK;AAChC,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE;AACrB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,qBAAqB,EAAE;AAC/E,CAAC,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1C,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;AAC1D,CAAC,MAAM,QAAQ,GAAG,EAAE;AACpB,CAAC,MAAM,QAAQ,GAAG,EAAE;AACpB,CAAC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,UAAU,EAAE;AACvC,EAAE,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACjE,EAAE,IAAI,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AACrC,EAAE,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,EAAE,IAAI,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;AACnC,CAAC;AACD,CAAC,OAAO,IAAI,CAAC;AACb,EAAE,MAAM,EAAE,6BAA6B;AACvC,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE,UAAU,EAAE,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE;AACxD,EAAE,OAAO;AACT,EAAE,QAAQ;AACV,EAAE;AACF,EAAE,CAAC;AACH;;;;"}
1
+ {"version":3,"file":"_server.ts-CyEdTCLr.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/projects/_id_/bundle/_server.ts.js"],"sourcesContent":["import { _ as asFeatureId } from \"../../../../../../chunks/TagPalette.js\";\nimport { t as getSnapshotRepository } from \"../../../../../../chunks/snapshotRepository.js\";\nimport { error, json } from \"@sveltejs/kit\";\n//#region src/routes/api/projects/[id]/bundle/+server.ts\nvar prerender = false;\n/**\n* Returns the full self-contained ProjectBundleV1 for one Project so the\n* browser can encrypt it client-side and trigger a `.unspa` download.\n*\n* Plaintext only — encryption is the caller's responsibility. The\n* passphrase never reaches the server, which keeps the security model\n* simple (\"the only way to decrypt is the user's passphrase\") and avoids\n* any server-side key storage. The endpoint is GET and unauthenticated\n* for the same reason every other API on this dashboard is: it's\n* intended for `127.0.0.1` use only (the dashboard CLI warns loudly on\n* any non-loopback bind).\n*/\nvar GET = async ({ params }) => {\n\tconst id = params.id;\n\tconst { projectRepo, repo: featureRepo, statusRepo } = getSnapshotRepository();\n\tconst project = await projectRepo.get(id);\n\tif (!project) throw error(404, `Project ${id} not found`);\n\tconst features = [];\n\tconst statuses = [];\n\tfor (const fid of project.featureIds) {\n\t\tconst feature = await featureRepo.get(asFeatureId(String(fid)));\n\t\tif (feature) features.push(feature);\n\t\tconst status = await statusRepo.get(asFeatureId(String(fid)));\n\t\tif (status) statuses.push(status);\n\t}\n\treturn json({\n\t\tformat: \"unspaghettit-project-bundle\",\n\t\tversion: 1,\n\t\texportedAt: (/* @__PURE__ */ new Date()).toISOString(),\n\t\tproject,\n\t\tfeatures,\n\t\tstatuses\n\t});\n};\n//#endregion\nexport { GET, prerender };\n"],"names":[],"mappings":";;;;;;;;;;;AAGA;AACG,IAAC,SAAS,GAAG;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACG,IAAC,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK;AAChC,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE;AACrB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,qBAAqB,EAAE;AAC/E,CAAC,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1C,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;AAC1D,CAAC,MAAM,QAAQ,GAAG,EAAE;AACpB,CAAC,MAAM,QAAQ,GAAG,EAAE;AACpB,CAAC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,UAAU,EAAE;AACvC,EAAE,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACjE,EAAE,IAAI,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AACrC,EAAE,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,EAAE,IAAI,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;AACnC,CAAC;AACD,CAAC,OAAO,IAAI,CAAC;AACb,EAAE,MAAM,EAAE,6BAA6B;AACvC,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE,UAAU,EAAE,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE;AACxD,EAAE,OAAO;AACT,EAAE,QAAQ;AACV,EAAE;AACF,EAAE,CAAC;AACH;;;;"}
@@ -0,0 +1,77 @@
1
+ import { h as getSnapshotRepository } from './snapshotRepository-8f-2wTrb.js';
2
+ import { a as createSyncAwareProjectRepository, c as createSyncAwareFeatureRepository } from './syncAwareRepositories-DvUjq5Q6.js';
3
+ import { e as error, j as json } from './index-CLnuRv4X.js';
4
+ import './TagPalette-CpdTiC_7.js';
5
+ import './FeatureJson-DYvMEAub.js';
6
+ import './ImplementationStatus-7CfVZQtq.js';
7
+ import 'node:fs';
8
+ import 'write-file-atomic';
9
+ import 'node:path';
10
+ import 'node:os';
11
+ import './sync-Bn6eSUhC.js';
12
+ import './protocol-3LlFyPP_.js';
13
+ import 'yjs';
14
+ import 'ws';
15
+ import './index-DBqjc0Yf.js';
16
+
17
+ //#region src/features/projects/application/use-cases/ImportProjectBundle.ts
18
+ /**
19
+ * Restore a ProjectBundleV1 onto the snapshot repositories. The write ORDER is
20
+ * the invariant this use case owns:
21
+ * 1. every Feature first, so the project save's add-feature guard can resolve
22
+ * them;
23
+ * 2. then the Project itself, preserving its id, featureIds[] ordering, queue,
24
+ * and metadata;
25
+ * 3. lastly the implementation-status sidecars (idempotent if absent).
26
+ *
27
+ * Pass sync-aware repositories to broadcast the writes to open editors. Conflict
28
+ * policy (v1): bundle ids are preserved and overwrite any existing rows — the
29
+ * "restore my own backup" flow. Previously this orchestration lived inline in
30
+ * the import route handler.
31
+ */
32
+ var importProjectBundleUseCase = (deps) => {
33
+ return async (bundle) => {
34
+ for (const feature of bundle.features) await deps.features.save(feature);
35
+ await deps.projects.save(bundle.project);
36
+ for (const status of bundle.statuses) await deps.statuses.save(status);
37
+ return {
38
+ projectId: bundle.project.id,
39
+ featuresImported: bundle.features.length,
40
+ statusesImported: bundle.statuses.length
41
+ };
42
+ };
43
+ };
44
+ //#endregion
45
+ //#region src/routes/api/projects/import/+server.ts
46
+ var prerender = false;
47
+ /**
48
+ * Restore a decrypted ProjectBundleV1 onto the snapshot repository. The
49
+ * write-ordering + conflict policy lives in the importProjectBundle use case;
50
+ * this handler only validates the wire envelope and wires sync-aware repos so
51
+ * open editors get the restored snapshots reactively.
52
+ */
53
+ var POST = async ({ request }) => {
54
+ let body;
55
+ try {
56
+ body = await request.json();
57
+ } catch {
58
+ throw error(400, "Invalid JSON body");
59
+ }
60
+ if (!body || typeof body !== "object") throw error(400, "Body must be a ProjectBundle");
61
+ const bundle = body;
62
+ if (bundle.format !== "unspaghettit-project-bundle") throw error(400, "Body is not a ProjectBundle (wrong format tag)");
63
+ if (bundle.version !== 1) throw error(400, `Unsupported bundle version ${bundle.version}`);
64
+ if (!bundle.project || typeof bundle.project.id !== "string") throw error(400, "Bundle is missing a project");
65
+ const { repo, projectRepo, statusRepo } = getSnapshotRepository();
66
+ return json({
67
+ ok: true,
68
+ ...await importProjectBundleUseCase({
69
+ features: createSyncAwareFeatureRepository(repo),
70
+ projects: createSyncAwareProjectRepository(projectRepo),
71
+ statuses: statusRepo
72
+ })(bundle)
73
+ });
74
+ };
75
+
76
+ export { POST, prerender };
77
+ //# sourceMappingURL=_server.ts-DKVTM9Pj.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-DKVTM9Pj.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/projects/import/_server.ts.js"],"sourcesContent":["import { t as getSnapshotRepository } from \"../../../../../chunks/snapshotRepository.js\";\nimport { n as createSyncAwareProjectRepository, t as createSyncAwareFeatureRepository } from \"../../../../../chunks/syncAwareRepositories.js\";\nimport { error, json } from \"@sveltejs/kit\";\n//#region src/features/projects/application/use-cases/ImportProjectBundle.ts\n/**\n* Restore a ProjectBundleV1 onto the snapshot repositories. The write ORDER is\n* the invariant this use case owns:\n* 1. every Feature first, so the project save's add-feature guard can resolve\n* them;\n* 2. then the Project itself, preserving its id, featureIds[] ordering, queue,\n* and metadata;\n* 3. lastly the implementation-status sidecars (idempotent if absent).\n*\n* Pass sync-aware repositories to broadcast the writes to open editors. Conflict\n* policy (v1): bundle ids are preserved and overwrite any existing rows — the\n* \"restore my own backup\" flow. Previously this orchestration lived inline in\n* the import route handler.\n*/\nvar importProjectBundleUseCase = (deps) => {\n\treturn async (bundle) => {\n\t\tfor (const feature of bundle.features) await deps.features.save(feature);\n\t\tawait deps.projects.save(bundle.project);\n\t\tfor (const status of bundle.statuses) await deps.statuses.save(status);\n\t\treturn {\n\t\t\tprojectId: bundle.project.id,\n\t\t\tfeaturesImported: bundle.features.length,\n\t\t\tstatusesImported: bundle.statuses.length\n\t\t};\n\t};\n};\n//#endregion\n//#region src/routes/api/projects/import/+server.ts\nvar prerender = false;\n/**\n* Restore a decrypted ProjectBundleV1 onto the snapshot repository. The\n* write-ordering + conflict policy lives in the importProjectBundle use case;\n* this handler only validates the wire envelope and wires sync-aware repos so\n* open editors get the restored snapshots reactively.\n*/\nvar POST = async ({ request }) => {\n\tlet body;\n\ttry {\n\t\tbody = await request.json();\n\t} catch {\n\t\tthrow error(400, \"Invalid JSON body\");\n\t}\n\tif (!body || typeof body !== \"object\") throw error(400, \"Body must be a ProjectBundle\");\n\tconst bundle = body;\n\tif (bundle.format !== \"unspaghettit-project-bundle\") throw error(400, \"Body is not a ProjectBundle (wrong format tag)\");\n\tif (bundle.version !== 1) throw error(400, `Unsupported bundle version ${bundle.version}`);\n\tif (!bundle.project || typeof bundle.project.id !== \"string\") throw error(400, \"Bundle is missing a project\");\n\tconst { repo, projectRepo, statusRepo } = getSnapshotRepository();\n\treturn json({\n\t\tok: true,\n\t\t...await importProjectBundleUseCase({\n\t\t\tfeatures: createSyncAwareFeatureRepository(repo),\n\t\t\tprojects: createSyncAwareProjectRepository(projectRepo),\n\t\t\tstatuses: statusRepo\n\t\t})(bundle)\n\t});\n};\n//#endregion\nexport { POST, prerender };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,0BAA0B,GAAG,CAAC,IAAI,KAAK;AAC3C,CAAC,OAAO,OAAO,MAAM,KAAK;AAC1B,EAAE,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AAC1E,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1C,EAAE,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;AACxE,EAAE,OAAO;AACT,GAAG,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE;AAC/B,GAAG,gBAAgB,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;AAC3C,GAAG,gBAAgB,EAAE,MAAM,CAAC,QAAQ,CAAC;AACrC,GAAG;AACH,CAAC,CAAC;AACF,CAAC;AACD;AACA;AACG,IAAC,SAAS,GAAG;AAChB;AACA;AACA;AACA;AACA;AACA;AACG,IAAC,IAAI,GAAG,OAAO,EAAE,OAAO,EAAE,KAAK;AAClC,CAAC,IAAI,IAAI;AACT,CAAC,IAAI;AACL,EAAE,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AAC7B,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,mBAAmB,CAAC;AACvC,CAAC;AACD,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,8BAA8B,CAAC;AACxF,CAAC,MAAM,MAAM,GAAG,IAAI;AACpB,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,6BAA6B,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,gDAAgD,CAAC;AACxH,CAAC,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,2BAA2B,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3F,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,QAAQ,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,6BAA6B,CAAC;AAC9G,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,qBAAqB,EAAE;AAClE,CAAC,OAAO,IAAI,CAAC;AACb,EAAE,EAAE,EAAE,IAAI;AACV,EAAE,GAAG,MAAM,0BAA0B,CAAC;AACtC,GAAG,QAAQ,EAAE,gCAAgC,CAAC,IAAI,CAAC;AACnD,GAAG,QAAQ,EAAE,gCAAgC,CAAC,WAAW,CAAC;AAC1D,GAAG,QAAQ,EAAE;AACb,GAAG,CAAC,CAAC,MAAM;AACX,EAAE,CAAC;AACH;;;;"}
@@ -1,14 +1,16 @@
1
- import { g as getSnapshotRepository } from './snapshotRepository-BPXCjX92.js';
2
- import { r as replaceSnapshotViaSync } from './syncBridge-BwXzPdjJ.js';
1
+ import { h as getSnapshotRepository } from './snapshotRepository-8f-2wTrb.js';
2
+ import { s as systemClock } from './Clock-BfMWQpmJ.js';
3
+ import { a as createSyncAwareProjectRepository } from './syncAwareRepositories-DvUjq5Q6.js';
4
+ import { d as deleteProjectUseCase, g as getProjectUseCase, s as saveProjectUseCase } from './DeleteProject-BXZcehHZ.js';
3
5
  import { e as error, j as json } from './index-CLnuRv4X.js';
4
- import './TagPalette-CtMNYCmu.js';
5
- import './FeatureJson-Bv-qiOSf.js';
6
+ import './TagPalette-CpdTiC_7.js';
7
+ import './FeatureJson-DYvMEAub.js';
6
8
  import './ImplementationStatus-7CfVZQtq.js';
7
9
  import 'node:fs';
8
10
  import 'write-file-atomic';
9
11
  import 'node:path';
10
12
  import 'node:os';
11
- import './sync-DZ3dn761.js';
13
+ import './sync-Bn6eSUhC.js';
12
14
  import './protocol-3LlFyPP_.js';
13
15
  import 'yjs';
14
16
  import 'ws';
@@ -19,7 +21,7 @@ var prerender = false;
19
21
  var GET = async ({ params }) => {
20
22
  const id = params.id;
21
23
  const { projectRepo } = getSnapshotRepository();
22
- const project = await projectRepo.get(id);
24
+ const project = await getProjectUseCase({ repository: projectRepo })(id);
23
25
  if (!project) throw error(404, `Project ${id} not found`);
24
26
  return json(project);
25
27
  };
@@ -36,15 +38,19 @@ var PUT = async ({ params, request }) => {
36
38
  if (project.id !== id) throw error(400, `Body id "${project.id}" does not match URL id "${id}"`);
37
39
  if (typeof project.name !== "string" || project.name.trim().length === 0) throw error(400, "Project name is required");
38
40
  if (typeof project.description !== "string" || project.description.trim().length === 0) throw error(400, "Project description is required");
39
- await replaceSnapshotViaSync("project", id, project);
41
+ const { projectRepo } = getSnapshotRepository();
42
+ await saveProjectUseCase({
43
+ repository: createSyncAwareProjectRepository(projectRepo),
44
+ clock: systemClock
45
+ })(project);
40
46
  return json({ ok: true });
41
47
  };
42
48
  var DELETE = async ({ params }) => {
43
49
  const id = params.id;
44
50
  const { projectRepo } = getSnapshotRepository();
45
- await projectRepo.delete(id);
51
+ await deleteProjectUseCase({ repository: projectRepo })(id);
46
52
  return new Response(null, { status: 204 });
47
53
  };
48
54
 
49
55
  export { DELETE, GET, PUT, prerender };
50
- //# sourceMappingURL=_server.ts-0uNTZKwF.js.map
56
+ //# sourceMappingURL=_server.ts-Dip65hLJ.js.map