unspaghettit 0.3.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 (766) 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.gz +0 -0
  8. package/build/client/_app/immutable/chunks/B3vnQs252.js +1 -0
  9. package/build/client/_app/immutable/chunks/B3vnQs252.js.br +0 -0
  10. package/build/client/_app/immutable/chunks/B3vnQs252.js.gz +0 -0
  11. package/build/client/_app/immutable/chunks/{CxyLMlpt2.js → BANF9BhQ2.js} +1 -1
  12. package/build/client/_app/immutable/chunks/BANF9BhQ2.js.br +0 -0
  13. package/build/client/_app/immutable/chunks/BANF9BhQ2.js.gz +0 -0
  14. package/build/client/_app/immutable/chunks/BJdTO_n6.js +1 -0
  15. package/build/client/_app/immutable/chunks/BJdTO_n6.js.br +0 -0
  16. package/build/client/_app/immutable/chunks/BJdTO_n6.js.gz +0 -0
  17. package/build/client/_app/immutable/chunks/BPl9BITm.js.gz +0 -0
  18. package/build/client/_app/immutable/chunks/BQ9GodWX2.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/Bcyn5YUg.js +4 -0
  20. package/build/client/_app/immutable/chunks/Bcyn5YUg.js.br +0 -0
  21. package/build/client/_app/immutable/chunks/Bcyn5YUg.js.gz +0 -0
  22. package/build/client/_app/immutable/chunks/Bfc9rQXP.js +1 -0
  23. package/build/client/_app/immutable/chunks/Bfc9rQXP.js.br +0 -0
  24. package/build/client/_app/immutable/chunks/Bfc9rQXP.js.gz +0 -0
  25. package/build/client/_app/immutable/chunks/{BfMYiIUi.js → BjxqhpPG.js} +1 -1
  26. package/build/client/_app/immutable/chunks/BjxqhpPG.js.br +0 -0
  27. package/build/client/_app/immutable/chunks/BjxqhpPG.js.gz +0 -0
  28. package/build/client/_app/immutable/chunks/ByaoVvNB.js +1 -0
  29. package/build/client/_app/immutable/chunks/ByaoVvNB.js.br +0 -0
  30. package/build/client/_app/immutable/chunks/ByaoVvNB.js.gz +0 -0
  31. package/build/client/_app/immutable/chunks/BzLd0mTH.js.gz +0 -0
  32. package/build/client/_app/immutable/chunks/C8b3IMj8.js +1 -0
  33. package/build/client/_app/immutable/chunks/C8b3IMj8.js.br +0 -0
  34. package/build/client/_app/immutable/chunks/C8b3IMj8.js.gz +0 -0
  35. package/build/client/_app/immutable/chunks/CXvvf4uQ.js +1 -0
  36. package/build/client/_app/immutable/chunks/CXvvf4uQ.js.br +0 -0
  37. package/build/client/_app/immutable/chunks/CXvvf4uQ.js.gz +0 -0
  38. package/build/client/_app/immutable/chunks/Cl7Z3e6-.js.gz +0 -0
  39. package/build/client/_app/immutable/chunks/ClC4qR7W2.js +2 -0
  40. package/build/client/_app/immutable/chunks/ClC4qR7W2.js.br +0 -0
  41. package/build/client/_app/immutable/chunks/ClC4qR7W2.js.gz +0 -0
  42. package/build/client/_app/immutable/chunks/CuGlh1c2.js +1 -0
  43. package/build/client/_app/immutable/chunks/CuGlh1c2.js.br +0 -0
  44. package/build/client/_app/immutable/chunks/CuGlh1c2.js.gz +0 -0
  45. package/build/client/_app/immutable/chunks/CwzIdrQR.js +1 -0
  46. package/build/client/_app/immutable/chunks/CwzIdrQR.js.br +0 -0
  47. package/build/client/_app/immutable/chunks/CwzIdrQR.js.gz +0 -0
  48. package/build/client/_app/immutable/chunks/D5speDV82.js.gz +0 -0
  49. package/build/client/_app/immutable/chunks/D64sGJRN.js +1 -0
  50. package/build/client/_app/immutable/chunks/D64sGJRN.js.br +0 -0
  51. package/build/client/_app/immutable/chunks/D64sGJRN.js.gz +0 -0
  52. package/build/client/_app/immutable/chunks/DNaA4QRO2.js +1 -0
  53. package/build/client/_app/immutable/chunks/DNaA4QRO2.js.br +0 -0
  54. package/build/client/_app/immutable/chunks/DNaA4QRO2.js.gz +0 -0
  55. package/build/client/_app/immutable/chunks/Da59TXPe.js +1 -0
  56. package/build/client/_app/immutable/chunks/Da59TXPe.js.br +2 -0
  57. package/build/client/_app/immutable/chunks/Da59TXPe.js.gz +0 -0
  58. package/build/client/_app/immutable/chunks/DhTiE3j02.js +2 -0
  59. package/build/client/_app/immutable/chunks/DhTiE3j02.js.br +0 -0
  60. package/build/client/_app/immutable/chunks/DhTiE3j02.js.gz +0 -0
  61. package/build/client/_app/immutable/chunks/Dhqg7r_2.js.gz +0 -0
  62. package/build/client/_app/immutable/chunks/DmyaDy4d2.js +1 -0
  63. package/build/client/_app/immutable/chunks/DmyaDy4d2.js.br +0 -0
  64. package/build/client/_app/immutable/chunks/DmyaDy4d2.js.gz +0 -0
  65. package/build/client/_app/immutable/chunks/{DkxwAIfJ2.js → DryaQyjN2.js} +1 -1
  66. package/build/client/_app/immutable/chunks/DryaQyjN2.js.br +0 -0
  67. package/build/client/_app/immutable/chunks/DryaQyjN2.js.gz +0 -0
  68. package/build/client/_app/immutable/chunks/DtK8qK5Q2.js +1 -0
  69. package/build/client/_app/immutable/chunks/DtK8qK5Q2.js.br +0 -0
  70. package/build/client/_app/immutable/chunks/DtK8qK5Q2.js.gz +0 -0
  71. package/build/client/_app/immutable/chunks/DtblIi6X2.js +1 -0
  72. package/build/client/_app/immutable/chunks/DtblIi6X2.js.br +1 -0
  73. package/build/client/_app/immutable/chunks/DtblIi6X2.js.gz +0 -0
  74. package/build/client/_app/immutable/chunks/UkzDDeO42.js +1 -0
  75. package/build/client/_app/immutable/chunks/UkzDDeO42.js.br +0 -0
  76. package/build/client/_app/immutable/chunks/UkzDDeO42.js.gz +0 -0
  77. package/build/client/_app/immutable/chunks/{B_9TWPrx2.js → Vu8LzrwP2.js} +1 -1
  78. package/build/client/_app/immutable/chunks/Vu8LzrwP2.js.br +0 -0
  79. package/build/client/_app/immutable/chunks/Vu8LzrwP2.js.gz +0 -0
  80. package/build/client/_app/immutable/chunks/_b612aVb.js +1 -0
  81. package/build/client/_app/immutable/chunks/_b612aVb.js.br +0 -0
  82. package/build/client/_app/immutable/chunks/_b612aVb.js.gz +0 -0
  83. package/build/client/_app/immutable/chunks/aNMRV4sP2.js.gz +0 -0
  84. package/build/client/_app/immutable/chunks/cMamJTsF.js.gz +0 -0
  85. package/build/client/_app/immutable/chunks/ib21i2T_.js.gz +0 -0
  86. package/build/client/_app/immutable/chunks/kNaey6uv.js.gz +0 -0
  87. package/build/client/_app/immutable/chunks/oVMDLirx.js +1 -0
  88. package/build/client/_app/immutable/chunks/oVMDLirx.js.br +0 -0
  89. package/build/client/_app/immutable/chunks/oVMDLirx.js.gz +0 -0
  90. package/build/client/_app/immutable/chunks/olAc024e.js +1 -0
  91. package/build/client/_app/immutable/chunks/olAc024e.js.br +0 -0
  92. package/build/client/_app/immutable/chunks/olAc024e.js.gz +0 -0
  93. package/build/client/_app/immutable/chunks/suTxxv1t.js.gz +0 -0
  94. package/build/client/_app/immutable/chunks/wXIHzLMQ2.js +1 -0
  95. package/build/client/_app/immutable/chunks/wXIHzLMQ2.js.br +0 -0
  96. package/build/client/_app/immutable/chunks/wXIHzLMQ2.js.gz +0 -0
  97. package/build/client/_app/immutable/chunks/{B439_FLv.js → wrqalH0a.js} +1 -1
  98. package/build/client/_app/immutable/chunks/wrqalH0a.js.br +0 -0
  99. package/build/client/_app/immutable/chunks/wrqalH0a.js.gz +0 -0
  100. package/build/client/_app/immutable/chunks/x60Tn5kT.js +1 -0
  101. package/build/client/_app/immutable/chunks/x60Tn5kT.js.br +0 -0
  102. package/build/client/_app/immutable/chunks/x60Tn5kT.js.gz +0 -0
  103. package/build/client/_app/immutable/chunks/xihTtKlq.js.gz +0 -0
  104. package/build/client/_app/immutable/chunks/{BOrLmFwJ.js → yShDxCNj.js} +1 -1
  105. package/build/client/_app/immutable/chunks/yShDxCNj.js.br +2 -0
  106. package/build/client/_app/immutable/chunks/yShDxCNj.js.gz +0 -0
  107. package/build/client/_app/immutable/entry/app.Etd-exTb.js +2 -0
  108. package/build/client/_app/immutable/entry/app.Etd-exTb.js.br +0 -0
  109. package/build/client/_app/immutable/entry/app.Etd-exTb.js.gz +0 -0
  110. package/build/client/_app/immutable/entry/start.DY2B3u4g.js +1 -0
  111. package/build/client/_app/immutable/entry/start.DY2B3u4g.js.br +0 -0
  112. package/build/client/_app/immutable/entry/start.DY2B3u4g.js.gz +0 -0
  113. package/build/client/_app/immutable/nodes/0.tKfYV3__.js +8 -0
  114. package/build/client/_app/immutable/nodes/0.tKfYV3__.js.br +0 -0
  115. package/build/client/_app/immutable/nodes/0.tKfYV3__.js.gz +0 -0
  116. package/build/client/_app/immutable/nodes/{1.Dyte3Ggf.js → 1.CER5ICKt.js} +1 -1
  117. package/build/client/_app/immutable/nodes/1.CER5ICKt.js.br +1 -0
  118. package/build/client/_app/immutable/nodes/1.CER5ICKt.js.gz +0 -0
  119. package/build/client/_app/immutable/nodes/10.rT7cD8kX.js +1 -0
  120. package/build/client/_app/immutable/nodes/10.rT7cD8kX.js.br +0 -0
  121. package/build/client/_app/immutable/nodes/10.rT7cD8kX.js.gz +0 -0
  122. package/build/client/_app/immutable/nodes/11.BAnV_Y5Y.js +2 -0
  123. package/build/client/_app/immutable/nodes/11.BAnV_Y5Y.js.br +0 -0
  124. package/build/client/_app/immutable/nodes/11.BAnV_Y5Y.js.gz +0 -0
  125. package/build/client/_app/immutable/nodes/{11.wvMfJKC2.js → 12.DCTRFMqo.js} +4 -3
  126. package/build/client/_app/immutable/nodes/12.DCTRFMqo.js.br +0 -0
  127. package/build/client/_app/immutable/nodes/12.DCTRFMqo.js.gz +0 -0
  128. package/build/client/_app/immutable/nodes/{2.CmPPom9Z.js → 2.CF488WWF.js} +1 -1
  129. package/build/client/_app/immutable/nodes/2.CF488WWF.js.br +0 -0
  130. package/build/client/_app/immutable/nodes/2.CF488WWF.js.gz +0 -0
  131. package/build/client/_app/immutable/nodes/3.CP7CPPVH.js +1 -0
  132. package/build/client/_app/immutable/nodes/3.CP7CPPVH.js.br +0 -0
  133. package/build/client/_app/immutable/nodes/3.CP7CPPVH.js.gz +0 -0
  134. package/build/client/_app/immutable/nodes/4.D1bxCSiM.js +3 -0
  135. package/build/client/_app/immutable/nodes/4.D1bxCSiM.js.br +0 -0
  136. package/build/client/_app/immutable/nodes/4.D1bxCSiM.js.gz +0 -0
  137. package/build/client/_app/immutable/nodes/5.D6jZgh9y.js +48 -0
  138. package/build/client/_app/immutable/nodes/5.D6jZgh9y.js.br +0 -0
  139. package/build/client/_app/immutable/nodes/5.D6jZgh9y.js.gz +0 -0
  140. package/build/client/_app/immutable/nodes/6.BrBFUA0s.js +1 -0
  141. package/build/client/_app/immutable/nodes/6.BrBFUA0s.js.br +0 -0
  142. package/build/client/_app/immutable/nodes/6.BrBFUA0s.js.gz +0 -0
  143. package/build/client/_app/immutable/nodes/7.pajo8MfM.js +3 -0
  144. package/build/client/_app/immutable/nodes/7.pajo8MfM.js.br +0 -0
  145. package/build/client/_app/immutable/nodes/7.pajo8MfM.js.gz +0 -0
  146. package/build/client/_app/immutable/nodes/8.Cc80_Igi.js +5 -0
  147. package/build/client/_app/immutable/nodes/8.Cc80_Igi.js.br +0 -0
  148. package/build/client/_app/immutable/nodes/8.Cc80_Igi.js.gz +0 -0
  149. package/build/client/_app/immutable/nodes/{8.B-HweAc8.js → 9.D72NaL3l.js} +1 -1
  150. package/build/client/_app/immutable/nodes/9.D72NaL3l.js.br +1 -0
  151. package/build/client/_app/immutable/nodes/9.D72NaL3l.js.gz +0 -0
  152. package/build/client/_app/version.json +1 -1
  153. package/build/client/_app/version.json.br +0 -0
  154. package/build/client/_app/version.json.gz +0 -0
  155. package/build/client/lyriks_logo.svg.gz +0 -0
  156. package/build/server/chunks/0-8YZc572z.js +15 -0
  157. package/build/server/chunks/0-8YZc572z.js.map +1 -0
  158. package/build/server/chunks/1-DxkfSJLu.js +9 -0
  159. package/build/server/chunks/{1-BSUItTig.js.map → 1-DxkfSJLu.js.map} +1 -1
  160. package/build/server/chunks/10-DkObdGtU.js +9 -0
  161. package/build/server/chunks/10-DkObdGtU.js.map +1 -0
  162. package/build/server/chunks/11-DL94HxpZ.js +9 -0
  163. package/build/server/chunks/11-DL94HxpZ.js.map +1 -0
  164. package/build/server/chunks/12-CI74sCkt.js +9 -0
  165. package/build/server/chunks/12-CI74sCkt.js.map +1 -0
  166. package/build/server/chunks/2-qhWwQ4eL.js +9 -0
  167. package/build/server/chunks/2-qhWwQ4eL.js.map +1 -0
  168. package/build/server/chunks/3-CzoZtSTp.js +16 -0
  169. package/build/server/chunks/3-CzoZtSTp.js.map +1 -0
  170. package/build/server/chunks/4-CDa9DBsh.js +16 -0
  171. package/build/server/chunks/4-CDa9DBsh.js.map +1 -0
  172. package/build/server/chunks/5-qD2xxOrq.js +9 -0
  173. package/build/server/chunks/5-qD2xxOrq.js.map +1 -0
  174. package/build/server/chunks/6-B4mWzvDn.js +9 -0
  175. package/build/server/chunks/6-B4mWzvDn.js.map +1 -0
  176. package/build/server/chunks/7-zExv-fTN.js +9 -0
  177. package/build/server/chunks/7-zExv-fTN.js.map +1 -0
  178. package/build/server/chunks/8-BVrGdQg4.js +9 -0
  179. package/build/server/chunks/{7-C4hmS0dG.js.map → 8-BVrGdQg4.js.map} +1 -1
  180. package/build/server/chunks/9-BnZLRMYA.js +9 -0
  181. package/build/server/chunks/9-BnZLRMYA.js.map +1 -0
  182. package/build/server/chunks/{BehaviorGraph-m5kYj5HH.js → BehaviorGraph-C-9z37Sm.js} +43 -12
  183. package/build/server/chunks/BehaviorGraph-C-9z37Sm.js.map +1 -0
  184. package/build/server/chunks/Clock-BfMWQpmJ.js +5 -0
  185. package/build/server/chunks/Clock-BfMWQpmJ.js.map +1 -0
  186. package/build/server/chunks/DeleteDomain-BvHEgAyp.js +24 -0
  187. package/build/server/chunks/DeleteDomain-BvHEgAyp.js.map +1 -0
  188. package/build/server/chunks/{FeatureValidator-B8qEjAUW.js → DeleteFeature-DnK8sBJI.js} +142 -77
  189. package/build/server/chunks/DeleteFeature-DnK8sBJI.js.map +1 -0
  190. package/build/server/chunks/DeleteProject-BXZcehHZ.js +41 -0
  191. package/build/server/chunks/DeleteProject-BXZcehHZ.js.map +1 -0
  192. package/build/server/chunks/Effect-BJtLR-6l.js +46 -0
  193. package/build/server/chunks/Effect-BJtLR-6l.js.map +1 -0
  194. package/build/server/chunks/{FeatureCard-CfbXNYe8.js → FeatureCard-Bb50FEfp.js} +4 -4
  195. package/build/server/chunks/{FeatureCard-CfbXNYe8.js.map → FeatureCard-Bb50FEfp.js.map} +1 -1
  196. package/build/server/chunks/{FeatureJson-Bv-qiOSf.js → FeatureJson-DYvMEAub.js} +2 -2
  197. package/build/server/chunks/{FeatureJson-Bv-qiOSf.js.map → FeatureJson-DYvMEAub.js.map} +1 -1
  198. package/build/server/chunks/{FeatureTransforms-UWDHmWEg.js → FeatureTransforms-B0aI_CJD.js} +10 -3
  199. package/build/server/chunks/FeatureTransforms-B0aI_CJD.js.map +1 -0
  200. package/build/server/chunks/{ManageTagsDialog-DBxA3tM2.js → ManageTagsDialog-D5xbAVNB.js} +5 -5
  201. package/build/server/chunks/ManageTagsDialog-D5xbAVNB.js.map +1 -0
  202. package/build/server/chunks/{ProgressBar-DDoQJ_C9.js → ProgressBar-CUC2EZqG.js} +2 -2
  203. package/build/server/chunks/{ProgressBar-DDoQJ_C9.js.map → ProgressBar-CUC2EZqG.js.map} +1 -1
  204. package/build/server/chunks/{ProjectsIndex-DUVJ3hyL.js → ProjectsIndex-FgIu9dBp.js} +135 -14
  205. package/build/server/chunks/ProjectsIndex-FgIu9dBp.js.map +1 -0
  206. package/build/server/chunks/{RenameTag-BuWLMl1m.js → RenameTag-DWIIR4Bx.js} +3 -6
  207. package/build/server/chunks/RenameTag-DWIIR4Bx.js.map +1 -0
  208. package/build/server/chunks/ScenarioApplier-YPKECfZe.js +55 -0
  209. package/build/server/chunks/ScenarioApplier-YPKECfZe.js.map +1 -0
  210. package/build/server/chunks/SimulatorEngine-DM1F9nCO.js +1391 -0
  211. package/build/server/chunks/SimulatorEngine-DM1F9nCO.js.map +1 -0
  212. package/build/server/chunks/StateValue-BBjWox8f.js +105 -0
  213. package/build/server/chunks/StateValue-BBjWox8f.js.map +1 -0
  214. package/build/server/chunks/{TagDotStrip-B1XQ0m0Y.js → TagDotStrip-0rn-IJVE.js} +4 -4
  215. package/build/server/chunks/TagDotStrip-0rn-IJVE.js.map +1 -0
  216. package/build/server/chunks/{TagFilterSelect-DbO0Qduh.js → TagFilterSelect-Dbu-7Dg4.js} +5 -5
  217. package/build/server/chunks/{TagFilterSelect-DbO0Qduh.js.map → TagFilterSelect-Dbu-7Dg4.js.map} +1 -1
  218. package/build/server/chunks/{TagPalette-CtMNYCmu.js → TagPalette-CpdTiC_7.js} +101 -9
  219. package/build/server/chunks/TagPalette-CpdTiC_7.js.map +1 -0
  220. package/build/server/chunks/{TransitionCatalog-B8zHs-2E.js → TransitionCatalog-CYXUANy6.js} +2 -2
  221. package/build/server/chunks/TransitionCatalog-CYXUANy6.js.map +1 -0
  222. package/build/server/chunks/{_layout.svelte-CLTmk0xU.js → _layout.svelte-pSSG85WT.js} +689 -14
  223. package/build/server/chunks/_layout.svelte-pSSG85WT.js.map +1 -0
  224. package/build/server/chunks/{_page.svelte-Oj-W7G5s.js → _page.svelte-BNH3szkk.js} +22 -17
  225. package/build/server/chunks/{_page.svelte-Oj-W7G5s.js.map → _page.svelte-BNH3szkk.js.map} +1 -1
  226. package/build/server/chunks/_page.svelte-BcuGvUt1.js +37 -0
  227. package/build/server/chunks/{_page.svelte-Cham-dsM.js.map → _page.svelte-BcuGvUt1.js.map} +1 -1
  228. package/build/server/chunks/_page.svelte-BoOMG5Y0.js +37 -0
  229. package/build/server/chunks/{_page.svelte-B1nG3PKn.js.map → _page.svelte-BoOMG5Y0.js.map} +1 -1
  230. package/build/server/chunks/{_page.svelte-Caq7J0jU.js → _page.svelte-C4PRh_wP.js} +18 -12
  231. package/build/server/chunks/_page.svelte-C4PRh_wP.js.map +1 -0
  232. package/build/server/chunks/{_page.svelte-Z_kK2lHY.js → _page.svelte-Cqn34NXy.js} +19 -13
  233. package/build/server/chunks/_page.svelte-Cqn34NXy.js.map +1 -0
  234. package/build/server/chunks/{_page.svelte-B1s7jxaQ.js → _page.svelte-DSCeOGv7.js} +15 -10
  235. package/build/server/chunks/_page.svelte-DSCeOGv7.js.map +1 -0
  236. package/build/server/chunks/_page.svelte-DqWdGt48.js +182 -0
  237. package/build/server/chunks/_page.svelte-DqWdGt48.js.map +1 -0
  238. package/build/server/chunks/{_page.svelte-Dhwjwph_.js → _page.svelte-DsQHSEl4.js} +20 -12
  239. package/build/server/chunks/_page.svelte-DsQHSEl4.js.map +1 -0
  240. package/build/server/chunks/{_page.svelte-DlFVT40-.js → _page.svelte-Uioz8hsG.js} +18 -11
  241. package/build/server/chunks/{_page.svelte-DlFVT40-.js.map → _page.svelte-Uioz8hsG.js.map} +1 -1
  242. package/build/server/chunks/{_page.svelte-BW_nbAAH.js → _page.svelte-p38jot9e.js} +80 -173
  243. package/build/server/chunks/_page.svelte-p38jot9e.js.map +1 -0
  244. package/build/server/chunks/{_page.svelte-NVT2dzpG.js → _page.svelte-yN5kzgJ9.js} +218 -263
  245. package/build/server/chunks/_page.svelte-yN5kzgJ9.js.map +1 -0
  246. package/build/server/chunks/{_server.ts-DsbbVoOn.js → _server.ts-1CtrHhte.js} +4 -4
  247. package/build/server/chunks/{_server.ts-DsbbVoOn.js.map → _server.ts-1CtrHhte.js.map} +1 -1
  248. package/build/server/chunks/{_server.ts-CWvU15tL.js → _server.ts-71Qx1lQb.js} +4 -4
  249. package/build/server/chunks/{_server.ts-CWvU15tL.js.map → _server.ts-71Qx1lQb.js.map} +1 -1
  250. package/build/server/chunks/_server.ts-BAyekGHB.js +961 -0
  251. package/build/server/chunks/_server.ts-BAyekGHB.js.map +1 -0
  252. package/build/server/chunks/{_server.ts-BihpbxOW.js → _server.ts-BLWhU22T.js} +4 -4
  253. package/build/server/chunks/{_server.ts-BihpbxOW.js.map → _server.ts-BLWhU22T.js.map} +1 -1
  254. package/build/server/chunks/{_server.ts-YnfXkeMJ.js → _server.ts-C7EVZVxv.js} +22 -13
  255. package/build/server/chunks/_server.ts-C7EVZVxv.js.map +1 -0
  256. package/build/server/chunks/{_server.ts-vcaqdwxS.js → _server.ts-CGjYuLmo.js} +12 -7
  257. package/build/server/chunks/_server.ts-CGjYuLmo.js.map +1 -0
  258. package/build/server/chunks/{_server.ts-Dy5zQHe2.js → _server.ts-CX6H8fSE.js} +8 -31
  259. package/build/server/chunks/_server.ts-CX6H8fSE.js.map +1 -0
  260. package/build/server/chunks/{_server.ts-BuoQ02BW.js → _server.ts-CyEdTCLr.js} +4 -4
  261. package/build/server/chunks/{_server.ts-BuoQ02BW.js.map → _server.ts-CyEdTCLr.js.map} +1 -1
  262. package/build/server/chunks/_server.ts-DKVTM9Pj.js +77 -0
  263. package/build/server/chunks/_server.ts-DKVTM9Pj.js.map +1 -0
  264. package/build/server/chunks/{_server.ts-0uNTZKwF.js → _server.ts-Dip65hLJ.js} +15 -9
  265. package/build/server/chunks/_server.ts-Dip65hLJ.js.map +1 -0
  266. package/build/server/chunks/{_server.ts-D4EO0VHu.js → _server.ts-Dm0tCs2i.js} +5 -5
  267. package/build/server/chunks/{_server.ts-D4EO0VHu.js.map → _server.ts-Dm0tCs2i.js.map} +1 -1
  268. package/build/server/chunks/{_server.ts-BIBWjQI-.js → _server.ts-DsYwK_uW.js} +4 -4
  269. package/build/server/chunks/{_server.ts-BIBWjQI-.js.map → _server.ts-DsYwK_uW.js.map} +1 -1
  270. package/build/server/chunks/{_server.ts-DDa0Nk_S.js → _server.ts-RCEgegYU.js} +4 -4
  271. package/build/server/chunks/{_server.ts-DDa0Nk_S.js.map → _server.ts-RCEgegYU.js.map} +1 -1
  272. package/build/server/chunks/_server.ts-XOLAT4dd.js +146 -0
  273. package/build/server/chunks/_server.ts-XOLAT4dd.js.map +1 -0
  274. package/build/server/chunks/_server.ts-afh_zLVi.js +69 -0
  275. package/build/server/chunks/_server.ts-afh_zLVi.js.map +1 -0
  276. package/build/server/chunks/{browserContainer-CNX7ANld.js → browserContainer-BdldtueJ.js} +71 -1378
  277. package/build/server/chunks/browserContainer-BdldtueJ.js.map +1 -0
  278. package/build/server/chunks/buildSearchDocs-Cyfrnw9G.js +337 -0
  279. package/build/server/chunks/buildSearchDocs-Cyfrnw9G.js.map +1 -0
  280. package/build/server/chunks/{builderModeStore.svelte-BpRIU_zP.js → builderModeStore.svelte-BEZMQEqn.js} +7 -6
  281. package/build/server/chunks/builderModeStore.svelte-BEZMQEqn.js.map +1 -0
  282. package/build/server/chunks/{client-DeX3TC3s.js → client-C9Cat4DK.js} +3 -3
  283. package/build/server/chunks/{client-DeX3TC3s.js.map → client-C9Cat4DK.js.map} +1 -1
  284. package/build/server/chunks/{error.svelte-Cdjeq3L2.js → error.svelte-CzVR_A6P.js} +5 -5
  285. package/build/server/chunks/{error.svelte-Cdjeq3L2.js.map → error.svelte-CzVR_A6P.js.map} +1 -1
  286. package/build/server/chunks/featureQueueContext-DuXpyTdC.js +32 -0
  287. package/build/server/chunks/featureQueueContext-DuXpyTdC.js.map +1 -0
  288. package/build/server/chunks/{featureStore.svelte-DIYgPBVm.js → featureStore.svelte-DHZf88gu.js} +5 -4
  289. package/build/server/chunks/featureStore.svelte-DHZf88gu.js.map +1 -0
  290. package/build/server/chunks/{projectsStore.svelte-QDz5PchX.js → featuresStore.svelte-bUyQBg1-.js} +95 -3
  291. package/build/server/chunks/featuresStore.svelte-bUyQBg1-.js.map +1 -0
  292. package/build/server/chunks/humanize-CkCPfeWi.js +53 -0
  293. package/build/server/chunks/humanize-CkCPfeWi.js.map +1 -0
  294. package/build/server/chunks/{index-server-7H0jzj0M.js → index-server-DvBux_Gf.js} +47 -2
  295. package/build/server/chunks/{index-server-7H0jzj0M.js.map → index-server-DvBux_Gf.js.map} +1 -1
  296. package/build/server/chunks/{internal-KYK0WpL7.js → internal-BFt8yDlf.js} +3 -3
  297. package/build/server/chunks/{internal-KYK0WpL7.js.map → internal-BFt8yDlf.js.map} +1 -1
  298. package/build/server/chunks/projectBundleClient-BtvWPh87.js +168 -0
  299. package/build/server/chunks/projectBundleClient-BtvWPh87.js.map +1 -0
  300. package/build/server/chunks/projectContextStore.svelte-jRJGJZ42.js +141 -0
  301. package/build/server/chunks/projectContextStore.svelte-jRJGJZ42.js.map +1 -0
  302. package/build/server/chunks/projectFeaturesStore.svelte-BwNEtDIL.js +87 -0
  303. package/build/server/chunks/projectFeaturesStore.svelte-BwNEtDIL.js.map +1 -0
  304. package/build/server/chunks/{projectFeaturesStore.svelte-2o-72_vr.js → projectStore.svelte-BNuLNxk_.js} +5 -88
  305. package/build/server/chunks/projectStore.svelte-BNuLNxk_.js.map +1 -0
  306. package/build/server/chunks/{reconcile-B5xqb6-s.js → reconcile-CVG2LSlW.js} +60 -4
  307. package/build/server/chunks/reconcile-CVG2LSlW.js.map +1 -0
  308. package/build/server/chunks/{snapshotRepository-BPXCjX92.js → snapshotRepository-8f-2wTrb.js} +30 -5
  309. package/build/server/chunks/snapshotRepository-8f-2wTrb.js.map +1 -0
  310. package/build/server/chunks/{state-DBjl9lhV.js → state-CZZtjXLE.js} +3 -3
  311. package/build/server/chunks/{state-DBjl9lhV.js.map → state-CZZtjXLE.js.map} +1 -1
  312. package/build/server/chunks/{sync-DZ3dn761.js → sync-Bn6eSUhC.js} +3 -3
  313. package/build/server/chunks/{sync-DZ3dn761.js.map → sync-Bn6eSUhC.js.map} +1 -1
  314. package/build/server/chunks/{syncBridge-BwXzPdjJ.js → syncAwareRepositories-DvUjq5Q6.js} +27 -3
  315. package/build/server/chunks/syncAwareRepositories-DvUjq5Q6.js.map +1 -0
  316. package/build/server/chunks/{tagPaletteStore.svelte-DfZOBvgY.js → tagPaletteStore.svelte-C71bdzDl.js} +4 -4
  317. package/build/server/chunks/{tagPaletteStore.svelte-DfZOBvgY.js.map → tagPaletteStore.svelte-C71bdzDl.js.map} +1 -1
  318. package/build/server/index.js +2 -2
  319. package/build/server/index.js.map +1 -1
  320. package/build/server/manifest.js +59 -30
  321. package/build/server/manifest.js.map +1 -1
  322. package/cli/README.md +70 -2
  323. package/cli/commands/check.ts +190 -0
  324. package/cli/commands/ci.ts +71 -0
  325. package/cli/commands/coverage-ingest.ts +112 -0
  326. package/cli/commands/scenarios-adapter.ts +96 -0
  327. package/cli/scenarios/adapter-scaffold.ts +99 -0
  328. package/cli/scenarios/codegen.ts +7 -1
  329. package/cli/scenarios/results.ts +85 -0
  330. package/cli/skills/unspa-audit/SKILL.md +19 -0
  331. package/cli/skills/unspa-edit/SKILL.md +20 -3
  332. package/cli/skills/unspa-implement/SKILL.md +28 -0
  333. package/cli/unspa.ts +98 -0
  334. package/cli/util/context-files.ts +13 -2
  335. package/mcp-server/bin.ts +104 -104
  336. package/mcp-server/migrate-defaults.ts +164 -164
  337. package/mcp-server/repo-link.ts +142 -134
  338. package/mcp-server/resources/guide.ts +24 -4
  339. package/mcp-server/resources/operations.ts +3 -0
  340. package/mcp-server/seed-snapshots.ts +22 -22
  341. package/mcp-server/server.ts +8 -4
  342. package/mcp-server/sync-aware-repos.ts +79 -79
  343. package/mcp-server/sync-notifier.ts +180 -180
  344. package/mcp-server/tools/_codegen.ts +115 -115
  345. package/mcp-server/tools/_entity_builders.ts +30 -0
  346. package/mcp-server/tools/_shared.ts +210 -210
  347. package/mcp-server/tools/action.ts +210 -210
  348. package/mcp-server/tools/batch.ts +29 -5
  349. package/mcp-server/tools/effect.ts +139 -135
  350. package/mcp-server/tools/entity.ts +132 -132
  351. package/mcp-server/tools/entityField.ts +132 -132
  352. package/mcp-server/tools/event.ts +116 -116
  353. package/mcp-server/tools/feature.ts +264 -264
  354. package/mcp-server/tools/invariant.ts +275 -275
  355. package/mcp-server/tools/persona.ts +141 -141
  356. package/mcp-server/tools/project.ts +500 -391
  357. package/mcp-server/tools/reachabilityGoal.ts +97 -0
  358. package/mcp-server/tools/read.ts +526 -483
  359. package/mcp-server/tools/reorder.ts +114 -114
  360. package/mcp-server/tools/resource.ts +194 -194
  361. package/mcp-server/tools/rule.ts +302 -302
  362. package/mcp-server/tools/scenario.ts +4 -1
  363. package/mcp-server/tools/specGaps.ts +221 -221
  364. package/mcp-server/tools/state.ts +10 -2
  365. package/mcp-server/tools/surface.ts +102 -102
  366. package/mcp-server/tools/transition.ts +96 -96
  367. package/mcp-server/tools/verification.ts +131 -0
  368. package/package.json +14 -2
  369. package/src/app.css +26 -14
  370. package/src/features/behavior-model/application/ports/FeatureRepository.ts +16 -16
  371. package/src/features/behavior-model/application/use-cases/CreateFeature.ts +24 -24
  372. package/src/features/behavior-model/application/use-cases/DeleteFeature.ts +8 -8
  373. package/src/features/behavior-model/application/use-cases/GetFeature.ts +9 -9
  374. package/src/features/behavior-model/application/use-cases/ListFeatures.ts +10 -10
  375. package/src/features/behavior-model/application/use-cases/MutateFeature.ts +90 -90
  376. package/src/features/behavior-model/application/use-cases/SaveFeature.ts +31 -31
  377. package/src/features/behavior-model/domain/entities/Entity.ts +45 -45
  378. package/src/features/behavior-model/domain/entities/EventDefinition.ts +35 -35
  379. package/src/features/behavior-model/domain/entities/Feature.ts +10 -0
  380. package/src/features/behavior-model/domain/entities/Persona.ts +33 -33
  381. package/src/features/behavior-model/domain/entities/ReachabilityGoal.ts +39 -0
  382. package/src/features/behavior-model/domain/entities/Resource.ts +54 -54
  383. package/src/features/behavior-model/domain/entities/Scenario.ts +15 -0
  384. package/src/features/behavior-model/domain/entities/StateDefinition.ts +13 -0
  385. package/src/features/behavior-model/domain/entities/Surface.ts +75 -75
  386. package/src/features/behavior-model/domain/entities/index.ts +9 -9
  387. package/src/features/behavior-model/domain/services/BehaviorGraphModel.ts +25 -0
  388. package/src/features/behavior-model/domain/services/DerivedState.ts +67 -0
  389. package/src/features/behavior-model/domain/services/EffectApplier.ts +112 -3
  390. package/src/features/behavior-model/domain/services/EffectiveEntities.ts +166 -166
  391. package/src/features/behavior-model/domain/services/EntityDeducer.ts +83 -83
  392. package/src/features/behavior-model/domain/services/EventCatalog.ts +141 -141
  393. package/src/features/behavior-model/domain/services/FeatureExpressionNormalizer.ts +43 -5
  394. package/src/features/behavior-model/domain/services/FeatureSharedStateNormalizer.ts +24 -3
  395. package/src/features/behavior-model/domain/services/FeatureTransforms.ts +33 -0
  396. package/src/features/behavior-model/domain/services/FeatureValidator.ts +124 -16
  397. package/src/features/behavior-model/domain/services/PersonaApplier.ts +39 -39
  398. package/src/features/behavior-model/domain/services/ResourceDeducer.ts +64 -64
  399. package/src/features/behavior-model/domain/services/ResourceUsage.ts +79 -79
  400. package/src/features/behavior-model/domain/services/ScenarioApplier.ts +40 -40
  401. package/src/features/behavior-model/domain/services/SharedStateDefinitions.ts +32 -32
  402. package/src/features/behavior-model/domain/services/StatePathReferences.ts +249 -217
  403. package/src/features/behavior-model/domain/services/TransitionCatalog.ts +173 -173
  404. package/src/features/behavior-model/domain/value-objects/Effect.ts +100 -3
  405. package/src/features/behavior-model/domain/value-objects/EntityFieldType.ts +57 -57
  406. package/src/features/behavior-model/domain/value-objects/Expression.ts +22 -2
  407. package/src/features/behavior-model/domain/value-objects/ParameterType.ts +57 -57
  408. package/src/features/behavior-model/domain/value-objects/Resource.ts +210 -210
  409. package/src/features/behavior-model/domain/value-objects/RuleCategory.ts +57 -57
  410. package/src/features/behavior-model/domain/value-objects/RuleCondition.ts +52 -1
  411. package/src/features/behavior-model/domain/value-objects/SimulationClock.ts +35 -0
  412. package/src/features/behavior-model/domain/value-objects/ids.ts +2 -0
  413. package/src/features/behavior-model/infrastructure/io/FeatureJson.ts +89 -89
  414. package/src/features/behavior-model/infrastructure/persistence/HttpFeatureRepository.ts +43 -43
  415. package/src/features/behavior-model/infrastructure/persistence/JsonFolderFeatureRepository.ts +10 -0
  416. package/src/features/behavior-model/infrastructure/persistence/snapshot-discovery.ts +76 -76
  417. package/src/features/behavior-model/infrastructure/seed/seedStorefront.ts +967 -967
  418. package/src/features/behavior-model/presentation/adapters/VisBehaviorGraphRenderer.ts +10 -1
  419. package/src/features/behavior-model/presentation/components/ActionEditor.svelte +683 -682
  420. package/src/features/behavior-model/presentation/components/ActionsEditor.svelte +232 -232
  421. package/src/features/behavior-model/presentation/components/BehaviorGraph.svelte +275 -77
  422. package/src/features/behavior-model/presentation/components/EffectEditor.svelte +168 -168
  423. package/src/features/behavior-model/presentation/components/EntityEditor.svelte +241 -248
  424. package/src/features/behavior-model/presentation/components/EntityFieldRow.svelte +180 -181
  425. package/src/features/behavior-model/presentation/components/EntityManager.svelte +252 -251
  426. package/src/features/behavior-model/presentation/components/EventsManager.svelte +373 -372
  427. package/src/features/behavior-model/presentation/components/FeatureEditor.svelte +396 -348
  428. package/src/features/behavior-model/presentation/components/FeatureHeader.svelte +152 -143
  429. package/src/features/behavior-model/presentation/components/FeatureHealthStrip.svelte +110 -110
  430. package/src/features/behavior-model/presentation/components/HistoryPanel.svelte +154 -154
  431. package/src/features/behavior-model/presentation/components/NewFeatureForm.svelte +66 -66
  432. package/src/features/behavior-model/presentation/components/ParameterNameSelect.svelte +84 -84
  433. package/src/features/behavior-model/presentation/components/ParametersEditor.svelte +411 -411
  434. package/src/features/behavior-model/presentation/components/PersonaEditor.svelte +244 -244
  435. package/src/features/behavior-model/presentation/components/PersonasManager.svelte +130 -130
  436. package/src/features/behavior-model/presentation/components/ReachabilityGoalEditor.svelte +230 -0
  437. package/src/features/behavior-model/presentation/components/ReachabilityGoalsEditor.svelte +86 -0
  438. package/src/features/behavior-model/presentation/components/ResourcesManager.svelte +291 -290
  439. package/src/features/behavior-model/presentation/components/ScenariosEditor.svelte +496 -496
  440. package/src/features/behavior-model/presentation/components/StateDefinitionsEditor.svelte +356 -356
  441. package/src/features/behavior-model/presentation/components/SurfaceEntitiesView.svelte +88 -88
  442. package/src/features/behavior-model/presentation/components/SurfaceInvariantsEditor.svelte +76 -76
  443. package/src/features/behavior-model/presentation/components/SurfaceList.svelte +300 -300
  444. package/src/features/behavior-model/presentation/components/SurfaceMetaEditor.svelte +158 -156
  445. package/src/features/behavior-model/presentation/components/SurfacePanel.svelte +198 -198
  446. package/src/features/behavior-model/presentation/components/SurfacePersonasView.svelte +122 -122
  447. package/src/features/behavior-model/presentation/components/SurfaceResourcesView.svelte +113 -113
  448. package/src/features/behavior-model/presentation/components/SurfaceRulesEditor.svelte +69 -69
  449. package/src/features/behavior-model/presentation/components/TransitionsManager.svelte +322 -321
  450. package/src/features/behavior-model/presentation/context/featureQueueContext.ts +78 -0
  451. package/src/features/behavior-model/presentation/stores/editorStore.svelte.ts +132 -131
  452. package/src/features/behavior-model/presentation/stores/featureStore.svelte.ts +177 -177
  453. package/src/features/behavior-model/presentation/stores/featuresStore.svelte.ts +98 -98
  454. package/src/features/behavior-model/presentation/view-models/BehaviorGraphTheme.ts +1 -0
  455. package/src/features/behavior-model/presentation/view-models/factories.ts +181 -132
  456. package/src/features/domains/infrastructure/persistence/JsonFolderDomainRepository.ts +9 -0
  457. package/src/features/global-search/application/use-cases/LoadSearchIndex.ts +70 -0
  458. package/src/features/global-search/domain/SearchDoc.ts +111 -0
  459. package/src/features/global-search/domain/buildSearchDocs.ts +483 -0
  460. package/src/features/global-search/domain/searchNav.ts +58 -0
  461. package/src/features/global-search/domain/searchScoring.ts +81 -0
  462. package/src/features/global-search/infrastructure/adapters/defaultSearchHost.ts +28 -0
  463. package/src/features/global-search/presentation/components/GlobalSearch.svelte +262 -0
  464. package/src/features/global-search/presentation/ports/SearchHostPorts.ts +41 -0
  465. package/src/features/global-search/presentation/searchKindMeta.ts +108 -0
  466. package/src/features/global-search/presentation/stores/globalSearchStore.svelte.ts +171 -0
  467. package/src/features/implementation-queue/presentation/components/FloatingQueueWidget.svelte +264 -0
  468. package/src/features/implementation-queue/presentation/stores/globalQueueStore.svelte.ts +172 -0
  469. package/src/features/implementation-status/application/ports/ImplementationStatusRepository.ts +8 -8
  470. package/src/features/implementation-status/application/use-cases/GetImplementationStatus.ts +8 -8
  471. package/src/features/implementation-status/domain/ApplyCapturedToSpec.ts +323 -322
  472. package/src/features/implementation-status/domain/FieldDiff.ts +238 -236
  473. package/src/features/implementation-status/infrastructure/persistence/InMemoryImplementationStatusRepository.ts +21 -21
  474. package/src/features/implementation-status/presentation/components/ImplementationStatusPanel.svelte +831 -831
  475. package/src/features/implementation-status/presentation/stores/implementationStatusStore.svelte.ts +97 -97
  476. package/src/features/library/application/use-cases/ApplyBlueprintsToFeature.ts +33 -33
  477. package/src/features/library/domain/services/BlueprintApplier.ts +94 -94
  478. package/src/features/library/infrastructure/blueprints/auth/ResetPasswordBlueprint.ts +332 -332
  479. package/src/features/library/infrastructure/blueprints/auth/SignInBlueprint.ts +281 -281
  480. package/src/features/library/infrastructure/blueprints/auth/SignUpBlueprint.ts +299 -299
  481. package/src/features/library/infrastructure/blueprints/auth/VerifyEmailBlueprint.ts +288 -288
  482. package/src/features/library/infrastructure/blueprints/auth/shared.ts +146 -146
  483. package/src/features/library/infrastructure/blueprints/commerce/CartBlueprint.ts +222 -222
  484. package/src/features/library/infrastructure/blueprints/commerce/CatalogBlueprint.ts +190 -190
  485. package/src/features/library/infrastructure/blueprints/commerce/CheckoutBlueprint.ts +322 -322
  486. package/src/features/library/infrastructure/blueprints/commerce/OrderConfirmationBlueprint.ts +172 -172
  487. package/src/features/library/infrastructure/blueprints/commerce/ProductDetailsBlueprint.ts +290 -290
  488. package/src/features/library/infrastructure/blueprints/content/ReviewsBlueprint.ts +392 -392
  489. package/src/features/library/infrastructure/blueprints/onboarding/OnboardingWizardBlueprint.ts +344 -344
  490. package/src/features/library/infrastructure/blueprints/utility/CanvasBlueprint.ts +419 -419
  491. package/src/features/library/infrastructure/blueprints/utility/CookieConsentBlueprint.ts +195 -195
  492. package/src/features/library/infrastructure/blueprints/utility/NotFoundBlueprint.ts +86 -86
  493. package/src/features/library/infrastructure/blueprints/utility/SearchPaletteBlueprint.ts +192 -192
  494. package/src/features/library/infrastructure/blueprints/utility/StoreLocatorBlueprint.ts +221 -221
  495. package/src/features/library/infrastructure/blueprints/utility/TaskBoardBlueprint.ts +196 -196
  496. package/src/features/maturity/application/use-cases/ScoreFeature.ts +7 -7
  497. package/src/features/maturity/domain/MaturityReport.ts +70 -70
  498. package/src/features/maturity/domain/MaturityScorer.ts +1001 -985
  499. package/src/features/maturity/presentation/components/MaturityPanel.svelte +376 -372
  500. package/src/features/mcp-tools/application/tools/dryRunSimulate.ts +24 -24
  501. package/src/features/mcp-tools/application/tools/findStateReferences.ts +19 -19
  502. package/src/features/mcp-tools/application/tools/generateTypes.ts +0 -1
  503. package/src/features/mcp-tools/application/tools/getAction.ts +165 -165
  504. package/src/features/mcp-tools/application/tools/getFeature.ts +5 -5
  505. package/src/features/mcp-tools/application/tools/getFeatureIndex.ts +79 -79
  506. package/src/features/mcp-tools/application/tools/getNeighborhood.ts +319 -319
  507. package/src/features/mcp-tools/application/tools/getSurface.ts +86 -86
  508. package/src/features/mcp-tools/application/tools/index.ts +56 -56
  509. package/src/features/mcp-tools/application/tools/listActions.ts +49 -49
  510. package/src/features/mcp-tools/application/tools/listFeatures.ts +7 -7
  511. package/src/features/mcp-tools/application/tools/scoreFeature.ts +153 -153
  512. package/src/features/projects/application/ports/ProjectRepository.ts +14 -14
  513. package/src/features/projects/application/use-cases/AddFeatureToProject.ts +23 -23
  514. package/src/features/projects/application/use-cases/CreateProject.ts +16 -16
  515. package/src/features/projects/application/use-cases/FindProjectContainingFeature.ts +23 -23
  516. package/src/features/projects/application/use-cases/GetProjectAggregate.ts +131 -131
  517. package/src/features/projects/application/use-cases/ImportProjectBundle.ts +45 -0
  518. package/src/features/projects/application/use-cases/MoveFeatureInProject.ts +36 -36
  519. package/src/features/projects/application/use-cases/RemoveFeatureFromProject.ts +23 -23
  520. package/src/features/projects/domain/entities/Project.ts +12 -0
  521. package/src/features/projects/domain/services/InheritedFromProject.ts +130 -130
  522. package/src/features/projects/infrastructure/persistence/JsonFolderProjectRepository.ts +9 -0
  523. package/src/features/projects/presentation/components/ProjectCard.svelte +27 -8
  524. package/src/features/projects/presentation/components/ProjectEditor.svelte +17 -20
  525. package/src/features/projects/presentation/components/ProjectFeaturesPanel.svelte +433 -433
  526. package/src/features/projects/presentation/components/ProjectsIndex.svelte +54 -10
  527. package/src/features/projects/presentation/stores/projectContextStore.svelte.ts +170 -170
  528. package/src/features/projects/presentation/stores/projectFeaturesStore.svelte.ts +114 -114
  529. package/src/features/projects/presentation/stores/projectStore.svelte.ts +265 -266
  530. package/src/features/projects/presentation/stores/projectsStore.svelte.ts +134 -134
  531. package/src/features/simulator/application/use-cases/RunScenarios.ts +12 -0
  532. package/src/features/simulator/application/use-cases/SimulateAction.ts +47 -47
  533. package/src/features/simulator/domain/SimulationResult.ts +79 -79
  534. package/src/features/simulator/domain/SimulatorEngine.ts +43 -9
  535. package/src/features/simulator/domain/StateExplorer.ts +369 -0
  536. package/src/features/simulator/domain/SurfaceReachability.ts +130 -0
  537. package/src/features/simulator/presentation/components/ParameterInputs.svelte +277 -277
  538. package/src/features/simulator/presentation/components/PersonaPicker.svelte +52 -52
  539. package/src/features/simulator/presentation/components/ScenarioPicker.svelte +42 -45
  540. package/src/features/simulator/presentation/components/SidePanel.svelte +170 -170
  541. package/src/features/simulator/presentation/components/SimulationResultView.svelte +394 -394
  542. package/src/features/simulator/presentation/components/SimulatorPanel.svelte +293 -293
  543. package/src/features/simulator/presentation/components/StateInspector.svelte +101 -101
  544. package/src/features/simulator/presentation/stores/simulatorStore.svelte.ts +268 -268
  545. package/src/features/tutorial/presentation/components/CodeBlock.svelte +5 -1
  546. package/src/features/verification/application/ports/BehavioralIndexReader.ts +12 -0
  547. package/src/features/verification/application/use-cases/VerifyFeatures.ts +151 -0
  548. package/src/features/verification/domain/DriftReport.ts +37 -0
  549. package/src/features/verification/domain/EventCoherenceReport.ts +27 -0
  550. package/src/features/verification/domain/IndexedImplementation.ts +27 -0
  551. package/src/features/verification/domain/VerificationReport.ts +59 -0
  552. package/src/features/verification/domain/VerificationThresholds.ts +52 -0
  553. package/src/features/verification/domain/VerificationVerdict.ts +43 -0
  554. package/src/features/verification/domain/aggregateVerdict.ts +244 -0
  555. package/src/features/verification/domain/analyzeEventCoherence.ts +43 -0
  556. package/src/features/verification/domain/detectDrift.ts +166 -0
  557. package/src/features/verification/domain/verifiedCoverage.ts +37 -0
  558. package/src/features/verification/infrastructure/persistence/FileBehavioralIndexReader.ts +81 -0
  559. package/src/features/verification/infrastructure/persistence/StaticBehavioralIndexReader.ts +15 -0
  560. package/src/features/verification/presentation/components/VerifyPanel.svelte +74 -0
  561. package/src/features/verification/presentation/stores/verificationStore.svelte.ts +64 -0
  562. package/src/lib/server/openLocalDirectory.ts +40 -0
  563. package/src/lib/server/searchIndex.ts +161 -0
  564. package/src/lib/server/snapshotRepository.ts +37 -37
  565. package/src/lib/server/sync/YDocManager.ts +391 -391
  566. package/src/lib/server/sync/historyStore.ts +276 -276
  567. package/src/lib/server/sync/wsServer.ts +1 -1
  568. package/src/lib/sync/protocol.ts +147 -147
  569. package/src/lib/sync/roomId.ts +33 -33
  570. package/src/routes/+layout.svelte +104 -0
  571. package/src/routes/api/domains/[id]/+server.ts +7 -3
  572. package/src/routes/api/projects/[id]/+server.ts +14 -4
  573. package/src/routes/api/projects/import/+server.ts +16 -38
  574. package/src/routes/api/search-index/+server.ts +16 -0
  575. package/src/routes/api/snapshots/[id]/+server.ts +56 -44
  576. package/src/routes/api/snapshots/[id]/implementation-status/+server.ts +13 -13
  577. package/src/routes/api/snapshots/[id]/verify/+server.ts +37 -0
  578. package/src/routes/api/sync/reload/+server.ts +157 -157
  579. package/src/routes/api/system/hub-directory/+server.ts +24 -0
  580. package/src/routes/features/+page.svelte +484 -484
  581. package/src/routes/features/[id]/+page.svelte +55 -49
  582. package/src/routes/features/[id]/graph/+page.svelte +5 -0
  583. package/src/routes/features/[id]/verify/+page.svelte +89 -0
  584. package/src/routes/mcp/+page.svelte +16 -1
  585. package/src/routes/projects/[id]/+page.svelte +70 -70
  586. package/src/routes/tutorial/+page.svelte +3 -2
  587. package/src/shared/infrastructure/browserContainer.ts +61 -61
  588. package/src/shared/presentation/components/KebabMenu.svelte +95 -0
  589. package/src/shared/presentation/components/MenuItem.svelte +29 -0
  590. package/vite.config.ts +47 -47
  591. package/build/client/_app/immutable/assets/0.DSctqr5I.css +0 -1
  592. package/build/client/_app/immutable/assets/0.DSctqr5I.css.br +0 -0
  593. package/build/client/_app/immutable/assets/0.DSctqr5I.css.gz +0 -0
  594. package/build/client/_app/immutable/assets/11.nv0I59TU.css.gz +0 -0
  595. package/build/client/_app/immutable/chunks/9nXQ5qrY2.js +0 -1
  596. package/build/client/_app/immutable/chunks/9nXQ5qrY2.js.br +0 -0
  597. package/build/client/_app/immutable/chunks/9nXQ5qrY2.js.gz +0 -0
  598. package/build/client/_app/immutable/chunks/B439_FLv.js.br +0 -0
  599. package/build/client/_app/immutable/chunks/B439_FLv.js.gz +0 -0
  600. package/build/client/_app/immutable/chunks/BCEY79Dw.js +0 -1
  601. package/build/client/_app/immutable/chunks/BCEY79Dw.js.br +0 -2
  602. package/build/client/_app/immutable/chunks/BCEY79Dw.js.gz +0 -0
  603. package/build/client/_app/immutable/chunks/BOrLmFwJ.js.br +0 -0
  604. package/build/client/_app/immutable/chunks/BOrLmFwJ.js.gz +0 -0
  605. package/build/client/_app/immutable/chunks/BYIrIC5L.js +0 -1
  606. package/build/client/_app/immutable/chunks/BYIrIC5L.js.br +0 -0
  607. package/build/client/_app/immutable/chunks/BYIrIC5L.js.gz +0 -0
  608. package/build/client/_app/immutable/chunks/B_9TWPrx2.js.br +0 -0
  609. package/build/client/_app/immutable/chunks/B_9TWPrx2.js.gz +0 -0
  610. package/build/client/_app/immutable/chunks/BfMYiIUi.js.br +0 -0
  611. package/build/client/_app/immutable/chunks/BfMYiIUi.js.gz +0 -0
  612. package/build/client/_app/immutable/chunks/Bp2_Vghh.js +0 -1
  613. package/build/client/_app/immutable/chunks/Bp2_Vghh.js.br +0 -0
  614. package/build/client/_app/immutable/chunks/Bp2_Vghh.js.gz +0 -0
  615. package/build/client/_app/immutable/chunks/Bp8HpEPe2.js +0 -4
  616. package/build/client/_app/immutable/chunks/Bp8HpEPe2.js.br +0 -0
  617. package/build/client/_app/immutable/chunks/Bp8HpEPe2.js.gz +0 -0
  618. package/build/client/_app/immutable/chunks/BvOhVtZg.js +0 -1
  619. package/build/client/_app/immutable/chunks/BvOhVtZg.js.br +0 -1
  620. package/build/client/_app/immutable/chunks/BvOhVtZg.js.gz +0 -0
  621. package/build/client/_app/immutable/chunks/C8rRKIXT.js +0 -1
  622. package/build/client/_app/immutable/chunks/C8rRKIXT.js.br +0 -0
  623. package/build/client/_app/immutable/chunks/C8rRKIXT.js.gz +0 -0
  624. package/build/client/_app/immutable/chunks/CJjJLwzv2.js +0 -1
  625. package/build/client/_app/immutable/chunks/CJjJLwzv2.js.br +0 -0
  626. package/build/client/_app/immutable/chunks/CJjJLwzv2.js.gz +0 -0
  627. package/build/client/_app/immutable/chunks/CY3em1ma2.js +0 -1
  628. package/build/client/_app/immutable/chunks/CY3em1ma2.js.br +0 -0
  629. package/build/client/_app/immutable/chunks/CY3em1ma2.js.gz +0 -0
  630. package/build/client/_app/immutable/chunks/CgdRZPgI.js +0 -1
  631. package/build/client/_app/immutable/chunks/CgdRZPgI.js.br +0 -0
  632. package/build/client/_app/immutable/chunks/CgdRZPgI.js.gz +0 -0
  633. package/build/client/_app/immutable/chunks/CxyLMlpt2.js.br +0 -0
  634. package/build/client/_app/immutable/chunks/CxyLMlpt2.js.gz +0 -0
  635. package/build/client/_app/immutable/chunks/D6jhrpTg.js +0 -1
  636. package/build/client/_app/immutable/chunks/D6jhrpTg.js.br +0 -0
  637. package/build/client/_app/immutable/chunks/D6jhrpTg.js.gz +0 -0
  638. package/build/client/_app/immutable/chunks/D8YEa1po.js +0 -1
  639. package/build/client/_app/immutable/chunks/D8YEa1po.js.br +0 -0
  640. package/build/client/_app/immutable/chunks/D8YEa1po.js.gz +0 -0
  641. package/build/client/_app/immutable/chunks/D9dKmajw.js +0 -1
  642. package/build/client/_app/immutable/chunks/D9dKmajw.js.br +0 -0
  643. package/build/client/_app/immutable/chunks/D9dKmajw.js.gz +0 -0
  644. package/build/client/_app/immutable/chunks/DKgYpi6_.js +0 -1
  645. package/build/client/_app/immutable/chunks/DKgYpi6_.js.br +0 -0
  646. package/build/client/_app/immutable/chunks/DKgYpi6_.js.gz +0 -0
  647. package/build/client/_app/immutable/chunks/Dg0acPpT.js +0 -1
  648. package/build/client/_app/immutable/chunks/Dg0acPpT.js.br +0 -0
  649. package/build/client/_app/immutable/chunks/Dg0acPpT.js.gz +0 -0
  650. package/build/client/_app/immutable/chunks/DkxwAIfJ2.js.br +0 -0
  651. package/build/client/_app/immutable/chunks/DkxwAIfJ2.js.gz +0 -0
  652. package/build/client/_app/immutable/chunks/HKLi1Yz3.js +0 -1
  653. package/build/client/_app/immutable/chunks/HKLi1Yz3.js.br +0 -0
  654. package/build/client/_app/immutable/chunks/HKLi1Yz3.js.gz +0 -0
  655. package/build/client/_app/immutable/chunks/N7PXjlRH.js +0 -1
  656. package/build/client/_app/immutable/chunks/N7PXjlRH.js.br +0 -0
  657. package/build/client/_app/immutable/chunks/N7PXjlRH.js.gz +0 -0
  658. package/build/client/_app/immutable/chunks/OJscNS3T.js +0 -1
  659. package/build/client/_app/immutable/chunks/OJscNS3T.js.br +0 -0
  660. package/build/client/_app/immutable/chunks/OJscNS3T.js.gz +0 -0
  661. package/build/client/_app/immutable/chunks/U9p9CtKG2.js +0 -2
  662. package/build/client/_app/immutable/chunks/U9p9CtKG2.js.br +0 -0
  663. package/build/client/_app/immutable/chunks/U9p9CtKG2.js.gz +0 -0
  664. package/build/client/_app/immutable/chunks/hpWJNn0t2.js +0 -2
  665. package/build/client/_app/immutable/chunks/hpWJNn0t2.js.br +0 -0
  666. package/build/client/_app/immutable/chunks/hpWJNn0t2.js.gz +0 -0
  667. package/build/client/_app/immutable/entry/app.Cd4S3giu.js +0 -2
  668. package/build/client/_app/immutable/entry/app.Cd4S3giu.js.br +0 -0
  669. package/build/client/_app/immutable/entry/app.Cd4S3giu.js.gz +0 -0
  670. package/build/client/_app/immutable/entry/start.C3xXQVkq.js +0 -1
  671. package/build/client/_app/immutable/entry/start.C3xXQVkq.js.br +0 -0
  672. package/build/client/_app/immutable/entry/start.C3xXQVkq.js.gz +0 -0
  673. package/build/client/_app/immutable/nodes/0.dIOlQ-0y.js +0 -4
  674. package/build/client/_app/immutable/nodes/0.dIOlQ-0y.js.br +0 -0
  675. package/build/client/_app/immutable/nodes/0.dIOlQ-0y.js.gz +0 -0
  676. package/build/client/_app/immutable/nodes/1.Dyte3Ggf.js.br +0 -2
  677. package/build/client/_app/immutable/nodes/1.Dyte3Ggf.js.gz +0 -0
  678. package/build/client/_app/immutable/nodes/10.ivxAosDg.js +0 -2
  679. package/build/client/_app/immutable/nodes/10.ivxAosDg.js.br +0 -0
  680. package/build/client/_app/immutable/nodes/10.ivxAosDg.js.gz +0 -0
  681. package/build/client/_app/immutable/nodes/11.wvMfJKC2.js.br +0 -0
  682. package/build/client/_app/immutable/nodes/11.wvMfJKC2.js.gz +0 -0
  683. package/build/client/_app/immutable/nodes/2.CmPPom9Z.js.br +0 -0
  684. package/build/client/_app/immutable/nodes/2.CmPPom9Z.js.gz +0 -0
  685. package/build/client/_app/immutable/nodes/3.D-iCGCEx.js +0 -1
  686. package/build/client/_app/immutable/nodes/3.D-iCGCEx.js.br +0 -0
  687. package/build/client/_app/immutable/nodes/3.D-iCGCEx.js.gz +0 -0
  688. package/build/client/_app/immutable/nodes/4.DbfAvO8Z.js +0 -3
  689. package/build/client/_app/immutable/nodes/4.DbfAvO8Z.js.br +0 -0
  690. package/build/client/_app/immutable/nodes/4.DbfAvO8Z.js.gz +0 -0
  691. package/build/client/_app/immutable/nodes/5.CC5Q7lVw.js +0 -42
  692. package/build/client/_app/immutable/nodes/5.CC5Q7lVw.js.br +0 -0
  693. package/build/client/_app/immutable/nodes/5.CC5Q7lVw.js.gz +0 -0
  694. package/build/client/_app/immutable/nodes/6.CHIjlzpO.js +0 -1
  695. package/build/client/_app/immutable/nodes/6.CHIjlzpO.js.br +0 -0
  696. package/build/client/_app/immutable/nodes/6.CHIjlzpO.js.gz +0 -0
  697. package/build/client/_app/immutable/nodes/7.Ejs18ZUc.js +0 -5
  698. package/build/client/_app/immutable/nodes/7.Ejs18ZUc.js.br +0 -0
  699. package/build/client/_app/immutable/nodes/7.Ejs18ZUc.js.gz +0 -0
  700. package/build/client/_app/immutable/nodes/8.B-HweAc8.js.br +0 -0
  701. package/build/client/_app/immutable/nodes/8.B-HweAc8.js.gz +0 -0
  702. package/build/client/_app/immutable/nodes/9.CKPeM6tx.js +0 -5
  703. package/build/client/_app/immutable/nodes/9.CKPeM6tx.js.br +0 -0
  704. package/build/client/_app/immutable/nodes/9.CKPeM6tx.js.gz +0 -0
  705. package/build/server/chunks/0-Co8kcANG.js +0 -15
  706. package/build/server/chunks/0-Co8kcANG.js.map +0 -1
  707. package/build/server/chunks/1-BSUItTig.js +0 -9
  708. package/build/server/chunks/10-BygvxrZp.js +0 -9
  709. package/build/server/chunks/10-BygvxrZp.js.map +0 -1
  710. package/build/server/chunks/11-DRx0tRx2.js +0 -9
  711. package/build/server/chunks/11-DRx0tRx2.js.map +0 -1
  712. package/build/server/chunks/2-BQT3m1vc.js +0 -9
  713. package/build/server/chunks/2-BQT3m1vc.js.map +0 -1
  714. package/build/server/chunks/3-DPZ9BquJ.js +0 -16
  715. package/build/server/chunks/3-DPZ9BquJ.js.map +0 -1
  716. package/build/server/chunks/4-DHo47YX6.js +0 -16
  717. package/build/server/chunks/4-DHo47YX6.js.map +0 -1
  718. package/build/server/chunks/5-Cp9evBAG.js +0 -9
  719. package/build/server/chunks/5-Cp9evBAG.js.map +0 -1
  720. package/build/server/chunks/6-DiBq3bOV.js +0 -9
  721. package/build/server/chunks/6-DiBq3bOV.js.map +0 -1
  722. package/build/server/chunks/7-C4hmS0dG.js +0 -9
  723. package/build/server/chunks/8-CFFuDzBC.js +0 -9
  724. package/build/server/chunks/8-CFFuDzBC.js.map +0 -1
  725. package/build/server/chunks/9-nhhKZJrs.js +0 -9
  726. package/build/server/chunks/9-nhhKZJrs.js.map +0 -1
  727. package/build/server/chunks/BehaviorGraph-m5kYj5HH.js.map +0 -1
  728. package/build/server/chunks/FeatureTransforms-UWDHmWEg.js.map +0 -1
  729. package/build/server/chunks/FeatureValidator-B8qEjAUW.js.map +0 -1
  730. package/build/server/chunks/ManageTagsDialog-DBxA3tM2.js.map +0 -1
  731. package/build/server/chunks/ProjectsIndex-DUVJ3hyL.js.map +0 -1
  732. package/build/server/chunks/RenameTag-BuWLMl1m.js.map +0 -1
  733. package/build/server/chunks/TagDotStrip-B1XQ0m0Y.js.map +0 -1
  734. package/build/server/chunks/TagPalette-CtMNYCmu.js.map +0 -1
  735. package/build/server/chunks/TransitionCatalog-B8zHs-2E.js.map +0 -1
  736. package/build/server/chunks/_layout.svelte-CLTmk0xU.js.map +0 -1
  737. package/build/server/chunks/_page.svelte-B1nG3PKn.js +0 -29
  738. package/build/server/chunks/_page.svelte-B1s7jxaQ.js.map +0 -1
  739. package/build/server/chunks/_page.svelte-BW_nbAAH.js.map +0 -1
  740. package/build/server/chunks/_page.svelte-Caq7J0jU.js.map +0 -1
  741. package/build/server/chunks/_page.svelte-Cham-dsM.js +0 -29
  742. package/build/server/chunks/_page.svelte-Dhwjwph_.js.map +0 -1
  743. package/build/server/chunks/_page.svelte-NVT2dzpG.js.map +0 -1
  744. package/build/server/chunks/_page.svelte-Z_kK2lHY.js.map +0 -1
  745. package/build/server/chunks/_server.ts-0uNTZKwF.js.map +0 -1
  746. package/build/server/chunks/_server.ts-DcZPhyhK.js +0 -59
  747. package/build/server/chunks/_server.ts-DcZPhyhK.js.map +0 -1
  748. package/build/server/chunks/_server.ts-Dy5zQHe2.js.map +0 -1
  749. package/build/server/chunks/_server.ts-YnfXkeMJ.js.map +0 -1
  750. package/build/server/chunks/_server.ts-vcaqdwxS.js.map +0 -1
  751. package/build/server/chunks/browserContainer-CNX7ANld.js.map +0 -1
  752. package/build/server/chunks/builderModeStore.svelte-BpRIU_zP.js.map +0 -1
  753. package/build/server/chunks/featureStore.svelte-DIYgPBVm.js.map +0 -1
  754. package/build/server/chunks/featuresStore.svelte-DR1gYZyu.js +0 -98
  755. package/build/server/chunks/featuresStore.svelte-DR1gYZyu.js.map +0 -1
  756. package/build/server/chunks/identityStore.svelte-IIvW2_3b.js +0 -59
  757. package/build/server/chunks/identityStore.svelte-IIvW2_3b.js.map +0 -1
  758. package/build/server/chunks/projectFeaturesStore.svelte-2o-72_vr.js.map +0 -1
  759. package/build/server/chunks/projectsStore.svelte-QDz5PchX.js.map +0 -1
  760. package/build/server/chunks/reconcile-B5xqb6-s.js.map +0 -1
  761. package/build/server/chunks/snapshotRepository-BPXCjX92.js.map +0 -1
  762. package/build/server/chunks/syncBridge-BwXzPdjJ.js.map +0 -1
  763. package/src/features/implementation-queue/presentation/components/QueuePanel.svelte +0 -204
  764. package/src/features/implementation-queue/presentation/stores/queueStore.svelte.ts +0 -143
  765. /package/build/client/_app/immutable/assets/{11.nv0I59TU.css → 12.nv0I59TU.css} +0 -0
  766. /package/build/client/_app/immutable/assets/{11.nv0I59TU.css.br → 12.nv0I59TU.css.br} +0 -0
@@ -0,0 +1 @@
1
+ import{A as e,M as t,N as n,W as r,X as i,Z as a,at as o,ct as s,it as c,j as l,k as u,lt as d,mt as f,o as p,r as m}from"../chunks/BPl9BITm.js";import"../chunks/xihTtKlq.js";import{it as h}from"../chunks/D64sGJRN.js";import"../chunks/suTxxv1t.js";import{t as g}from"../chunks/C8b3IMj8.js";import{t as _}from"../chunks/DryaQyjN2.js";import{t as v}from"../chunks/DhTiE3j02.js";import{t as y}from"../chunks/DtK8qK5Q2.js";import{t as b}from"../chunks/UkzDDeO42.js";import{t as x}from"../chunks/ClC4qR7W2.js";var S=n(`<div class="mx-auto max-w-7xl px-4 py-10 text-sm text-neutral-500">Loading...</div>`),C=n(`<div class="mx-auto max-w-7xl px-4 py-10 text-sm text-red-600"> </div>`),w=n(`<div class="mx-auto max-w-7xl px-4 py-10 text-sm text-neutral-500">Feature not found. <a href="/features" class="text-brand-700 underline">Back to list</a>.</div>`),T=n(`<main class="mx-auto max-w-[1600px] px-4 py-6"><!></main>`);function E(n,E){d(E,!1);let D=()=>o(_,`$page`,O),[O,k]=c();b(g),m(()=>{let e=h(D().params.id??``);return v.load(e),g.load(e),()=>{v.reset(),y.reset(),g.reset()}}),p();var A=t(),j=a(A),M=e=>{l(e,S())},N=t=>{var n=C(),a=i(n,!0);f(n),r(()=>e(a,v.error)),l(t,n)},P=e=>{l(e,w())},F=e=>{var t=T();x(i(t),{get feature(){return v.feature}}),f(t),l(e,t)};u(j,e=>{v.loading?e(M):v.error?e(N,1):v.feature?e(F,-1):e(P,2)}),l(n,A),s(),k()}export{E as component};
@@ -0,0 +1,3 @@
1
+ import{A as e,D as t,E as n,I as r,L as i,N as a,Q as o,W as s,X as c,Z as l,at as u,ct as d,d as f,et as p,it as m,j as h,k as g,l as _,lt as v,mt as y,pt as b,r as x,rt as S,tt as C,u as w,v as T,z as E}from"../chunks/BPl9BITm.js";import"../chunks/xihTtKlq.js";import{B as D,it as O}from"../chunks/D64sGJRN.js";import{t as k}from"../chunks/C8b3IMj8.js";import{t as A}from"../chunks/DryaQyjN2.js";import{t as j}from"../chunks/DhTiE3j02.js";import{t as M}from"../chunks/UkzDDeO42.js";var N=new class{#e=C(!1);get loading(){return E(this.#e)}set loading(e){p(this.#e,e,!0)}#t=C(null);get report(){return E(this.#t)}set report(e){p(this.#t,e,!0)}#n=C(null);get error(){return E(this.#n)}set error(e){p(this.#n,e,!0)}#r=C(!0);get modelCheck(){return E(this.#r)}set modelCheck(e){p(this.#r,e,!0)}currentId=null;async load(e){this.currentId=e,await this.run()}async refresh(){this.currentId&&await this.run()}setModelCheck(e){this.modelCheck=e,this.refresh()}reset(){this.currentId=null,this.report=null,this.error=null,this.loading=!1}async run(){if(!this.currentId)return;let e=this.currentId;this.loading=!0,this.error=null;try{let t=await D(`/api/snapshots/${e}/verify?modelCheck=${this.modelCheck?`1`:`0`}`);if(!t.ok){this.error=`Verification failed (${t.status})`,this.report=null;return}if(this.currentId!==e)return;this.report=await t.json()}catch(e){this.error=e.message}finally{this.currentId===e&&(this.loading=!1)}}},P=a(`<span class="text-slate-300">→</span>`),F=a(`<!> <span class="rounded bg-slate-100 px-1.5 py-0.5 font-mono text-[10px] text-slate-700"> </span>`,1),I=a(`<a class="ml-1 whitespace-nowrap text-brand-700 hover:underline" title="Jump to the violating action">open ↗</a>`),L=a(`<li class="text-[11px] leading-relaxed text-slate-600"><span class="font-medium text-slate-700"> </span> <span class="ml-1 inline-flex flex-wrap items-center gap-1 align-middle"></span> <!></li>`),R=a(`<ul class="mt-1.5 space-y-1.5 pl-[2.6rem]"></ul>`),z=a(`<li class="font-mono text-[11px] leading-relaxed text-slate-600"><span class="text-slate-300">—</span> </li>`),B=a(`<ul class="mt-1.5 space-y-1 pl-[2.6rem]"></ul>`),V=a(`<li class="px-4 py-2.5"><div class="flex items-center gap-2.5"><span aria-hidden="true"></span> <span> </span> <span class="text-xs text-slate-500"> </span></div> <!></li>`),H=a(`<section class="rounded-xl border border-slate-200 bg-white shadow-sm shadow-slate-950/5"><header class="flex items-center justify-between gap-3 border-b border-slate-100 px-4 py-3"><h2 class="text-sm font-semibold text-slate-800"> </h2> <span> </span></header> <ul class="divide-y divide-slate-50"></ul></section>`);function U(r,i){v(i,!0);let a={pass:`bg-emerald-500`,warn:`bg-amber-500`,fail:`bg-red-500`},u={pass:`text-emerald-700`,warn:`text-amber-700`,fail:`text-red-700`};var f=H(),p=c(f),m=c(p),_=c(m,!0);y(m);var b=o(m,2),x=c(b,!0);y(b),y(p);var S=o(p,2);n(S,21,()=>i.verdict.checks,e=>e.id,(r,d)=>{var f=V(),p=c(f),m=c(p),_=o(m,2),v=c(_,!0);y(_);var b=o(_,2),x=c(b,!0);y(b),y(p);var S=o(p,2),C=r=>{var a=R();n(a,23,()=>E(d).traces,(e,t)=>e.label+t,(r,a)=>{var u=L(),d=c(u),f=c(d,!0);y(d);var p=o(d,2);n(p,21,()=>E(a).path,t,(t,n,r)=>{var i=F(),a=l(i),u=e=>{h(e,P())};g(a,e=>{r>0&&e(u)});var d=o(a,2),f=c(d,!0);y(d),s(()=>e(f,E(n))),h(t,i)}),y(p);var m=o(p,2),_=e=>{var t=I();s(()=>w(t,`href`,`/features/${i.verdict.featureId}?surface=${E(a).surfaceId}&panel=actions&focus=${E(a).actionId}`)),h(e,t)};g(m,e=>{E(a).actionId&&E(a).surfaceId&&e(_)}),y(u),s(()=>e(f,E(a).label)),h(r,u)}),y(a),h(r,a)},D=t=>{var r=B();n(r,20,()=>E(d).items,e=>e,(t,n)=>{var r=z(),i=o(c(r));y(r),s(()=>e(i,` ${n??``}`)),h(t,r)}),y(r),h(t,r)};g(S,e=>{E(d).traces&&E(d).traces.length>0?e(C):E(d).items&&E(d).items.length>0&&e(D,1)}),y(f),s(()=>{T(m,1,`h-2 w-2 shrink-0 rounded-full ${a[E(d).status]??``}`),T(_,1,`w-28 shrink-0 text-xs font-medium ${u[E(d).status]??``}`),e(v,E(d).label),e(x,E(d).detail)}),h(r,f)}),y(S),y(f),s(()=>{e(_,i.verdict.featureName),T(b,1,`rounded-full px-2.5 py-0.5 text-xs font-semibold ${i.verdict.passed?`bg-emerald-100 text-emerald-700`:`bg-red-100 text-red-700`}`),e(x,i.verdict.passed?`PASS`:`FAIL`)}),h(r,f),d()}var W=a(`<div class="py-10 text-sm text-slate-500">Running verification…</div>`),G=a(`<div class="py-10 text-sm text-red-600"> </div>`),K=a(`<div class="py-10 text-sm text-slate-500">Nothing to verify. <a href="/features" class="text-brand-700 underline">Back to list</a>.</div>`),q=a(`<details class="rounded-xl border border-slate-200 bg-white shadow-sm shadow-slate-950/5"><summary class="cursor-pointer px-4 py-3 text-xs font-medium text-slate-600"> </summary> <div class="space-y-3 px-4 pb-4"></div></details>`),J=a(`<div class="space-y-4"><!> <!></div>`),Y=a(`<main class="mx-auto max-w-5xl px-4 py-6"><div class="mb-4 flex flex-wrap items-center justify-between gap-3"><div><h1 class="text-lg font-semibold text-slate-800">Verify</h1> <p class="text-xs text-slate-500">Scenarios, maturity, navigation reachability, bounded model checking, drift, and
2
+ cross-feature event wiring — the spec broken loudly.</p></div> <div class="flex items-center gap-3 text-xs"><label class="flex items-center gap-1.5 text-slate-600"><input type="checkbox"/> Model check</label> <button class="rounded-md border border-slate-200 px-2.5 py-1 font-medium text-slate-700 hover:bg-slate-50 disabled:opacity-40"> </button></div></div> <!></main>`);function X(t,r){v(r,!0);let a=()=>u(A,`$page`,l),[l,p]=m();M(k);let C=S(()=>O(a().params.id??``)),w=S(()=>N.report?.features.find(e=>e.featureId===String(E(C)))??null),T=S(()=>(N.report?.features??[]).filter(e=>e.featureId!==String(E(C))));x(()=>{let e=O(a().params.id??``);return j.load(e),k.load(e),N.load(e),()=>{j.reset(),k.reset(),N.reset()}});var D=Y(),P=c(D),F=o(c(P),2),I=c(F),L=c(I);_(L),b(),y(I);var R=o(I,2),z=c(R,!0);y(R),y(F),y(P);var B=o(P,2),V=e=>{h(e,W())},H=t=>{var n=G(),r=c(n,!0);y(n),s(()=>e(r,N.error)),h(t,n)},X=e=>{h(e,K())},Z=t=>{var r=J(),i=c(r);U(i,{get verdict(){return E(w)}});var a=o(i,2),l=t=>{var r=q(),i=c(r),a=c(i);y(i);var l=o(i,2);n(l,21,()=>E(T),e=>e.featureId,(e,t)=>{U(e,{get verdict(){return E(t)}})}),y(l),y(r),s(()=>e(a,`Project context — ${E(T).length??``} sibling feature${E(T).length===1?``:`s`}
3
+ verified alongside (cross-feature checks span all of them)`)),h(t,r)};g(a,e=>{E(T).length>0&&e(l)}),y(r),h(t,r)};g(B,e=>{N.loading&&!N.report?e(V):N.error?e(H,1):E(w)?e(Z,-1):e(X,2)}),y(D),s(()=>{f(L,N.modelCheck),R.disabled=N.loading,e(z,N.loading?`Running…`:`Re-run`)}),i(`change`,L,e=>N.setModelCheck(e.currentTarget.checked)),i(`click`,R,()=>N.refresh()),h(t,D),d(),p()}r([`change`,`click`]);export{X as component};
@@ -0,0 +1,5 @@
1
+ import{$ as e,A as t,D as n,E as r,G as i,N as a,Q as o,W as s,X as c,ct as l,et as u,j as d,k as f,lt as p,m,mt as h,pt as g,r as _,rt as v,tt as y,u as b,z as x}from"../chunks/BPl9BITm.js";import"../chunks/xihTtKlq.js";import{$ as S,J as C,M as w,Q as T,T as E,a as D,g as O,it as k,k as A,l as j,o as M,pt as ee,s as N,t as P,u as F}from"../chunks/D64sGJRN.js";import{t as I}from"../chunks/BjxqhpPG.js";import{n as te,t as L}from"../chunks/CuGlh1c2.js";import{a as R,i as z,o as ne,r as B,s as V,t as re}from"../chunks/DmyaDy4d2.js";var ie=e=>e,ae=e=>({id:e.id,name:e.name,description:e.description,devContext:e.devContext,surfaces:e.surfaces.map(e=>({id:e.id,name:e.name,type:e.type,stateCount:e.stateDefinitions.length,ruleCount:e.rules.length,invariantCount:e.invariants.length,transitionCount:e.transitions.length,actions:e.actions.map(e=>({id:e.id,name:e.name})),stateDefinitions:e.stateDefinitions.map(e=>({id:e.id,path:String(e.path)}))})),personas:e.personas.map(e=>({id:e.id,name:e.name})),resources:e.resources.map(e=>({id:e.id,name:e.name})),entities:e.entities.map(e=>({id:e.id,name:C(e.namespace)})),createdAt:e.createdAt,updatedAt:e.updatedAt}),oe=(e,t)=>{let n=t?e.surfaces.filter(e=>e.id===t):e.surfaces,r=[];for(let e of n)for(let t of e.actions)r.push({actionId:t.id,actionName:t.name,intent:t.intent,surfaceId:e.id,surfaceName:e.name,parameterCount:t.parameters.length,ruleCount:t.rules.length,...t.evolution?{evolution:t.evolution}:{}});return r},H={conventions:[`DDD (domain-driven design)`,`hexagonal architecture (ports & adapters)`,`dependency inversion at every boundary`,`clean code: small functions, intention-revealing names, no premature abstraction`],notes:`Even for prototypes: keep the domain pure, push IO to adapters, and let the use-case layer orchestrate. The product will evolve. Modular shapes pay off later.`},se=e=>e?e.mode===`custom`?e:{mode:`auto`,stack:e.stack,conventions:e.conventions??H.conventions,notes:e.notes??H.notes}:null,U=e=>{let t=new Set;for(let n of e.requiredStates)t.add(n);for(let n of e.parameters)n.bindToStatePath&&t.add(n.bindToStatePath);for(let n of e.rules){for(let e of E(n.condition))typeof e.left==`string`&&t.add(e.left);n.effect.type===`set_state`&&t.add(n.effect.path)}for(let n of e.effects)n.type===`set_state`&&t.add(n.path);for(let n of e.invariants)for(let e of E(n.condition))typeof e.left==`string`&&t.add(e.left);return t},ce=(e,t)=>{for(let n of e.surfaces){let r=n.actions.find(e=>e.id===t);if(!r)continue;let i=U(r),a=n.stateDefinitions.filter(e=>i.has(e.path)),o=n.invariants.filter(e=>E(e.condition).some(e=>typeof e.left==`string`&&i.has(e.left))),s=se(e.devContext);return{featureId:e.id,featureName:e.name,surfaceId:n.id,surfaceName:n.name,action:r,linkedStateDefinitions:a,enclosingInvariants:o,...s?{devContext:s}:{}}}return null},le=(e,t)=>{let n=re(e,t);return{...n,total:B(n)}},ue=M(),de=e=>ue(e),W=5,fe=5,G=D(),K=(e,t)=>{let n=e;return t.surfaceId&&(n=n.filter(e=>e.surfaceId===t.surfaceId)),t.area&&(n=n.filter(e=>e.area===t.area)),t.severity&&(n=n.filter(e=>e.severity===t.severity)),n},q=(e,t,n)=>{let r=K([...t.criticalIssues,...t.recommendedIssues],n),i=n.surfaceId!==void 0||n.area!==void 0||n.severity!==void 0,a=new Map;for(let e of r){let t=`${e.area}::${e.severity}`,n=a.get(t);n?n.count+=1:a.set(t,{area:e.area,severity:e.severity,count:1})}let o=[...a.values()].sort((e,t)=>t.count-e.count).slice(0,W),s=new Map(e.surfaces.map(e=>[String(e.id),e.name])),c=new Map;for(let e of r){let t=e.surfaceId;t&&c.set(t,(c.get(t)??0)+1)}let l=[...c.entries()].map(([e,t])=>({surfaceId:e,surfaceName:s.get(e)??`(unknown surface)`,issueCount:t})).sort((e,t)=>t.issueCount-e.issueCount).slice(0,fe),u=r.filter(e=>e.severity===`critical`).length,d=r.filter(e=>e.severity===`recommended`).length,f={score:t.score,maxScore:t.maxScore,percentage:t.percentage,criticalIssueCount:i?u:t.criticalIssues.length,recommendedIssueCount:i?d:t.recommendedIssues.length,passedCheckCount:t.passedChecks.length,issuesByArea:o,worstSurfaces:l,hint:`Compact summary. Add includeIssues:true to append the issue array, or pass surfaceId / area / severity to scope counts and the issue array.`};return n.includeIssues?{...f,issues:r}:f},pe=(e,t={})=>q(e,G(e),t),me=e=>{let t=typeof e==`string`?e:JSON.stringify(e);return t?Math.ceil(t.length/4):0},J=(e,t,n,r)=>e.map(e=>{if(t===`blocked`)return{path:String(e.path),operator:e.operator,held:null,skipped:!0,...e.description?{description:e.description}:{}};let i=e.path;if(typeof i!=`string`||i.length===0)return{path:String(e.path),operator:e.operator,held:!1,...e.description?{description:e.description}:{}};let a=F({left:e.path,operator:e.operator,right:e.value},n,r);return{path:i,operator:e.operator,held:a,...e.description?{description:e.description}:{}}}),Y=(e,t,n,r,i)=>{let a=n.personaId===void 0?null:r.personas.find(e=>e.id===n.personaId)??null;if(n.personaId!==void 0&&a===null)throw Error(`Scenario ${n.id} references unknown personaId "${String(n.personaId)}"`);let o=a?V(a,{}):{},s=a?ne(a,t,{}):{},c=R(n,o),l=[],u=c;for(let[t,o]of(n.steps??[]).entries()){let s=o.surfaceId===void 0?e:r.surfaces.find(e=>e.id===o.surfaceId),c=s?.actions.find(e=>e.id===o.actionId);if(!s||!c)throw Error(`Scenario ${n.id} step ${t} references unknown ${s?`actionId "${String(o.actionId)}"`:`surfaceId "${String(o.surfaceId)}"`}`);let d=a?ne(a,c,{}):{},f=new Set(c.parameters.map(e=>e.name)),p={};for(let e of o.parameterOverrides)f.has(e.parameterName)&&(p[e.parameterName]=e.value);let m={...d,...p};o.timeAdvance!==void 0&&o.timeAdvance!==0&&(u=O(u,o.timeAdvance));let h=N({surface:s,action:c,snapshot:u,parameters:m,featureInvariants:r.featureInvariants,feature:r,...i?{projectFeatures:i}:{}});u=h.nextState;let g=h.status===`blocked`?`blocked`:`success`,_=o.expectedStatus??`success`,v=g===_,y=j(c.parameters,m),b=J(o.expectedAssertions??[],g,h.nextState,y),x=b.every(e=>e.skipped||e.held),S=v&&x,C=b.filter(e=>!e.skipped&&!e.held).length;l.push({index:t,surfaceId:s.id,actionId:c.id,actionName:c.name,description:o.description??null,actualStatus:g,expectedStatus:_,statusMatches:v,assertions:b,parameterErrors:h.parameterErrors,invariantViolations:h.invariantViolations,pass:S,summary:S?`pass. ${g}`:v?`${C} assertion${C===1?``:`s`} did not hold`:`status was ${g} but expected ${_}`})}let d=z(n,t,{}),f={...s,...d};n.timeAdvance!==void 0&&n.timeAdvance!==0&&(u=O(u,n.timeAdvance));let p=N({surface:e,action:t,snapshot:u,parameters:f,featureInvariants:r.featureInvariants,feature:r,...i?{projectFeatures:i}:{}}),m=j(t.parameters,f),h=p.nextState,g=p.status===`blocked`?`blocked`:`success`,_=J(n.expectedAssertions??[],g,h,m),v=n.expectedStatus??null,y=v===null||v===g,b=_.every(e=>e.skipped||e.held),x=_.length>0&&_.every(e=>e.skipped)&&v!==`blocked`,S=n.expectedTransition===void 0?null:g===`blocked`?{expected:n.expectedTransition,actual:p.transition,matches:!0}:{expected:n.expectedTransition,actual:p.transition,matches:n.expectedTransition===p.transition},C=S===null||S.matches,w=l.every(e=>e.pass),T=l.find(e=>!e.pass),E=w&&y&&b&&C&&!x,D=_.filter(e=>!e.skipped&&!e.held).length,k=p.parameterErrors.length>0?` (parameter validation rejected: ${p.parameterErrors.map(e=>`${e.parameterName}. ${e.reason}`).join(`; `)})`:``,A=p.invariantViolations.length>0?` (invariant violations: ${p.invariantViolations.map(e=>e.invariantName).join(`, `)})`:``,M=_.filter(e=>!e.skipped).length,ee=_.length-M,P=ee>0?`, ${ee} skipped (action was blocked)`:``,F=S&&!S.matches?` (transition went to ${String(S.actual)} but expected ${String(S.expected)})`:``,I=l.length>0?`${l.length} step${l.length===1?``:`s`} ok, `:``,te=E?`pass. ${I}${g}${M>0?`, ${M} assertion${M===1?``:`s`} held`:``}${P}`:`fail. ${!w&&T?`step ${T.index} (${T.actionName}): ${T.summary}`:y?C?x?`action was blocked so all ${_.length} assertion${_.length===1?``:`s`} skipped. Set expectedStatus:"blocked" if the block is intentional; otherwise fix the scenario so the action runs.${k}${A}`:`${D}/${M} assertion${M===1?``:`s`} did not hold${A}`:`transition mismatch${F}`:`status was ${g} but expected ${v}${k}${A}`}`;return{surfaceId:e.id,actionId:t.id,actionName:t.name,scenarioId:n.id,scenarioName:n.name,personaId:a?String(a.id):null,personaName:a?.name??null,pass:E,actualStatus:g,expectedStatus:v,statusMatches:y,assertions:_,steps:l,transitionCheck:S,parameterErrors:p.parameterErrors,invariantViolations:p.invariantViolations,summary:te}},he=()=>e=>{let t=[];for(let n of e.feature.surfaces)if(!(e.surfaceId&&n.id!==e.surfaceId))for(let r of n.actions){if(e.actionId&&r.id!==e.actionId)continue;let i=r.scenarios??[];for(let a of i)t.push(Y(n,r,a,e.feature,e.projectFeatures))}let n=t.filter(e=>e.pass).length;return{featureId:String(e.feature.id),featureName:e.feature.name,total:t.length,passed:n,failed:t.length-n,results:t}},ge=a(`<option> </option>`),_e=a(`<option> </option>`),ve=a(`<span class="text-xs text-slate-500">Loading...</span>`),ye=a(`<div class="rounded-lg border border-dashed border-hairline bg-white p-6 text-sm text-slate-500">No features yet. <a href="/features" class="text-brand-700 underline">Create one</a> first.</div>`),be=a(`<div class="rounded-lg border border-dashed border-hairline bg-white p-6 text-sm text-slate-500">No features in this project. Pick another project or <a class="text-brand-700 underline">add one</a>.</div>`),xe=a(`<p class="text-sm text-red-600"> </p>`),Se=a(`<li class="rounded-lg border border-hairline bg-white p-4"><div class="flex items-start justify-between gap-4"><div class="min-w-0 flex-1"><div class="font-mono text-sm font-semibold text-slate-950"> </div> <div class="mt-0.5 truncate font-mono text-[11px] text-slate-400"> </div> <p class="mt-1.5 text-xs leading-5 text-slate-600"> </p></div> <div class="shrink-0 text-right"><div class="font-mono text-lg font-semibold text-slate-950"> </div> <div class="text-[10px] uppercase tracking-wide text-slate-400">tokens</div> <div class="mt-0.5 text-[11px] text-slate-500"> </div></div></div> <details class="mt-3"><summary class="cursor-pointer text-xs text-slate-500 hover:text-slate-800">Show output</summary> <pre class="mt-2 max-h-72 overflow-auto rounded-md bg-slate-950 p-3 text-[11px] leading-relaxed text-slate-100"> </pre></details></li>`),Ce=a(`<span class="rounded bg-slate-100 px-1.5 py-0.5 font-mono text-[10px] text-slate-600"> </span>`),we=a(`<div class="rounded-lg border border-hairline bg-white p-3"><div class="mb-1 text-xs font-semibold text-slate-800"> </div> <p class="mb-2 text-[11px] leading-5 text-slate-500"> </p> <div class="flex flex-wrap gap-1"></div></div>`),Te=a(`<div class="flex flex-col gap-8 lg:flex-row lg:items-start"><div class="min-w-0 flex-1"><h2 class="mb-4 text-base font-semibold text-slate-950">Read tools</h2> <ul class="space-y-3"></ul></div> <div class="w-full shrink-0 space-y-6 lg:w-80"><div class="rounded-lg border border-brand-200 bg-brand-50/60 p-4"><div class="flex items-baseline justify-between gap-2"><div><div class="font-mono text-sm font-semibold text-brand-900">Full feature JSON</div> <p class="mt-0.5 text-xs text-slate-500">Naive blob-in-prompt baseline</p></div> <div class="text-right"><div class="font-mono text-2xl font-semibold text-brand-900"> </div> <div class="text-[10px] uppercase tracking-wide text-slate-500">tokens</div></div></div> <details class="mt-3"><summary class="cursor-pointer text-xs text-slate-600 hover:text-slate-950"> </summary> <pre class="mt-2 max-h-64 overflow-auto rounded-md bg-white p-2 text-[11px] leading-relaxed text-slate-700 ring-1 ring-hairline"> </pre></details></div> <div><h2 class="mb-3 text-base font-semibold text-slate-950">Write & mutation tools</h2> <div class="space-y-4"></div></div></div></div>`),Ee=a(`<div class="mx-auto max-w-7xl px-4 py-8 sm:px-6"><header class="mb-6 border-b border-slate-200 pb-6"><div class="grid gap-6 lg:grid-cols-[minmax(0,1fr)_auto] lg:items-end"><div class="max-w-3xl"><p class="text-xs font-semibold uppercase tracking-wide text-brand-700">Agent integration</p> <h1 class="mt-2 text-4xl font-semibold tracking-tight text-slate-950">MCP server</h1> <p class="mt-2 max-w-3xl text-sm leading-6 text-slate-600">The MCP server lets AI coding agents read and edit Unspaghettit Features and Projects without
2
+ pasting the full JSON blob into a prompt. A Feature is one LLM-sized slice of behavior
3
+ (a flow, a screen, a capability); a Project groups many Features under one product or codebase.
4
+ The read tools below run live against the selected Feature (plus the first Project). Compare
5
+ their token cost to the raw JSON baseline on the right.</p></div> <div class="grid grid-cols-1 gap-3 sm:grid-cols-3 lg:w-[34rem]"><div class="rounded-xl border border-slate-200 bg-white p-4 shadow-sm shadow-slate-950/5"><p class="text-xs font-medium uppercase tracking-wide text-brand-700">Read tools</p> <p class="mt-2 text-2xl font-semibold text-slate-950"> </p> <p class="mt-1 text-xs text-slate-500">Live examples</p></div> <div class="rounded-xl border border-slate-200 bg-white p-4 shadow-sm shadow-slate-950/5"><p class="text-xs font-medium uppercase tracking-wide text-violet-700">Groups</p> <p class="mt-2 text-2xl font-semibold text-slate-950"> </p> <p class="mt-1 text-xs text-slate-500">Mutation areas</p></div> <div class="rounded-xl border border-slate-200 bg-white p-4 shadow-sm shadow-slate-950/5"><p class="text-xs font-medium uppercase tracking-wide text-emerald-700">Baseline</p> <p class="mt-2 text-2xl font-semibold text-slate-950"> </p> <p class="mt-1 text-xs text-slate-500">JSON tokens</p></div></div></div></header> <div class="mb-6 flex flex-wrap items-center gap-3 rounded-xl border border-slate-200 bg-white p-3 shadow-sm shadow-slate-950/5"><label for="project-select" class="text-sm font-medium text-slate-700">Project:</label> <select id="project-select" class="h-10 rounded-md border border-slate-300 bg-white px-3 text-sm outline-none focus:border-slate-900 disabled:cursor-not-allowed disabled:opacity-50"></select> <span class="text-slate-300" aria-hidden="true">/</span> <label for="feature-select" class="text-sm font-medium text-slate-700">Feature:</label> <select id="feature-select" class="h-10 rounded-md border border-slate-300 bg-white px-3 text-sm outline-none focus:border-slate-900 disabled:cursor-not-allowed disabled:opacity-50"></select> <span class="text-xs text-slate-500"> </span> <!></div> <!></div>`);function X(a,C){p(C,!0);let E=`__unassigned`,D=y(``),O=y(``),j=y(null),M=y(!1),N=y(null),F=y(e(new Map)),R=y(null),z=y(null);y(`get_feature`);async function ne(){let e=await P(),t=new Map;await Promise.all(I.summaries.map(async n=>{let r=await e.useCases.getProject(T(String(n.id)));for(let e of r?.featureIds??[])t.set(String(e),String(n.id))})),u(F,t,!0)}_(()=>{(async()=>{await Promise.all([L.refresh(),I.refresh()]),await ne()})()}),i(()=>{if(!x(O)||x(O)===E){u(R,null),u(z,null);return}let e=T(x(O));(async()=>{let t=await P(),[n,r]=await Promise.all([t.useCases.getProject(e),t.useCases.getProjectAggregate(e)]);u(R,n,!0),u(z,r,!0)})()});let B=v(()=>{let e=new Set(x(F).values()),t=I.summaries.filter(t=>e.has(String(t.id))).map(e=>({id:String(e.id),name:e.name}));return L.summaries.some(e=>!x(F).has(String(e.id)))&&t.push({id:E,name:`Unassigned`}),t}),V=v(()=>x(O)?L.summaries.filter(e=>{let t=x(F).get(String(e.id));return x(O)===E?t===void 0:t===x(O)}):L.summaries);i(()=>{if(x(O)||x(B).length===0)return;let e=x(D)?x(F).get(x(D)):void 0;u(O,(e?x(B).find(t=>t.id===e):void 0)?.id??x(B)[0]?.id??``,!0)}),i(()=>{if(x(V).length===0){u(D,``);return}x(V).some(e=>e.id===x(D))||u(D,String(x(V)[0].id),!0)}),i(()=>{if(!x(D)){u(j,null);return}u(M,!0),u(N,null),(async()=>{try{u(j,await(await P()).useCases.getFeature(k(x(D))),!0)}catch(e){u(N,e.message,!0),u(j,null)}finally{u(M,!1)}})()});let re=e=>{for(let t of e.surfaces){let e=t.actions[0];if(e)return{surface:t,action:e}}return null},H=e=>{let t={};for(let n of e.stateDefinitions)t=w(t,n.path,n.defaultValue);return t},se=e=>{let t={};for(let n of e.parameters)if(n.defaultValue!==void 0)t[n.name]=n.defaultValue;else switch(n.type){case`string`:t[n.name]=``;break;case`number`:t[n.name]=0;break;case`boolean`:t[n.name]=!1;break;case`enum`:t[n.name]=n.enumValues?.[0]??``;break;default:t[n.name]=null}return t},U=v(()=>{if(!x(j))return null;let e=te(x(j));return{json:e,tokens:me(e)}}),ue=he(),W=v(()=>{if(!x(j))return[];let e=x(j),t=[];t.push({name:`list_features`,callSignature:`list_features()`,output:ie(L.summaries),description:`Compact index of all features. Discovery entry point.`}),t.push({name:`get_feature`,callSignature:`get_feature(featureId: "${x(j).id}")`,output:ae(e),description:`Structured index. Surfaces, actions, state counts, devContext. Pass verbose:true only when you need the full blob.`}),t.push({name:`list_actions`,callSignature:`list_actions(featureId: "${x(j).id}")`,output:oe(e),description:`Flat list of all actions across surfaces with id, name, intent, rule/effect counts.`});let n=re(e);n&&t.push({name:`get_action`,callSignature:`get_action(featureId: "${x(j).id}", actionId: "${n.action.id}")`,output:ce(e,S(n.action.id)),description:`Single action with its rules, parameters, linked state defs, and implementation guidance. The primary focused query.`});let r=x(j).surfaces.find(e=>e.stateDefinitions.length>0)?.stateDefinitions[0];if(r&&t.push({name:`find_state_references`,callSignature:`find_state_references(featureId: "${x(j).id}", statePath: "${r.path}")`,output:le(e,A(String(r.path))),description:`Count refs to a state path across rules, effects, invariants, requiredStates, and parameter bindings. Run before editing or removing state.`}),n){let r=H(n.surface),i=se(n.action);try{t.push({name:`dry_run_simulate`,callSignature:`dry_run_simulate(${n.surface.name} ▸ ${n.action.name}, default snapshot)`,output:de({feature:e,surfaceId:ee(n.surface.id),actionId:S(n.action.id),snapshot:r,parameters:i}),description:`Pure simulation. Runs the deterministic engine on proposed state without writing to disk. Validate changes before committing.`})}catch(e){t.push({name:`dry_run_simulate`,callSignature:`dry_run_simulate(${n.surface.name} ▸ ${n.action.name})`,output:{error:e.message},description:`Simulation failed with default snapshot.`})}}t.push({name:`score_feature`,callSignature:`score_feature(featureId: "${x(j).id}")`,output:pe(e),description:`Compact summary. Score, percentage, issue counts, top failing areas, worst surfaces. Pass includeIssues:true (next card) when you need the actual issues.`});let i=x(j).surfaces.reduce((e,t)=>t.actions.length+t.stateDefinitions.length>(e===null?-1:e.actions.length+e.stateDefinitions.length)?t:e,null);i&&t.push({name:`score_feature (issues)`,callSignature:`score_feature(featureId: "${x(j).id}", surfaceId: "${i.id}", includeIssues: true)`,output:pe(e,{surfaceId:String(i.id),includeIssues:!0}),description:`Same tool, asked to return the actual issue list (includeIssues:true) for ${i.name}. The surfaceId / area / severity filters exist to keep the issue array bounded. Typical payload stays under 10 KB instead of dumping every issue across the whole feature.`});try{t.push({name:`run_all_scenarios`,callSignature:`run_all_scenarios(featureId: "${x(j).id}")`,output:ue({feature:e}),description:`Run every Scenario through the simulator and assert against expectedStatus + expectedAssertions. Per-result parameterErrors[] and invariantViolations[] surface the cause when a scenario unexpectedly blocks.`})}catch(e){t.push({name:`run_all_scenarios`,callSignature:`run_all_scenarios(featureId: "${x(j).id}")`,output:{error:e.message},description:`Run all scenarios.`})}return t.push({name:`list_projects`,callSignature:`list_projects()`,output:{summaries:I.summaries},description:`Compact project summaries (id, name, featureCount, timestamps). Cheapest discovery call for projects. Mirrors list_features.`}),x(R)&&t.push({name:`get_project`,callSignature:`get_project(projectId: "${x(R).id}")`,output:x(R),description:`Full Project document (id, name, description, featureIds[], timestamps). Use list_projects for discovery first.`}),x(z)&&t.push({name:`get_project_aggregate`,callSignature:`get_project_aggregate(projectId: "${x(z).projectId}")`,output:x(z),description:`Cross-feature view of a project: flat list of resources, data namespaces, registered events, and transitions, each tagged with the source feature. Use this to reason about a project as one logical surface.`}),t}),fe=(e,t)=>t===0?`-`:`${(e/t*100).toFixed(1)}% of baseline`,G=[{label:`Feature lifecycle`,description:`Create, update, delete and save features to disk.`,tools:[`create_feature`,`update_feature`,`delete_feature`,`save_feature`]},{label:`Surface & state`,description:`Manage surfaces, state definitions, surface-level rules, invariants, and transitions.`,tools:[`add_surface`,`remove_surface`,`update_surface`,`move_surface`,`add_state_definition`,`remove_state_definition`,`update_state_definition`,`move_state_definition`,`add_surface_rule`,`remove_surface_rule`,`update_surface_rule`,`add_surface_invariant`,`remove_surface_invariant`,`update_surface_invariant`,`add_transition`,`remove_transition`,`update_transition`]},{label:`Actions`,description:`Add, remove, reorder, and edit actions and their rules, effects, parameters, invariants, and scenarios.`,tools:[`add_action`,`remove_action`,`update_action`,`move_action`,`add_action_rule`,`remove_action_rule`,`update_action_rule`,`add_effect`,`remove_effect`,`update_effect`,`add_parameter`,`remove_parameter`,`update_parameter`,`move_parameter`,`add_action_invariant`,`remove_action_invariant`,`update_action_invariant`,`add_scenario`,`remove_scenario`,`update_scenario`]},{label:`Feature-level: invariants & liveness`,description:`Cross-surface invariants (safety — "nothing bad happens") and reachability goals (liveness — "good stays reachable": reachable / always_reachable). Checked over the whole feature by model_check and verify.`,tools:[`add_feature_invariant`,`remove_feature_invariant`,`update_feature_invariant`,`add_reachability_goal`,`remove_reachability_goal`,`update_reachability_goal`]},{label:`Events, personas, resources & entities`,description:`Manage first-class events, personas, external resources, and entity schemas.`,tools:[`add_event`,`remove_event`,`update_event`,`add_persona`,`remove_persona`,`update_persona`,`add_resource`,`remove_resource`,`update_resource`,`add_entity`,`remove_entity`,`update_entity`,`add_entity_field`,`remove_entity_field`,`update_entity_field`]},{label:`Batch`,description:`Apply multi-step mutations atomically.`,tools:[`apply_batch`]},{label:`Projects`,description:`Manage projects. A Project is the umbrella for one product or codebase; it groups many Features, where each Feature is one LLM-sized slice of behavior. Read with list_projects / get_project / get_project_aggregate (cross-feature view of resources, entities, events, transitions).`,tools:[`list_projects`,`get_project`,`get_project_aggregate`,`create_project`,`update_project`,`replace_project`,`delete_project`,`add_feature_to_project`,`remove_feature_from_project`,`move_feature_in_project`,`add_project_invariant`,`update_project_invariant`,`remove_project_invariant`]},{label:`Behavioral index & status`,description:`Read the behavioral index (.unspa.json) and sync implementation status into the dashboard.`,tools:[`get_behavioral_index`,`get_implementation_gaps`,`report_implementation_status`,`report_implementation_status_batch`,`get_implementation_status`]},{label:`Repo context`,description:`Read the .unspa.json file linking the current repo to a feature.`,tools:[`get_repo_context`]}];var K=Ee(),q=c(K),J=c(q),Y=o(c(J),2),X=c(Y),De=o(c(X),2),Oe=c(De,!0);h(De),g(2),h(X);var Z=o(X,2),ke=o(c(Z),2),Ae=c(ke,!0);h(ke),g(2),h(Z);var je=o(Z,2),Me=o(c(je),2),Ne=c(Me,!0);h(Me),g(2),h(je),h(Y),h(J),h(q);var Pe=o(q,2),Q=o(c(Pe),2);r(Q,21,()=>x(B),e=>e.id,(e,n)=>{var r=ge(),i=c(r,!0);h(r);var a={};s(()=>{t(i,x(n).name),a!==(a=x(n).id)&&(r.value=(r.__value=x(n).id)??``)}),d(e,r)}),h(Q);var $=o(Q,6);r($,21,()=>x(V),e=>e.id,(e,n)=>{var r=_e(),i=c(r,!0);h(r);var a={};s(()=>{t(i,x(n).name),a!==(a=x(n).id)&&(r.value=(r.__value=x(n).id)??``)}),d(e,r)}),h($);var Fe=o($,2),Ie=c(Fe);h(Fe);var Le=o(Fe,2),Re=e=>{d(e,ve())};f(Le,e=>{x(M)&&e(Re)}),h(Pe);var ze=o(Pe,2),Be=e=>{d(e,ye())},Ve=e=>{var t=be(),n=o(c(t));g(),h(t),s(()=>b(n,`href`,`/projects/${x(O)??``}`)),d(e,t)},He=e=>{var n=xe(),r=c(n,!0);h(n),s(()=>t(r,x(N))),d(e,n)},Ue=e=>{var i=Te(),a=c(i),l=o(c(a),2);r(l,21,()=>x(W),e=>e.name,(e,n)=>{let r=v(()=>me(x(n).output)),i=v(()=>JSON.stringify(x(n).output,null,2));var a=Se(),l=c(a),u=c(l),f=c(u),p=c(f,!0);h(f);var m=o(f,2),g=c(m,!0);h(m);var _=o(m,2),y=c(_,!0);h(_),h(u);var S=o(u,2),C=c(S),w=c(C,!0);h(C);var T=o(C,4),E=c(T,!0);h(T),h(S),h(l);var D=o(l,2),O=o(c(D),2),k=c(O,!0);h(O),h(D),h(a),s((e,r)=>{t(p,x(n).name),b(m,`title`,x(n).callSignature),t(g,x(n).callSignature),t(y,x(n).description),t(w,e),t(E,r),t(k,x(i))},[()=>x(r).toLocaleString(),()=>fe(x(r),x(U).tokens)]),d(e,a)}),h(l),h(a);var u=o(a,2),f=c(u),p=c(f),m=o(c(p),2),_=c(m),y=c(_,!0);h(_),g(2),h(m),h(p);var S=o(p,2),C=c(S),w=c(C);h(C);var T=o(C,2),E=c(T,!0);h(T),h(S),h(f);var D=o(f,2),O=o(c(D),2);r(O,21,()=>G,n,(e,i)=>{var a=we(),l=c(a),u=c(l,!0);h(l);var f=o(l,2),p=c(f,!0);h(f);var m=o(f,2);r(m,21,()=>x(i).tools,n,(e,n)=>{var r=Ce(),i=c(r,!0);h(r),s(()=>t(i,x(n))),d(e,r)}),h(m),h(a),s(()=>{t(u,x(i).label),t(p,x(i).description)}),d(e,a)}),h(O),h(D),h(u),h(i),s((e,n)=>{t(y,e),t(w,`Show JSON (${n??``} chars)`),t(E,x(U).json)},[()=>x(U).tokens.toLocaleString(),()=>x(U).json.length.toLocaleString()]),d(e,i)};f(ze,e=>{L.summaries.length===0&&!L.loading?e(Be):x(V).length===0?e(Ve,1):x(N)?e(He,2):x(j)&&x(U)&&e(Ue,3)}),h(K),s(e=>{t(Oe,x(W).length),t(Ae,G.length),t(Ne,e),Q.disabled=x(B).length===0,$.disabled=x(V).length===0,t(Ie,`${x(V).length??``} feature${x(V).length===1?``:`s`} in this project`)},[()=>x(U)?x(U).tokens.toLocaleString():`-`]),m(Q,()=>x(O),e=>u(O,e)),m($,()=>x(D),e=>u(D,e)),d(a,K),l()}export{X as component};
@@ -1 +1 @@
1
- import{J as e,U as t,x as n}from"../chunks/BPl9BITm.js";import"../chunks/xihTtKlq.js";import"../chunks/suTxxv1t.js";import{t as r}from"../chunks/BYIrIC5L.js";function i(i){n(`rqn88j`,n=>{t(()=>{e.title=`Projects / Unspaghettit`})}),r(i,{})}export{i as component};
1
+ import{J as e,U as t,x as n}from"../chunks/BPl9BITm.js";import"../chunks/xihTtKlq.js";import"../chunks/suTxxv1t.js";import{t as r}from"../chunks/x60Tn5kT.js";function i(i){n(`rqn88j`,n=>{t(()=>{e.title=`Projects / Unspaghettit`})}),r(i,{})}export{i as component};
@@ -0,0 +1 @@
1
+  �rNesU8FG�K�����FkX�k� �sk �`���Fw��32r���"p[�-u�=;�p,z�g�8��i7�*ua��K˜ȾE��a+�b���I���ϡ*5�
@@ -1 +1 @@
1
- {"version":"1781735206128"}
1
+ {"version":"1782174397145"}
Binary file
Binary file
Binary file
@@ -0,0 +1,15 @@
1
+ const index = 0;
2
+ let component_cache;
3
+ const component = async () => component_cache ??= (await import('./_layout.svelte-pSSG85WT.js')).default;
4
+ const universal = {
5
+ "ssr": false,
6
+ "prerender": false,
7
+ "trailingSlash": "never"
8
+ };
9
+ const universal_id = "src/routes/+layout.ts";
10
+ const imports = ["_app/immutable/nodes/0.tKfYV3__.js","_app/immutable/chunks/BPl9BITm.js","_app/immutable/chunks/ByaoVvNB.js","_app/immutable/chunks/_b612aVb.js","_app/immutable/chunks/D64sGJRN.js","_app/immutable/chunks/BJdTO_n6.js","_app/immutable/chunks/CwzIdrQR.js","_app/immutable/chunks/yShDxCNj.js","_app/immutable/chunks/Da59TXPe.js","_app/immutable/chunks/wrqalH0a.js","_app/immutable/chunks/Bcyn5YUg.js","_app/immutable/chunks/ib21i2T_.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/suTxxv1t.js","_app/immutable/chunks/CXvvf4uQ.js","_app/immutable/chunks/C8b3IMj8.js","_app/immutable/chunks/Bfc9rQXP.js","_app/immutable/chunks/Cl7Z3e6-.js","_app/immutable/chunks/BjxqhpPG.js","_app/immutable/chunks/cMamJTsF.js"];
11
+ const stylesheets = ["_app/immutable/assets/0.DCOD5ne_.css"];
12
+ const fonts = [];
13
+
14
+ export { component, fonts, imports, index, stylesheets, universal, universal_id };
15
+ //# sourceMappingURL=0-8YZc572z.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"0-8YZc572z.js","sources":["../../../.svelte-kit/adapter-node/nodes/0.js"],"sourcesContent":["\n\nexport const index = 0;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/_layout.svelte.js')).default;\nexport const universal = {\n \"ssr\": false,\n \"prerender\": false,\n \"trailingSlash\": \"never\"\n};\nexport const universal_id = \"src/routes/+layout.ts\";\nexport const imports = [\"_app/immutable/nodes/0.tKfYV3__.js\",\"_app/immutable/chunks/BPl9BITm.js\",\"_app/immutable/chunks/ByaoVvNB.js\",\"_app/immutable/chunks/_b612aVb.js\",\"_app/immutable/chunks/D64sGJRN.js\",\"_app/immutable/chunks/BJdTO_n6.js\",\"_app/immutable/chunks/CwzIdrQR.js\",\"_app/immutable/chunks/yShDxCNj.js\",\"_app/immutable/chunks/Da59TXPe.js\",\"_app/immutable/chunks/wrqalH0a.js\",\"_app/immutable/chunks/Bcyn5YUg.js\",\"_app/immutable/chunks/ib21i2T_.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/suTxxv1t.js\",\"_app/immutable/chunks/CXvvf4uQ.js\",\"_app/immutable/chunks/C8b3IMj8.js\",\"_app/immutable/chunks/Bfc9rQXP.js\",\"_app/immutable/chunks/Cl7Z3e6-.js\",\"_app/immutable/chunks/BjxqhpPG.js\",\"_app/immutable/chunks/cMamJTsF.js\"];\nexport const stylesheets = [\"_app/immutable/assets/0.DCOD5ne_.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,8BAAoC,CAAC,EAAE;AAClG,MAAC,SAAS,GAAG;AACzB,EAAE,KAAK,EAAE,KAAK;AACd,EAAE,WAAW,EAAE,KAAK;AACpB,EAAE,eAAe,EAAE;AACnB;AACY,MAAC,YAAY,GAAG;AAChB,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAC5tB,MAAC,WAAW,GAAG,CAAC,sCAAsC;AACtD,MAAC,KAAK,GAAG;;;;"}
@@ -0,0 +1,9 @@
1
+ const index = 1;
2
+ let component_cache;
3
+ const component = async () => component_cache ??= (await import('./error.svelte-CzVR_A6P.js')).default;
4
+ const imports = ["_app/immutable/nodes/1.CER5ICKt.js","_app/immutable/chunks/BPl9BITm.js","_app/immutable/chunks/wrqalH0a.js","_app/immutable/chunks/ByaoVvNB.js","_app/immutable/chunks/xihTtKlq.js"];
5
+ const stylesheets = [];
6
+ const fonts = [];
7
+
8
+ export { component, fonts, imports, index, stylesheets };
9
+ //# sourceMappingURL=1-DxkfSJLu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"1-BSUItTig.js","sources":["../../../.svelte-kit/adapter-node/nodes/1.js"],"sourcesContent":["\n\nexport const index = 1;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/fallbacks/error.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/1.Dyte3Ggf.js\",\"_app/immutable/chunks/BPl9BITm.js\",\"_app/immutable/chunks/B439_FLv.js\",\"_app/immutable/chunks/OJscNS3T.js\",\"_app/immutable/chunks/xihTtKlq.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAsC,CAAC,EAAE;AACpG,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAChM,MAAC,WAAW,GAAG;AACf,MAAC,KAAK,GAAG;;;;"}
1
+ {"version":3,"file":"1-DxkfSJLu.js","sources":["../../../.svelte-kit/adapter-node/nodes/1.js"],"sourcesContent":["\n\nexport const index = 1;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/fallbacks/error.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/1.CER5ICKt.js\",\"_app/immutable/chunks/BPl9BITm.js\",\"_app/immutable/chunks/wrqalH0a.js\",\"_app/immutable/chunks/ByaoVvNB.js\",\"_app/immutable/chunks/xihTtKlq.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAsC,CAAC,EAAE;AACpG,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAChM,MAAC,WAAW,GAAG;AACf,MAAC,KAAK,GAAG;;;;"}
@@ -0,0 +1,9 @@
1
+ const index = 10;
2
+ let component_cache;
3
+ const component = async () => component_cache ??= (await import('./_page.svelte-p38jot9e.js')).default;
4
+ const imports = ["_app/immutable/nodes/10.rT7cD8kX.js","_app/immutable/chunks/BPl9BITm.js","_app/immutable/chunks/ByaoVvNB.js","_app/immutable/chunks/Da59TXPe.js","_app/immutable/chunks/DryaQyjN2.js","_app/immutable/chunks/ib21i2T_.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/suTxxv1t.js","_app/immutable/chunks/D64sGJRN.js","_app/immutable/chunks/Vu8LzrwP2.js","_app/immutable/chunks/CuGlh1c2.js","_app/immutable/chunks/BjxqhpPG.js","_app/immutable/chunks/Cl7Z3e6-.js","_app/immutable/chunks/BANF9BhQ2.js","_app/immutable/chunks/oVMDLirx.js","_app/immutable/chunks/CwzIdrQR.js","_app/immutable/chunks/aNMRV4sP2.js","_app/immutable/chunks/olAc024e.js","_app/immutable/chunks/B3vnQs252.js","_app/immutable/chunks/Bfc9rQXP.js","_app/immutable/chunks/Bcyn5YUg.js","_app/immutable/chunks/wXIHzLMQ2.js","_app/immutable/chunks/Dhqg7r_2.js","_app/immutable/chunks/BzLd0mTH.js","_app/immutable/chunks/cMamJTsF.js","_app/immutable/chunks/yShDxCNj.js"];
5
+ const stylesheets = [];
6
+ const fonts = [];
7
+
8
+ export { component, fonts, imports, index, stylesheets };
9
+ //# sourceMappingURL=10-DkObdGtU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"10-DkObdGtU.js","sources":["../../../.svelte-kit/adapter-node/nodes/10.js"],"sourcesContent":["\n\nexport const index = 10;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/projects/_id_/_page.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/10.rT7cD8kX.js\",\"_app/immutable/chunks/BPl9BITm.js\",\"_app/immutable/chunks/ByaoVvNB.js\",\"_app/immutable/chunks/Da59TXPe.js\",\"_app/immutable/chunks/DryaQyjN2.js\",\"_app/immutable/chunks/ib21i2T_.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/suTxxv1t.js\",\"_app/immutable/chunks/D64sGJRN.js\",\"_app/immutable/chunks/Vu8LzrwP2.js\",\"_app/immutable/chunks/CuGlh1c2.js\",\"_app/immutable/chunks/BjxqhpPG.js\",\"_app/immutable/chunks/Cl7Z3e6-.js\",\"_app/immutable/chunks/BANF9BhQ2.js\",\"_app/immutable/chunks/oVMDLirx.js\",\"_app/immutable/chunks/CwzIdrQR.js\",\"_app/immutable/chunks/aNMRV4sP2.js\",\"_app/immutable/chunks/olAc024e.js\",\"_app/immutable/chunks/B3vnQs252.js\",\"_app/immutable/chunks/Bfc9rQXP.js\",\"_app/immutable/chunks/Bcyn5YUg.js\",\"_app/immutable/chunks/wXIHzLMQ2.js\",\"_app/immutable/chunks/Dhqg7r_2.js\",\"_app/immutable/chunks/BzLd0mTH.js\",\"_app/immutable/chunks/cMamJTsF.js\",\"_app/immutable/chunks/yShDxCNj.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAgD,CAAC,EAAE;AAC9G,MAAC,OAAO,GAAG,CAAC,qCAAqC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAC37B,MAAC,WAAW,GAAG;AACf,MAAC,KAAK,GAAG;;;;"}
@@ -0,0 +1,9 @@
1
+ const index = 11;
2
+ let component_cache;
3
+ const component = async () => component_cache ??= (await import('./_page.svelte-Cqn34NXy.js')).default;
4
+ const imports = ["_app/immutable/nodes/11.BAnV_Y5Y.js","_app/immutable/chunks/BPl9BITm.js","_app/immutable/chunks/DryaQyjN2.js","_app/immutable/chunks/ByaoVvNB.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/D64sGJRN.js","_app/immutable/chunks/ClC4qR7W2.js","_app/immutable/chunks/kNaey6uv.js","_app/immutable/chunks/B3vnQs252.js","_app/immutable/chunks/Bfc9rQXP.js","_app/immutable/chunks/Bcyn5YUg.js","_app/immutable/chunks/Cl7Z3e6-.js","_app/immutable/chunks/yShDxCNj.js"];
5
+ const stylesheets = ["_app/immutable/assets/BehaviorGraph.Bk0xQRZk.css"];
6
+ const fonts = [];
7
+
8
+ export { component, fonts, imports, index, stylesheets };
9
+ //# sourceMappingURL=11-DL94HxpZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"11-DL94HxpZ.js","sources":["../../../.svelte-kit/adapter-node/nodes/11.js"],"sourcesContent":["\n\nexport const index = 11;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/projects/_id_/graph/_page.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/11.BAnV_Y5Y.js\",\"_app/immutable/chunks/BPl9BITm.js\",\"_app/immutable/chunks/DryaQyjN2.js\",\"_app/immutable/chunks/ByaoVvNB.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/D64sGJRN.js\",\"_app/immutable/chunks/ClC4qR7W2.js\",\"_app/immutable/chunks/kNaey6uv.js\",\"_app/immutable/chunks/B3vnQs252.js\",\"_app/immutable/chunks/Bfc9rQXP.js\",\"_app/immutable/chunks/Bcyn5YUg.js\",\"_app/immutable/chunks/Cl7Z3e6-.js\",\"_app/immutable/chunks/yShDxCNj.js\"];\nexport const stylesheets = [\"_app/immutable/assets/BehaviorGraph.Bk0xQRZk.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAsD,CAAC,EAAE;AACpH,MAAC,OAAO,GAAG,CAAC,qCAAqC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AACpe,MAAC,WAAW,GAAG,CAAC,kDAAkD;AAClE,MAAC,KAAK,GAAG;;;;"}
@@ -0,0 +1,9 @@
1
+ const index = 12;
2
+ let component_cache;
3
+ const component = async () => component_cache ??= (await import('./_page.svelte-Uioz8hsG.js')).default;
4
+ const imports = ["_app/immutable/nodes/12.DCTRFMqo.js","_app/immutable/chunks/BPl9BITm.js","_app/immutable/chunks/ByaoVvNB.js","_app/immutable/chunks/Da59TXPe.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/D64sGJRN.js","_app/immutable/chunks/CuGlh1c2.js","_app/immutable/chunks/BjxqhpPG.js","_app/immutable/chunks/Cl7Z3e6-.js","_app/immutable/chunks/BQ9GodWX2.js","_app/immutable/chunks/DhTiE3j02.js","_app/immutable/chunks/Bcyn5YUg.js","_app/immutable/chunks/BzLd0mTH.js","_app/immutable/chunks/cMamJTsF.js"];
5
+ const stylesheets = ["_app/immutable/assets/12.nv0I59TU.css"];
6
+ const fonts = [];
7
+
8
+ export { component, fonts, imports, index, stylesheets };
9
+ //# sourceMappingURL=12-CI74sCkt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"12-CI74sCkt.js","sources":["../../../.svelte-kit/adapter-node/nodes/12.js"],"sourcesContent":["\n\nexport const index = 12;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/tutorial/_page.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/12.DCTRFMqo.js\",\"_app/immutable/chunks/BPl9BITm.js\",\"_app/immutable/chunks/ByaoVvNB.js\",\"_app/immutable/chunks/Da59TXPe.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/D64sGJRN.js\",\"_app/immutable/chunks/CuGlh1c2.js\",\"_app/immutable/chunks/BjxqhpPG.js\",\"_app/immutable/chunks/Cl7Z3e6-.js\",\"_app/immutable/chunks/BQ9GodWX2.js\",\"_app/immutable/chunks/DhTiE3j02.js\",\"_app/immutable/chunks/Bcyn5YUg.js\",\"_app/immutable/chunks/BzLd0mTH.js\",\"_app/immutable/chunks/cMamJTsF.js\"];\nexport const stylesheets = [\"_app/immutable/assets/12.nv0I59TU.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAA2C,CAAC,EAAE;AACzG,MAAC,OAAO,GAAG,CAAC,qCAAqC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AACvgB,MAAC,WAAW,GAAG,CAAC,uCAAuC;AACvD,MAAC,KAAK,GAAG;;;;"}
@@ -0,0 +1,9 @@
1
+ const index = 2;
2
+ let component_cache;
3
+ const component = async () => component_cache ??= (await import('./_page.svelte-BoOMG5Y0.js')).default;
4
+ const imports = ["_app/immutable/nodes/2.CF488WWF.js","_app/immutable/chunks/BPl9BITm.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/suTxxv1t.js","_app/immutable/chunks/x60Tn5kT.js","_app/immutable/chunks/ByaoVvNB.js","_app/immutable/chunks/Da59TXPe.js","_app/immutable/chunks/D64sGJRN.js","_app/immutable/chunks/CuGlh1c2.js","_app/immutable/chunks/BjxqhpPG.js","_app/immutable/chunks/Cl7Z3e6-.js","_app/immutable/chunks/olAc024e.js","_app/immutable/chunks/DNaA4QRO2.js","_app/immutable/chunks/oVMDLirx.js","_app/immutable/chunks/CwzIdrQR.js","_app/immutable/chunks/wXIHzLMQ2.js","_app/immutable/chunks/Dhqg7r_2.js","_app/immutable/chunks/BzLd0mTH.js","_app/immutable/chunks/cMamJTsF.js","_app/immutable/chunks/yShDxCNj.js"];
5
+ const stylesheets = [];
6
+ const fonts = [];
7
+
8
+ export { component, fonts, imports, index, stylesheets };
9
+ //# sourceMappingURL=2-qhWwQ4eL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"2-qhWwQ4eL.js","sources":["../../../.svelte-kit/adapter-node/nodes/2.js"],"sourcesContent":["\n\nexport const index = 2;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/_page.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/2.CF488WWF.js\",\"_app/immutable/chunks/BPl9BITm.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/suTxxv1t.js\",\"_app/immutable/chunks/x60Tn5kT.js\",\"_app/immutable/chunks/ByaoVvNB.js\",\"_app/immutable/chunks/Da59TXPe.js\",\"_app/immutable/chunks/D64sGJRN.js\",\"_app/immutable/chunks/CuGlh1c2.js\",\"_app/immutable/chunks/BjxqhpPG.js\",\"_app/immutable/chunks/Cl7Z3e6-.js\",\"_app/immutable/chunks/olAc024e.js\",\"_app/immutable/chunks/DNaA4QRO2.js\",\"_app/immutable/chunks/oVMDLirx.js\",\"_app/immutable/chunks/CwzIdrQR.js\",\"_app/immutable/chunks/wXIHzLMQ2.js\",\"_app/immutable/chunks/Dhqg7r_2.js\",\"_app/immutable/chunks/BzLd0mTH.js\",\"_app/immutable/chunks/cMamJTsF.js\",\"_app/immutable/chunks/yShDxCNj.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAkC,CAAC,EAAE;AAChG,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAC9tB,MAAC,WAAW,GAAG;AACf,MAAC,KAAK,GAAG;;;;"}
@@ -0,0 +1,16 @@
1
+ const index = 3;
2
+ let component_cache;
3
+ const component = async () => component_cache ??= (await import('./_page.svelte-C4PRh_wP.js')).default;
4
+ const universal = {
5
+ "ssr": false,
6
+ "prerender": false,
7
+ "trailingSlash": "never",
8
+ "load": null
9
+ };
10
+ const universal_id = "src/routes/builder-mode/+page.ts";
11
+ const imports = ["_app/immutable/nodes/3.CP7CPPVH.js","_app/immutable/chunks/BPl9BITm.js","_app/immutable/chunks/ByaoVvNB.js","_app/immutable/chunks/_b612aVb.js","_app/immutable/chunks/D64sGJRN.js","_app/immutable/chunks/BJdTO_n6.js","_app/immutable/chunks/CwzIdrQR.js","_app/immutable/chunks/yShDxCNj.js","_app/immutable/chunks/DtblIi6X2.js","_app/immutable/chunks/Da59TXPe.js","_app/immutable/chunks/wrqalH0a.js","_app/immutable/chunks/ib21i2T_.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/suTxxv1t.js"];
12
+ const stylesheets = ["_app/immutable/assets/3.B3akUL9A.css"];
13
+ const fonts = [];
14
+
15
+ export { component, fonts, imports, index, stylesheets, universal, universal_id };
16
+ //# sourceMappingURL=3-CzoZtSTp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"3-CzoZtSTp.js","sources":["../../../.svelte-kit/adapter-node/nodes/3.js"],"sourcesContent":["\n\nexport const index = 3;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/builder-mode/_page.svelte.js')).default;\nexport const universal = {\n \"ssr\": false,\n \"prerender\": false,\n \"trailingSlash\": \"never\",\n \"load\": null\n};\nexport const universal_id = \"src/routes/builder-mode/+page.ts\";\nexport const imports = [\"_app/immutable/nodes/3.CP7CPPVH.js\",\"_app/immutable/chunks/BPl9BITm.js\",\"_app/immutable/chunks/ByaoVvNB.js\",\"_app/immutable/chunks/_b612aVb.js\",\"_app/immutable/chunks/D64sGJRN.js\",\"_app/immutable/chunks/BJdTO_n6.js\",\"_app/immutable/chunks/CwzIdrQR.js\",\"_app/immutable/chunks/yShDxCNj.js\",\"_app/immutable/chunks/DtblIi6X2.js\",\"_app/immutable/chunks/Da59TXPe.js\",\"_app/immutable/chunks/wrqalH0a.js\",\"_app/immutable/chunks/ib21i2T_.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/suTxxv1t.js\"];\nexport const stylesheets = [\"_app/immutable/assets/3.B3akUL9A.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAA+C,CAAC,EAAE;AAC7G,MAAC,SAAS,GAAG;AACzB,EAAE,KAAK,EAAE,KAAK;AACd,EAAE,WAAW,EAAE,KAAK;AACpB,EAAE,eAAe,EAAE,OAAO;AAC1B,EAAE,MAAM,EAAE;AACV;AACY,MAAC,YAAY,GAAG;AAChB,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AACrgB,MAAC,WAAW,GAAG,CAAC,sCAAsC;AACtD,MAAC,KAAK,GAAG;;;;"}
@@ -0,0 +1,16 @@
1
+ const index = 4;
2
+ let component_cache;
3
+ const component = async () => component_cache ??= (await import('./_page.svelte-BNH3szkk.js')).default;
4
+ const universal = {
5
+ "ssr": false,
6
+ "prerender": false,
7
+ "trailingSlash": "never",
8
+ "load": null
9
+ };
10
+ const universal_id = "src/routes/features/+page.ts";
11
+ const imports = ["_app/immutable/nodes/4.D1bxCSiM.js","_app/immutable/chunks/BPl9BITm.js","_app/immutable/chunks/ByaoVvNB.js","_app/immutable/chunks/DtblIi6X2.js","_app/immutable/chunks/Da59TXPe.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/D64sGJRN.js","_app/immutable/chunks/CuGlh1c2.js","_app/immutable/chunks/BjxqhpPG.js","_app/immutable/chunks/Cl7Z3e6-.js","_app/immutable/chunks/BANF9BhQ2.js","_app/immutable/chunks/oVMDLirx.js","_app/immutable/chunks/CwzIdrQR.js","_app/immutable/chunks/aNMRV4sP2.js","_app/immutable/chunks/BQ9GodWX2.js","_app/immutable/chunks/DNaA4QRO2.js","_app/immutable/chunks/wXIHzLMQ2.js"];
12
+ const stylesheets = [];
13
+ const fonts = [];
14
+
15
+ export { component, fonts, imports, index, stylesheets, universal, universal_id };
16
+ //# sourceMappingURL=4-CDa9DBsh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"4-CDa9DBsh.js","sources":["../../../.svelte-kit/adapter-node/nodes/4.js"],"sourcesContent":["\n\nexport const index = 4;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/features/_page.svelte.js')).default;\nexport const universal = {\n \"ssr\": false,\n \"prerender\": false,\n \"trailingSlash\": \"never\",\n \"load\": null\n};\nexport const universal_id = \"src/routes/features/+page.ts\";\nexport const imports = [\"_app/immutable/nodes/4.D1bxCSiM.js\",\"_app/immutable/chunks/BPl9BITm.js\",\"_app/immutable/chunks/ByaoVvNB.js\",\"_app/immutable/chunks/DtblIi6X2.js\",\"_app/immutable/chunks/Da59TXPe.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/D64sGJRN.js\",\"_app/immutable/chunks/CuGlh1c2.js\",\"_app/immutable/chunks/BjxqhpPG.js\",\"_app/immutable/chunks/Cl7Z3e6-.js\",\"_app/immutable/chunks/BANF9BhQ2.js\",\"_app/immutable/chunks/oVMDLirx.js\",\"_app/immutable/chunks/CwzIdrQR.js\",\"_app/immutable/chunks/aNMRV4sP2.js\",\"_app/immutable/chunks/BQ9GodWX2.js\",\"_app/immutable/chunks/DNaA4QRO2.js\",\"_app/immutable/chunks/wXIHzLMQ2.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAA2C,CAAC,EAAE;AACzG,MAAC,SAAS,GAAG;AACzB,EAAE,KAAK,EAAE,KAAK;AACd,EAAE,WAAW,EAAE,KAAK;AACpB,EAAE,eAAe,EAAE,OAAO;AAC1B,EAAE,MAAM,EAAE;AACV;AACY,MAAC,YAAY,GAAG;AAChB,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,oCAAoC,CAAC,oCAAoC,CAAC,oCAAoC;AACtnB,MAAC,WAAW,GAAG;AACf,MAAC,KAAK,GAAG;;;;"}
@@ -0,0 +1,9 @@
1
+ const index = 5;
2
+ let component_cache;
3
+ const component = async () => component_cache ??= (await import('./_page.svelte-yN5kzgJ9.js')).default;
4
+ const imports = ["_app/immutable/nodes/5.D6jZgh9y.js","_app/immutable/chunks/BPl9BITm.js","_app/immutable/chunks/ByaoVvNB.js","_app/immutable/chunks/Da59TXPe.js","_app/immutable/chunks/wrqalH0a.js","_app/immutable/chunks/DryaQyjN2.js","_app/immutable/chunks/ib21i2T_.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/suTxxv1t.js","_app/immutable/chunks/D64sGJRN.js","_app/immutable/chunks/CXvvf4uQ.js","_app/immutable/chunks/Vu8LzrwP2.js","_app/immutable/chunks/BJdTO_n6.js","_app/immutable/chunks/DmyaDy4d2.js","_app/immutable/chunks/UkzDDeO42.js","_app/immutable/chunks/DhTiE3j02.js","_app/immutable/chunks/Bcyn5YUg.js","_app/immutable/chunks/Cl7Z3e6-.js","_app/immutable/chunks/DtK8qK5Q2.js","_app/immutable/chunks/C8b3IMj8.js","_app/immutable/chunks/oVMDLirx.js","_app/immutable/chunks/CwzIdrQR.js","_app/immutable/chunks/Dhqg7r_2.js","_app/immutable/chunks/BzLd0mTH.js","_app/immutable/chunks/cMamJTsF.js","_app/immutable/chunks/aNMRV4sP2.js"];
5
+ const stylesheets = [];
6
+ const fonts = [];
7
+
8
+ export { component, fonts, imports, index, stylesheets };
9
+ //# sourceMappingURL=5-qD2xxOrq.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"5-qD2xxOrq.js","sources":["../../../.svelte-kit/adapter-node/nodes/5.js"],"sourcesContent":["\n\nexport const index = 5;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/features/_id_/_page.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/5.D6jZgh9y.js\",\"_app/immutable/chunks/BPl9BITm.js\",\"_app/immutable/chunks/ByaoVvNB.js\",\"_app/immutable/chunks/Da59TXPe.js\",\"_app/immutable/chunks/wrqalH0a.js\",\"_app/immutable/chunks/DryaQyjN2.js\",\"_app/immutable/chunks/ib21i2T_.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/suTxxv1t.js\",\"_app/immutable/chunks/D64sGJRN.js\",\"_app/immutable/chunks/CXvvf4uQ.js\",\"_app/immutable/chunks/Vu8LzrwP2.js\",\"_app/immutable/chunks/BJdTO_n6.js\",\"_app/immutable/chunks/DmyaDy4d2.js\",\"_app/immutable/chunks/UkzDDeO42.js\",\"_app/immutable/chunks/DhTiE3j02.js\",\"_app/immutable/chunks/Bcyn5YUg.js\",\"_app/immutable/chunks/Cl7Z3e6-.js\",\"_app/immutable/chunks/DtK8qK5Q2.js\",\"_app/immutable/chunks/C8b3IMj8.js\",\"_app/immutable/chunks/oVMDLirx.js\",\"_app/immutable/chunks/CwzIdrQR.js\",\"_app/immutable/chunks/Dhqg7r_2.js\",\"_app/immutable/chunks/BzLd0mTH.js\",\"_app/immutable/chunks/cMamJTsF.js\",\"_app/immutable/chunks/aNMRV4sP2.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAgD,CAAC,EAAE;AAC9G,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,oCAAoC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC;AAC37B,MAAC,WAAW,GAAG;AACf,MAAC,KAAK,GAAG;;;;"}
@@ -0,0 +1,9 @@
1
+ const index = 6;
2
+ let component_cache;
3
+ const component = async () => component_cache ??= (await import('./_page.svelte-DsQHSEl4.js')).default;
4
+ const imports = ["_app/immutable/nodes/6.BrBFUA0s.js","_app/immutable/chunks/BPl9BITm.js","_app/immutable/chunks/DryaQyjN2.js","_app/immutable/chunks/ByaoVvNB.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/suTxxv1t.js","_app/immutable/chunks/D64sGJRN.js","_app/immutable/chunks/ClC4qR7W2.js","_app/immutable/chunks/kNaey6uv.js","_app/immutable/chunks/UkzDDeO42.js","_app/immutable/chunks/DhTiE3j02.js","_app/immutable/chunks/Bcyn5YUg.js","_app/immutable/chunks/Cl7Z3e6-.js","_app/immutable/chunks/DtK8qK5Q2.js","_app/immutable/chunks/C8b3IMj8.js"];
5
+ const stylesheets = ["_app/immutable/assets/BehaviorGraph.Bk0xQRZk.css"];
6
+ const fonts = [];
7
+
8
+ export { component, fonts, imports, index, stylesheets };
9
+ //# sourceMappingURL=6-B4mWzvDn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"6-B4mWzvDn.js","sources":["../../../.svelte-kit/adapter-node/nodes/6.js"],"sourcesContent":["\n\nexport const index = 6;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/features/_id_/graph/_page.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/6.BrBFUA0s.js\",\"_app/immutable/chunks/BPl9BITm.js\",\"_app/immutable/chunks/DryaQyjN2.js\",\"_app/immutable/chunks/ByaoVvNB.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/suTxxv1t.js\",\"_app/immutable/chunks/D64sGJRN.js\",\"_app/immutable/chunks/ClC4qR7W2.js\",\"_app/immutable/chunks/kNaey6uv.js\",\"_app/immutable/chunks/UkzDDeO42.js\",\"_app/immutable/chunks/DhTiE3j02.js\",\"_app/immutable/chunks/Bcyn5YUg.js\",\"_app/immutable/chunks/Cl7Z3e6-.js\",\"_app/immutable/chunks/DtK8qK5Q2.js\",\"_app/immutable/chunks/C8b3IMj8.js\"];\nexport const stylesheets = [\"_app/immutable/assets/BehaviorGraph.Bk0xQRZk.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAsD,CAAC,EAAE;AACpH,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC;AAC7iB,MAAC,WAAW,GAAG,CAAC,kDAAkD;AAClE,MAAC,KAAK,GAAG;;;;"}
@@ -0,0 +1,9 @@
1
+ const index = 7;
2
+ let component_cache;
3
+ const component = async () => component_cache ??= (await import('./_page.svelte-DqWdGt48.js')).default;
4
+ const imports = ["_app/immutable/nodes/7.pajo8MfM.js","_app/immutable/chunks/BPl9BITm.js","_app/immutable/chunks/DryaQyjN2.js","_app/immutable/chunks/ByaoVvNB.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/D64sGJRN.js","_app/immutable/chunks/UkzDDeO42.js","_app/immutable/chunks/DhTiE3j02.js","_app/immutable/chunks/Bcyn5YUg.js","_app/immutable/chunks/Cl7Z3e6-.js","_app/immutable/chunks/C8b3IMj8.js"];
5
+ const stylesheets = [];
6
+ const fonts = [];
7
+
8
+ export { component, fonts, imports, index, stylesheets };
9
+ //# sourceMappingURL=7-zExv-fTN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"7-zExv-fTN.js","sources":["../../../.svelte-kit/adapter-node/nodes/7.js"],"sourcesContent":["\n\nexport const index = 7;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/features/_id_/verify/_page.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/7.pajo8MfM.js\",\"_app/immutable/chunks/BPl9BITm.js\",\"_app/immutable/chunks/DryaQyjN2.js\",\"_app/immutable/chunks/ByaoVvNB.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/D64sGJRN.js\",\"_app/immutable/chunks/UkzDDeO42.js\",\"_app/immutable/chunks/DhTiE3j02.js\",\"_app/immutable/chunks/Bcyn5YUg.js\",\"_app/immutable/chunks/Cl7Z3e6-.js\",\"_app/immutable/chunks/C8b3IMj8.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAuD,CAAC,EAAE;AACrH,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAC3Z,MAAC,WAAW,GAAG;AACf,MAAC,KAAK,GAAG;;;;"}
@@ -0,0 +1,9 @@
1
+ const index = 8;
2
+ let component_cache;
3
+ const component = async () => component_cache ??= (await import('./_page.svelte-DSCeOGv7.js')).default;
4
+ const imports = ["_app/immutable/nodes/8.Cc80_Igi.js","_app/immutable/chunks/BPl9BITm.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/D64sGJRN.js","_app/immutable/chunks/DmyaDy4d2.js","_app/immutable/chunks/CuGlh1c2.js","_app/immutable/chunks/BjxqhpPG.js","_app/immutable/chunks/Cl7Z3e6-.js"];
5
+ const stylesheets = [];
6
+ const fonts = [];
7
+
8
+ export { component, fonts, imports, index, stylesheets };
9
+ //# sourceMappingURL=8-BVrGdQg4.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"7-C4hmS0dG.js","sources":["../../../.svelte-kit/adapter-node/nodes/7.js"],"sourcesContent":["\n\nexport const index = 7;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/mcp/_page.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/7.Ejs18ZUc.js\",\"_app/immutable/chunks/BPl9BITm.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/Bp2_Vghh.js\",\"_app/immutable/chunks/CJjJLwzv2.js\",\"_app/immutable/chunks/DKgYpi6_.js\",\"_app/immutable/chunks/BfMYiIUi.js\",\"_app/immutable/chunks/Cl7Z3e6-.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAsC,CAAC,EAAE;AACpG,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAC7S,MAAC,WAAW,GAAG;AACf,MAAC,KAAK,GAAG;;;;"}
1
+ {"version":3,"file":"8-BVrGdQg4.js","sources":["../../../.svelte-kit/adapter-node/nodes/8.js"],"sourcesContent":["\n\nexport const index = 8;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/mcp/_page.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/8.Cc80_Igi.js\",\"_app/immutable/chunks/BPl9BITm.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/D64sGJRN.js\",\"_app/immutable/chunks/DmyaDy4d2.js\",\"_app/immutable/chunks/CuGlh1c2.js\",\"_app/immutable/chunks/BjxqhpPG.js\",\"_app/immutable/chunks/Cl7Z3e6-.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAsC,CAAC,EAAE;AACpG,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAC7S,MAAC,WAAW,GAAG;AACf,MAAC,KAAK,GAAG;;;;"}
@@ -0,0 +1,9 @@
1
+ const index = 9;
2
+ let component_cache;
3
+ const component = async () => component_cache ??= (await import('./_page.svelte-BcuGvUt1.js')).default;
4
+ const imports = ["_app/immutable/nodes/9.D72NaL3l.js","_app/immutable/chunks/BPl9BITm.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/suTxxv1t.js","_app/immutable/chunks/x60Tn5kT.js","_app/immutable/chunks/ByaoVvNB.js","_app/immutable/chunks/Da59TXPe.js","_app/immutable/chunks/D64sGJRN.js","_app/immutable/chunks/CuGlh1c2.js","_app/immutable/chunks/BjxqhpPG.js","_app/immutable/chunks/Cl7Z3e6-.js","_app/immutable/chunks/olAc024e.js","_app/immutable/chunks/DNaA4QRO2.js","_app/immutable/chunks/oVMDLirx.js","_app/immutable/chunks/CwzIdrQR.js","_app/immutable/chunks/wXIHzLMQ2.js","_app/immutable/chunks/Dhqg7r_2.js","_app/immutable/chunks/BzLd0mTH.js","_app/immutable/chunks/cMamJTsF.js","_app/immutable/chunks/yShDxCNj.js"];
5
+ const stylesheets = [];
6
+ const fonts = [];
7
+
8
+ export { component, fonts, imports, index, stylesheets };
9
+ //# sourceMappingURL=9-BnZLRMYA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"9-BnZLRMYA.js","sources":["../../../.svelte-kit/adapter-node/nodes/9.js"],"sourcesContent":["\n\nexport const index = 9;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/projects/_page.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/9.D72NaL3l.js\",\"_app/immutable/chunks/BPl9BITm.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/suTxxv1t.js\",\"_app/immutable/chunks/x60Tn5kT.js\",\"_app/immutable/chunks/ByaoVvNB.js\",\"_app/immutable/chunks/Da59TXPe.js\",\"_app/immutable/chunks/D64sGJRN.js\",\"_app/immutable/chunks/CuGlh1c2.js\",\"_app/immutable/chunks/BjxqhpPG.js\",\"_app/immutable/chunks/Cl7Z3e6-.js\",\"_app/immutable/chunks/olAc024e.js\",\"_app/immutable/chunks/DNaA4QRO2.js\",\"_app/immutable/chunks/oVMDLirx.js\",\"_app/immutable/chunks/CwzIdrQR.js\",\"_app/immutable/chunks/wXIHzLMQ2.js\",\"_app/immutable/chunks/Dhqg7r_2.js\",\"_app/immutable/chunks/BzLd0mTH.js\",\"_app/immutable/chunks/cMamJTsF.js\",\"_app/immutable/chunks/yShDxCNj.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAA2C,CAAC,EAAE;AACzG,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAC9tB,MAAC,WAAW,GAAG;AACf,MAAC,KAAK,GAAG;;;;"}
@@ -1,5 +1,5 @@
1
- import { W as onDestroy, t as escape_html, g as attr, h as attr_class, r as ensure_array_like, i as attr_style, q as derived } from './index-server-7H0jzj0M.js';
2
- import { w as flattenLeafConditions, E as isParamLeft } from './TagPalette-CtMNYCmu.js';
1
+ import { W as onDestroy, g as attr, t as escape_html, h as attr_class, i as attr_style, r as ensure_array_like, q as derived } from './index-server-DvBux_Gf.js';
2
+ import { y as flattenLeafConditions, G as isParamLeft } from './TagPalette-CpdTiC_7.js';
3
3
 
4
4
  //#region src/features/behavior-model/domain/services/BehaviorGraphModel.ts
5
5
  var ALL_BEHAVIOR_GRAPH_EDGE_KINDS = [
@@ -36,6 +36,10 @@ var effectLabel = (effect) => {
36
36
  case "block_action": return "block";
37
37
  case "allow_action": return "allow";
38
38
  case "transition_surface": return "transition";
39
+ case "append_to_list": return `append ${effect.path}`;
40
+ case "remove_from_list": return `remove ${effect.path}`;
41
+ case "update_list_item": return `update ${effect.path}`;
42
+ case "advance_time": return "advance time";
39
43
  }
40
44
  };
41
45
  var leafStatePaths = (condition) => {
@@ -236,6 +240,29 @@ var buildBehaviorGraph = (sourceFeatures, sourceProject) => {
236
240
  });
237
241
  }
238
242
  }
243
+ for (const goal of feature.reachabilityGoals ?? []) {
244
+ const id = `feature:${feature.id}:goal:${goal.id}`;
245
+ addNode({
246
+ id,
247
+ type: "goal",
248
+ label: goal.name,
249
+ detail: goal.description ?? goal.message ?? goal.kind,
250
+ layer: 6
251
+ });
252
+ addEdge({
253
+ from: featureId,
254
+ to: id,
255
+ kind: "contains"
256
+ });
257
+ for (const path of leafStatePaths(goal.condition)) {
258
+ ensureState(feature, path);
259
+ addEdge({
260
+ from: id,
261
+ to: stateIdFor(feature, path),
262
+ kind: "reads"
263
+ });
264
+ }
265
+ }
239
266
  for (const surface of feature.surfaces) {
240
267
  const surfaceId = surfaceIdFor(feature, surface.id);
241
268
  addNode({
@@ -603,6 +630,11 @@ var behaviorGraphNodeTheme = {
603
630
  fill: "#ca8a04",
604
631
  stroke: "#a16207"
605
632
  },
633
+ goal: {
634
+ label: "Liveness goal",
635
+ fill: "#65a30d",
636
+ stroke: "#4d7c0f"
637
+ },
606
638
  scenario: {
607
639
  label: "Scenario",
608
640
  fill: "#475569",
@@ -672,7 +704,7 @@ function BehaviorGraph($$renderer, $$props) {
672
704
  let stabilizationProgress = 0;
673
705
  let renderer = null;
674
706
  let enabledKinds = {
675
- contains: true,
707
+ contains: false,
676
708
  reads: true,
677
709
  writes: true,
678
710
  emits: true,
@@ -681,6 +713,9 @@ function BehaviorGraph($$renderer, $$props) {
681
713
  uses: true,
682
714
  handles: true
683
715
  };
716
+ let filtersOpen = false;
717
+ const totalKindCount = ALL_BEHAVIOR_GRAPH_EDGE_KINDS.length;
718
+ const activeKindCount = derived(() => ALL_BEHAVIOR_GRAPH_EDGE_KINDS.filter((kind) => enabledKinds[kind]).length);
684
719
  const sourceFeatures = derived(() => features ?? (feature ? [feature] : []));
685
720
  const graphTitle = derived(() => project?.name ?? feature?.name ?? "Behavior graph");
686
721
  const graphSubtitle = derived(() => project ? `The whole project behavior map across ${sourceFeatures().length} feature${sourceFeatures().length === 1 ? "" : "s"} from the shared Unspa hub.` : "A connected map of the executable behavior model from the shared Unspa hub.");
@@ -702,15 +737,11 @@ function BehaviorGraph($$renderer, $$props) {
702
737
  renderer?.destroy();
703
738
  renderer = null;
704
739
  });
705
- $$renderer.push(`<section class="space-y-4"><div class="overflow-hidden rounded-lg border border-slate-200 bg-white shadow-sm shadow-slate-950/5"><div class="border-b border-slate-200 bg-slate-950 px-4 py-4 text-white"><div class="flex flex-wrap items-start justify-between gap-4"><div class="min-w-0"><p class="text-xs font-semibold uppercase tracking-wide text-cyan-200">Behavior Graph</p> <h2 class="mt-1 truncate text-2xl font-semibold">${escape_html(graphTitle())}</h2> <p class="mt-1 max-w-3xl text-sm leading-6 text-slate-300">${escape_html(graphSubtitle())}</p></div> <a${attr("href", backHref())} class="rounded-md border border-white/20 px-3 py-2 text-sm font-medium text-white hover:bg-white/10">${escape_html(backLabel())}</a></div></div> <div class="grid gap-0 lg:grid-cols-[minmax(0,1fr)_320px]"><div class="min-w-0 border-b border-slate-200 lg:border-b-0 lg:border-r"><div class="flex flex-wrap items-center gap-3 border-b border-slate-200 bg-slate-50 px-4 py-3"><input type="search"${attr("value", search)} placeholder="Search nodes" class="w-full rounded-md border border-slate-300 bg-white px-3 py-2 text-sm outline-none focus:border-brand-700 sm:w-64"/> <button type="button" class="rounded-md border border-slate-300 px-3 py-2 text-sm font-medium text-slate-700 hover:bg-white">Re-layout</button> <button type="button" class="rounded-md border border-slate-300 px-3 py-2 text-sm font-medium text-slate-700 hover:bg-white">Fit</button> <div class="flex rounded-md border border-slate-300 bg-white p-1"><button type="button" class="rounded px-2.5 py-1 text-sm font-semibold text-slate-700 hover:bg-slate-50" aria-label="Zoom out">-</button> <button type="button" class="rounded px-2.5 py-1 text-sm font-semibold text-slate-700 hover:bg-slate-50" aria-label="Zoom in">+</button></div> <button type="button" class="rounded-md border border-slate-300 px-3 py-2 text-sm font-medium text-slate-700 hover:bg-white">Reset</button> <button type="button"${attr_class(`rounded-md border border-slate-300 px-3 py-2 text-sm font-medium text-slate-700 hover:bg-white`)}>Labels</button> <div class="flex flex-wrap gap-1"><!--[-->`);
706
- const each_array = ensure_array_like(ALL_BEHAVIOR_GRAPH_EDGE_KINDS);
707
- for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
708
- let kind = each_array[$$index];
709
- $$renderer.push(`<button type="button"${attr_class(`rounded-full border px-2.5 py-1 text-xs font-medium ${enabledKinds[kind] ? "border-slate-300 bg-white text-slate-800" : "border-slate-200 bg-slate-100 text-slate-400"}`)}>${escape_html(behaviorGraphEdgeTheme[kind].label)}</button>`);
710
- }
711
- $$renderer.push(`<!--]--></div></div> <div class="graph-canvas relative svelte-1wx4hks"><div class="h-[76vh] min-h-[720px] w-full"${attr("aria-label", `Interactive behavior graph for ${graphTitle()}`)}></div> <div class="pointer-events-none absolute bottom-3 left-3 rounded-md border border-slate-200 bg-white/88 px-3 py-2 text-xs text-slate-600 shadow-sm backdrop-blur">ForceAtlas2 settles the graph, then physics stops for smooth panning. Wheel, pinch, or +/- to zoom.</div> `);
740
+ $$renderer.push(`<section class="space-y-4"><div class="overflow-hidden rounded-lg border border-slate-200 bg-white shadow-sm shadow-slate-950/5"><div class="border-b border-slate-200 bg-slate-950 px-4 py-4 text-white"><a${attr("href", backHref())} class="inline-flex items-center gap-1.5 text-sm font-medium text-slate-400 transition hover:text-white"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" aria-hidden="true"><path d="M15 18l-6-6 6-6"></path></svg> ${escape_html(backLabel())}</a> <div class="mt-3 min-w-0"><p class="text-xs font-semibold uppercase tracking-wide text-cyan-200">Behavior Graph</p> <h2 class="mt-1 truncate text-2xl font-semibold">${escape_html(graphTitle())}</h2> <p class="mt-1 max-w-3xl text-sm leading-6 text-slate-300">${escape_html(graphSubtitle())}</p></div></div> <div class="grid gap-0 lg:grid-cols-[minmax(0,1fr)_320px]"><div class="min-w-0 border-b border-slate-200 lg:border-b-0 lg:border-r"><div class="graph-canvas relative svelte-1wx4hks"><div class="h-[76vh] min-h-[720px] w-full"${attr("aria-label", `Interactive behavior graph for ${graphTitle()}`)}></div> <div class="absolute right-3 top-3 z-10 flex items-start gap-2"><div class="relative"><label for="graph-search" class="sr-only">Search nodes</label> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round" class="pointer-events-none absolute left-2.5 top-1/2 h-4 w-4 -translate-y-1/2 text-slate-400" aria-hidden="true"><circle cx="11" cy="11" r="7"></circle><path d="m20 20-3.5-3.5"></path></svg> <input id="graph-search" type="search"${attr("value", search)} placeholder="Search nodes" class="h-9 w-44 rounded-lg border border-slate-200 bg-white/95 pl-8 pr-3 text-sm shadow-sm outline-none backdrop-blur transition focus:border-brand-400 focus:ring-2 focus:ring-brand-500/15 sm:w-60"/></div> <div class="relative"><button type="button" aria-haspopup="menu"${attr("aria-expanded", filtersOpen)}${attr_class(`flex h-9 items-center gap-1.5 rounded-lg border bg-white/95 px-2.5 text-sm font-medium shadow-sm backdrop-blur transition border-slate-200 text-slate-700 hover:bg-white`)}><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" aria-hidden="true"><path d="M3 5h18l-7 8v6l-4-2v-4z"></path></svg> <span class="hidden sm:inline">Filters</span> <span class="rounded-full bg-slate-100 px-1.5 text-[11px] font-semibold text-slate-600">${escape_html(activeKindCount())}/${escape_html(totalKindCount)}</span></button> `);
741
+ $$renderer.push("<!--[-1-->");
742
+ $$renderer.push(`<!--]--></div></div> <div class="absolute bottom-3 right-3 z-10 flex flex-col overflow-hidden rounded-lg border border-slate-200 bg-white/95 shadow-sm backdrop-blur"><button type="button" aria-label="Zoom in" class="grid h-9 w-9 place-items-center text-lg font-semibold leading-none text-slate-700 transition hover:bg-slate-100">+</button> <div class="h-px bg-slate-200"></div> <button type="button" aria-label="Zoom out" class="grid h-9 w-9 place-items-center text-lg font-semibold leading-none text-slate-700 transition hover:bg-slate-100">−</button> <div class="h-px bg-slate-200"></div> <button type="button" aria-label="Fit graph to view" class="grid h-9 w-9 place-items-center text-slate-700 transition hover:bg-slate-100"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" aria-hidden="true"><path d="M4 9V5a1 1 0 0 1 1-1h4"></path><path d="M20 9V5a1 1 0 0 0-1-1h-4"></path><path d="M4 15v4a1 1 0 0 0 1 1h4"></path><path d="M20 15v4a1 1 0 0 1-1 1h-4"></path></svg></button></div> `);
712
743
  $$renderer.push("<!--[0-->");
713
- $$renderer.push(`<div class="pointer-events-none absolute left-1/2 top-3 w-64 -translate-x-1/2 rounded-md border border-slate-200 bg-white/90 p-3 text-xs text-slate-600 shadow-sm backdrop-blur"><div class="flex justify-between font-medium text-slate-800"><span>Stabilizing layout</span> <span>${escape_html(stabilizationProgress)}%</span></div> <div class="mt-2 h-1.5 overflow-hidden rounded-full bg-slate-200"><div class="h-full rounded-full bg-brand-500 transition-all"${attr_style(`width:${stabilizationProgress}%`)}></div></div></div>`);
744
+ $$renderer.push(`<div class="pointer-events-none absolute left-3 top-3 z-10 w-56 rounded-md border border-slate-200 bg-white/90 p-3 text-xs text-slate-600 shadow-sm backdrop-blur"><div class="flex justify-between font-medium text-slate-800"><span>Stabilizing layout</span> <span>${escape_html(stabilizationProgress)}%</span></div> <div class="mt-2 h-1.5 overflow-hidden rounded-full bg-slate-200"><div class="h-full rounded-full bg-brand-500 transition-all"${attr_style(`width:${stabilizationProgress}%`)}></div></div></div>`);
714
745
  $$renderer.push(`<!--]--></div></div> <aside class="space-y-4 p-4"><div><h3 class="text-sm font-semibold text-slate-950">Graph Summary</h3> <div class="mt-3 grid grid-cols-2 gap-2 text-sm"><div class="rounded-md bg-slate-100 p-3"><div class="text-2xl font-semibold text-slate-950">${escape_html(graph().nodes.length)}</div> <div class="text-xs text-slate-500">nodes</div></div> <div class="rounded-md bg-slate-100 p-3"><div class="text-2xl font-semibold text-slate-950">${escape_html(graph().edges.length)}</div> <div class="text-xs text-slate-500">edges</div></div></div></div> <div><h3 class="text-sm font-semibold text-slate-950">Node Types</h3> <div class="mt-2 flex flex-wrap gap-1.5"><!--[-->`);
715
746
  const each_array_1 = ensure_array_like(ALL_BEHAVIOR_GRAPH_NODE_TYPES);
716
747
  for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {
@@ -754,4 +785,4 @@ function BehaviorGraph($$renderer, $$props) {
754
785
  }
755
786
 
756
787
  export { BehaviorGraph as B };
757
- //# sourceMappingURL=BehaviorGraph-m5kYj5HH.js.map
788
+ //# sourceMappingURL=BehaviorGraph-C-9z37Sm.js.map