unspaghettit 0.2.0 → 0.3.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 (270) hide show
  1. package/build/client/_app/immutable/assets/0.DSctqr5I.css +1 -0
  2. package/build/client/_app/immutable/assets/0.DSctqr5I.css.br +0 -0
  3. package/build/client/_app/immutable/assets/0.DSctqr5I.css.gz +0 -0
  4. package/build/client/_app/immutable/assets/BehaviorGraph.Bk0xQRZk.css +1 -0
  5. package/build/client/_app/immutable/assets/BehaviorGraph.Bk0xQRZk.css.br +0 -0
  6. package/build/client/_app/immutable/assets/BehaviorGraph.Bk0xQRZk.css.gz +0 -0
  7. package/build/client/_app/immutable/chunks/9nXQ5qrY2.js +1 -0
  8. package/build/client/_app/immutable/chunks/9nXQ5qrY2.js.br +0 -0
  9. package/build/client/_app/immutable/chunks/9nXQ5qrY2.js.gz +0 -0
  10. package/build/client/_app/immutable/chunks/B439_FLv.js +1 -0
  11. package/build/client/_app/immutable/chunks/B439_FLv.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/B439_FLv.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/BCEY79Dw.js +1 -0
  14. package/build/client/_app/immutable/chunks/BCEY79Dw.js.br +2 -0
  15. package/build/client/_app/immutable/chunks/BCEY79Dw.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/{DBJWcC6Y.js → BYIrIC5L.js} +1 -1
  17. package/build/client/_app/immutable/chunks/BYIrIC5L.js.br +0 -0
  18. package/build/client/_app/immutable/chunks/BYIrIC5L.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/B_9TWPrx2.js +1 -0
  20. package/build/client/_app/immutable/chunks/B_9TWPrx2.js.br +0 -0
  21. package/build/client/_app/immutable/chunks/B_9TWPrx2.js.gz +0 -0
  22. package/build/client/_app/immutable/chunks/BvOhVtZg.js +1 -0
  23. package/build/client/_app/immutable/chunks/BvOhVtZg.js.br +1 -0
  24. package/build/client/_app/immutable/chunks/BvOhVtZg.js.gz +0 -0
  25. package/build/client/_app/immutable/chunks/CY3em1ma2.js +1 -0
  26. package/build/client/_app/immutable/chunks/CY3em1ma2.js.br +0 -0
  27. package/build/client/_app/immutable/chunks/CY3em1ma2.js.gz +0 -0
  28. package/build/client/_app/immutable/chunks/CgdRZPgI.js +1 -0
  29. package/build/client/_app/immutable/chunks/CgdRZPgI.js.br +0 -0
  30. package/build/client/_app/immutable/chunks/CgdRZPgI.js.gz +0 -0
  31. package/build/client/_app/immutable/chunks/D5speDV82.js +908 -0
  32. package/build/client/_app/immutable/chunks/D5speDV82.js.br +0 -0
  33. package/build/client/_app/immutable/chunks/D5speDV82.js.gz +0 -0
  34. package/build/client/_app/immutable/chunks/DkxwAIfJ2.js +1 -0
  35. package/build/client/_app/immutable/chunks/DkxwAIfJ2.js.br +0 -0
  36. package/build/client/_app/immutable/chunks/DkxwAIfJ2.js.gz +0 -0
  37. package/build/client/_app/immutable/chunks/{DatGSObE.js → OJscNS3T.js} +1 -1
  38. package/build/client/_app/immutable/chunks/OJscNS3T.js.br +0 -0
  39. package/build/client/_app/immutable/chunks/OJscNS3T.js.gz +0 -0
  40. package/build/client/_app/immutable/chunks/U9p9CtKG2.js +2 -0
  41. package/build/client/_app/immutable/chunks/U9p9CtKG2.js.br +0 -0
  42. package/build/client/_app/immutable/chunks/U9p9CtKG2.js.gz +0 -0
  43. package/build/client/_app/immutable/entry/app.Cd4S3giu.js +2 -0
  44. package/build/client/_app/immutable/entry/app.Cd4S3giu.js.br +0 -0
  45. package/build/client/_app/immutable/entry/app.Cd4S3giu.js.gz +0 -0
  46. package/build/client/_app/immutable/entry/start.C3xXQVkq.js +1 -0
  47. package/build/client/_app/immutable/entry/start.C3xXQVkq.js.br +0 -0
  48. package/build/client/_app/immutable/entry/start.C3xXQVkq.js.gz +0 -0
  49. package/build/client/_app/immutable/nodes/0.dIOlQ-0y.js +4 -0
  50. package/build/client/_app/immutable/nodes/0.dIOlQ-0y.js.br +0 -0
  51. package/build/client/_app/immutable/nodes/0.dIOlQ-0y.js.gz +0 -0
  52. package/build/client/_app/immutable/nodes/{1.KYdA6ppX.js → 1.Dyte3Ggf.js} +1 -1
  53. package/build/client/_app/immutable/nodes/1.Dyte3Ggf.js.br +2 -0
  54. package/build/client/_app/immutable/nodes/1.Dyte3Ggf.js.gz +0 -0
  55. package/build/client/_app/immutable/nodes/10.ivxAosDg.js +2 -0
  56. package/build/client/_app/immutable/nodes/10.ivxAosDg.js.br +0 -0
  57. package/build/client/_app/immutable/nodes/10.ivxAosDg.js.gz +0 -0
  58. package/build/client/_app/immutable/nodes/{9.CMW6a2Lg.js → 11.wvMfJKC2.js} +1 -1
  59. package/build/client/_app/immutable/nodes/11.wvMfJKC2.js.br +0 -0
  60. package/build/client/_app/immutable/nodes/11.wvMfJKC2.js.gz +0 -0
  61. package/build/client/_app/immutable/nodes/{2.DBz20KgG.js → 2.CmPPom9Z.js} +1 -1
  62. package/build/client/_app/immutable/nodes/2.CmPPom9Z.js.br +0 -0
  63. package/build/client/_app/immutable/nodes/2.CmPPom9Z.js.gz +0 -0
  64. package/build/client/_app/immutable/nodes/3.D-iCGCEx.js +1 -0
  65. package/build/client/_app/immutable/nodes/3.D-iCGCEx.js.br +0 -0
  66. package/build/client/_app/immutable/nodes/3.D-iCGCEx.js.gz +0 -0
  67. package/build/client/_app/immutable/nodes/{4.BvMzqBJj.js → 4.DbfAvO8Z.js} +1 -1
  68. package/build/client/_app/immutable/nodes/4.DbfAvO8Z.js.br +0 -0
  69. package/build/client/_app/immutable/nodes/4.DbfAvO8Z.js.gz +0 -0
  70. package/build/client/_app/immutable/nodes/5.CC5Q7lVw.js +42 -0
  71. package/build/client/_app/immutable/nodes/5.CC5Q7lVw.js.br +0 -0
  72. package/build/client/_app/immutable/nodes/5.CC5Q7lVw.js.gz +0 -0
  73. package/build/client/_app/immutable/nodes/6.CHIjlzpO.js +1 -0
  74. package/build/client/_app/immutable/nodes/6.CHIjlzpO.js.br +0 -0
  75. package/build/client/_app/immutable/nodes/6.CHIjlzpO.js.gz +0 -0
  76. package/build/client/_app/immutable/nodes/{6.BOHISqs-.js → 7.Ejs18ZUc.js} +1 -1
  77. package/build/client/_app/immutable/nodes/7.Ejs18ZUc.js.br +0 -0
  78. package/build/client/_app/immutable/nodes/7.Ejs18ZUc.js.gz +0 -0
  79. package/build/client/_app/immutable/nodes/{7.CemgNJfw.js → 8.B-HweAc8.js} +1 -1
  80. package/build/client/_app/immutable/nodes/8.B-HweAc8.js.br +0 -0
  81. package/build/client/_app/immutable/nodes/8.B-HweAc8.js.gz +0 -0
  82. package/build/client/_app/immutable/nodes/9.CKPeM6tx.js +5 -0
  83. package/build/client/_app/immutable/nodes/9.CKPeM6tx.js.br +0 -0
  84. package/build/client/_app/immutable/nodes/9.CKPeM6tx.js.gz +0 -0
  85. package/build/client/_app/version.json +1 -1
  86. package/build/client/_app/version.json.br +0 -0
  87. package/build/client/_app/version.json.gz +0 -0
  88. package/build/client/lyriks_logo.svg +148 -0
  89. package/build/client/lyriks_logo.svg.br +0 -0
  90. package/build/client/lyriks_logo.svg.gz +0 -0
  91. package/build/server/chunks/{0-C_o0oz-N.js → 0-Co8kcANG.js} +4 -4
  92. package/build/server/chunks/{0-C_o0oz-N.js.map → 0-Co8kcANG.js.map} +1 -1
  93. package/build/server/chunks/1-BSUItTig.js +9 -0
  94. package/build/server/chunks/{1-DPpKAKXV.js.map → 1-BSUItTig.js.map} +1 -1
  95. package/build/server/chunks/10-BygvxrZp.js +9 -0
  96. package/build/server/chunks/10-BygvxrZp.js.map +1 -0
  97. package/build/server/chunks/11-DRx0tRx2.js +9 -0
  98. package/build/server/chunks/11-DRx0tRx2.js.map +1 -0
  99. package/build/server/chunks/{2-AlfFqtL1.js → 2-BQT3m1vc.js} +3 -3
  100. package/build/server/chunks/{2-AlfFqtL1.js.map → 2-BQT3m1vc.js.map} +1 -1
  101. package/build/server/chunks/{3-vbjUt_51.js → 3-DPZ9BquJ.js} +3 -3
  102. package/build/server/chunks/{3-vbjUt_51.js.map → 3-DPZ9BquJ.js.map} +1 -1
  103. package/build/server/chunks/{4-BNow4x6D.js → 4-DHo47YX6.js} +3 -3
  104. package/build/server/chunks/{4-BNow4x6D.js.map → 4-DHo47YX6.js.map} +1 -1
  105. package/build/server/chunks/5-Cp9evBAG.js +9 -0
  106. package/build/server/chunks/5-Cp9evBAG.js.map +1 -0
  107. package/build/server/chunks/6-DiBq3bOV.js +9 -0
  108. package/build/server/chunks/6-DiBq3bOV.js.map +1 -0
  109. package/build/server/chunks/{6-QQ7r8Rd5.js → 7-C4hmS0dG.js} +3 -3
  110. package/build/server/chunks/{6-QQ7r8Rd5.js.map → 7-C4hmS0dG.js.map} +1 -1
  111. package/build/server/chunks/{7-CbPLGaIG.js → 8-CFFuDzBC.js} +4 -4
  112. package/build/server/chunks/{7-CbPLGaIG.js.map → 8-CFFuDzBC.js.map} +1 -1
  113. package/build/server/chunks/9-nhhKZJrs.js +9 -0
  114. package/build/server/chunks/9-nhhKZJrs.js.map +1 -0
  115. package/build/server/chunks/BehaviorGraph-m5kYj5HH.js +757 -0
  116. package/build/server/chunks/BehaviorGraph-m5kYj5HH.js.map +1 -0
  117. package/build/server/chunks/{FeatureCard-BQOY6gJQ.js → FeatureCard-CfbXNYe8.js} +2 -2
  118. package/build/server/chunks/{FeatureCard-BQOY6gJQ.js.map → FeatureCard-CfbXNYe8.js.map} +1 -1
  119. package/build/server/chunks/{ProgressBar-CfhccQ83.js → ProgressBar-DDoQJ_C9.js} +2 -2
  120. package/build/server/chunks/ProgressBar-DDoQJ_C9.js.map +1 -0
  121. package/build/server/chunks/{ProjectsIndex-CoDrvRya.js → ProjectsIndex-DUVJ3hyL.js} +2 -2
  122. package/build/server/chunks/{ProjectsIndex-CoDrvRya.js.map → ProjectsIndex-DUVJ3hyL.js.map} +1 -1
  123. package/build/server/chunks/TransitionCatalog-B8zHs-2E.js +271 -0
  124. package/build/server/chunks/TransitionCatalog-B8zHs-2E.js.map +1 -0
  125. package/build/server/chunks/{_layout.svelte-BREws55o.js → _layout.svelte-CLTmk0xU.js} +66 -15
  126. package/build/server/chunks/_layout.svelte-CLTmk0xU.js.map +1 -0
  127. package/build/server/chunks/{_page.svelte-De508ek8.js → _page.svelte-B1nG3PKn.js} +4 -4
  128. package/build/server/chunks/{_page.svelte-De508ek8.js.map → _page.svelte-B1nG3PKn.js.map} +1 -1
  129. package/build/server/chunks/{_page.svelte-Zf9H4KOP.js → _page.svelte-BW_nbAAH.js} +11 -315
  130. package/build/server/chunks/_page.svelte-BW_nbAAH.js.map +1 -0
  131. package/build/server/chunks/{_page.svelte-BqSC-1vK.js → _page.svelte-Caq7J0jU.js} +91 -47
  132. package/build/server/chunks/_page.svelte-Caq7J0jU.js.map +1 -0
  133. package/build/server/chunks/{_page.svelte-B7hT3P8E.js → _page.svelte-Cham-dsM.js} +4 -4
  134. package/build/server/chunks/{_page.svelte-B7hT3P8E.js.map → _page.svelte-Cham-dsM.js.map} +1 -1
  135. package/build/server/chunks/_page.svelte-Dhwjwph_.js +41 -0
  136. package/build/server/chunks/_page.svelte-Dhwjwph_.js.map +1 -0
  137. package/build/server/chunks/{_page.svelte-BKKCa9H5.js → _page.svelte-DlFVT40-.js} +3 -3
  138. package/build/server/chunks/{_page.svelte-BKKCa9H5.js.map → _page.svelte-DlFVT40-.js.map} +1 -1
  139. package/build/server/chunks/{_page.svelte-BtI2zZ_Z.js → _page.svelte-NVT2dzpG.js} +176 -327
  140. package/build/server/chunks/_page.svelte-NVT2dzpG.js.map +1 -0
  141. package/build/server/chunks/{_page.svelte-BKTveFAj.js → _page.svelte-Oj-W7G5s.js} +5 -5
  142. package/build/server/chunks/{_page.svelte-BKTveFAj.js.map → _page.svelte-Oj-W7G5s.js.map} +1 -1
  143. package/build/server/chunks/_page.svelte-Z_kK2lHY.js +68 -0
  144. package/build/server/chunks/_page.svelte-Z_kK2lHY.js.map +1 -0
  145. package/build/server/chunks/{builderModeStore.svelte-ihupr-3p.js → builderModeStore.svelte-BpRIU_zP.js} +217 -6
  146. package/build/server/chunks/builderModeStore.svelte-BpRIU_zP.js.map +1 -0
  147. package/build/server/chunks/client-DeX3TC3s.js +51 -0
  148. package/build/server/chunks/{client-DfpLcAZ9.js.map → client-DeX3TC3s.js.map} +1 -1
  149. package/build/server/chunks/{error.svelte-C35KOpru.js → error.svelte-Cdjeq3L2.js} +4 -4
  150. package/build/server/chunks/{error.svelte-C35KOpru.js.map → error.svelte-Cdjeq3L2.js.map} +1 -1
  151. package/build/server/chunks/featureStore.svelte-DIYgPBVm.js +161 -0
  152. package/build/server/chunks/featureStore.svelte-DIYgPBVm.js.map +1 -0
  153. package/build/server/chunks/{hooks.server-Rv301GTB.js → hooks.server-y3jdg_sB.js} +6 -2
  154. package/build/server/chunks/hooks.server-y3jdg_sB.js.map +1 -0
  155. package/build/server/chunks/{internal-BPKrFkK1.js → internal-KYK0WpL7.js} +4 -4
  156. package/build/server/chunks/{internal-BPKrFkK1.js.map → internal-KYK0WpL7.js.map} +1 -1
  157. package/build/server/chunks/projectFeaturesStore.svelte-2o-72_vr.js +313 -0
  158. package/build/server/chunks/projectFeaturesStore.svelte-2o-72_vr.js.map +1 -0
  159. package/build/server/chunks/{reconcile-Dv7jS3C8.js → reconcile-B5xqb6-s.js} +3 -272
  160. package/build/server/chunks/reconcile-B5xqb6-s.js.map +1 -0
  161. package/build/server/chunks/registry-DqAn_hVE.js +21 -0
  162. package/build/server/chunks/registry-DqAn_hVE.js.map +1 -0
  163. package/build/server/chunks/{state-CpLVNZq7.js → state-DBjl9lhV.js} +2 -2
  164. package/build/server/chunks/{state-CpLVNZq7.js.map → state-DBjl9lhV.js.map} +1 -1
  165. package/build/server/index.js +1 -1
  166. package/build/server/index.js.map +1 -1
  167. package/build/server/manifest.js +33 -17
  168. package/build/server/manifest.js.map +1 -1
  169. package/cli/commands/dashboard.ts +14 -0
  170. package/cli/commands/init.ts +26 -0
  171. package/cli/commands/theme.ts +62 -0
  172. package/cli/unspa.ts +38 -2
  173. package/cli/util/context-files.ts +5 -0
  174. package/cli/util/theme.ts +34 -0
  175. package/mcp-server/sync-notifier.ts +88 -35
  176. package/package.json +2 -1
  177. package/src/app.css +187 -0
  178. package/src/app.html +15 -1
  179. package/src/features/behavior-model/domain/services/BehaviorGraphModel.ts +531 -0
  180. package/src/features/behavior-model/presentation/adapters/VisBehaviorGraphRenderer.ts +492 -0
  181. package/src/features/behavior-model/presentation/components/BehaviorGraph.svelte +370 -0
  182. package/src/features/behavior-model/presentation/components/FeatureHeader.svelte +13 -5
  183. package/src/features/behavior-model/presentation/view-models/BehaviorGraphTheme.ts +43 -0
  184. package/src/features/builder-mode/domain/BuilderModeDashboard.ts +7 -1
  185. package/src/features/builder-mode/presentation/components/BuilderModeDashboard.svelte +78 -16
  186. package/src/features/builder-mode/presentation/components/BuilderTagChips.svelte +25 -0
  187. package/src/features/builder-mode/presentation/stores/builderModeStore.svelte.ts +247 -3
  188. package/src/features/projects/presentation/components/ProjectEditor.svelte +7 -0
  189. package/src/features/simulator/application/use-cases/RunScenarios.ts +15 -1
  190. package/src/hooks.server.ts +11 -1
  191. package/src/lib/theme/registry.ts +77 -0
  192. package/src/lib/theme/themeStore.svelte.ts +64 -0
  193. package/src/routes/+layout.svelte +184 -30
  194. package/src/routes/features/[id]/graph/+page.svelte +34 -0
  195. package/src/routes/projects/[id]/graph/+page.svelte +79 -0
  196. package/src/shared/presentation/components/ProgressBar.svelte +1 -1
  197. package/src/shared/presentation/toast/SyncToast.svelte +14 -3
  198. package/src/shared/presentation/toast/viewLinkResolver.ts +32 -0
  199. package/static/lyriks_logo.svg +148 -0
  200. package/build/client/_app/immutable/assets/0.DFMDYAU9.css +0 -1
  201. package/build/client/_app/immutable/assets/0.DFMDYAU9.css.br +0 -0
  202. package/build/client/_app/immutable/assets/0.DFMDYAU9.css.gz +0 -0
  203. package/build/client/_app/immutable/chunks/BO66rBOa2.js +0 -1
  204. package/build/client/_app/immutable/chunks/BO66rBOa2.js.br +0 -0
  205. package/build/client/_app/immutable/chunks/BO66rBOa2.js.gz +0 -0
  206. package/build/client/_app/immutable/chunks/DBJWcC6Y.js.br +0 -0
  207. package/build/client/_app/immutable/chunks/DBJWcC6Y.js.gz +0 -0
  208. package/build/client/_app/immutable/chunks/DHoA038D.js +0 -1
  209. package/build/client/_app/immutable/chunks/DHoA038D.js.br +0 -2
  210. package/build/client/_app/immutable/chunks/DHoA038D.js.gz +0 -0
  211. package/build/client/_app/immutable/chunks/DatGSObE.js.br +0 -0
  212. package/build/client/_app/immutable/chunks/DatGSObE.js.gz +0 -0
  213. package/build/client/_app/immutable/chunks/DjWKKtqp.js +0 -1
  214. package/build/client/_app/immutable/chunks/DjWKKtqp.js.br +0 -1
  215. package/build/client/_app/immutable/chunks/DjWKKtqp.js.gz +0 -0
  216. package/build/client/_app/immutable/chunks/Dq0DUAz1.js +0 -1
  217. package/build/client/_app/immutable/chunks/Dq0DUAz1.js.br +0 -0
  218. package/build/client/_app/immutable/chunks/Dq0DUAz1.js.gz +0 -0
  219. package/build/client/_app/immutable/chunks/iQu0D9Ux.js +0 -1
  220. package/build/client/_app/immutable/chunks/iQu0D9Ux.js.br +0 -0
  221. package/build/client/_app/immutable/chunks/iQu0D9Ux.js.gz +0 -0
  222. package/build/client/_app/immutable/entry/app.CLgh6Mx_.js +0 -2
  223. package/build/client/_app/immutable/entry/app.CLgh6Mx_.js.br +0 -0
  224. package/build/client/_app/immutable/entry/app.CLgh6Mx_.js.gz +0 -0
  225. package/build/client/_app/immutable/entry/start.D5GPCQZD.js +0 -1
  226. package/build/client/_app/immutable/entry/start.D5GPCQZD.js.br +0 -0
  227. package/build/client/_app/immutable/entry/start.D5GPCQZD.js.gz +0 -0
  228. package/build/client/_app/immutable/nodes/0.BOoI-hsu.js +0 -4
  229. package/build/client/_app/immutable/nodes/0.BOoI-hsu.js.br +0 -0
  230. package/build/client/_app/immutable/nodes/0.BOoI-hsu.js.gz +0 -0
  231. package/build/client/_app/immutable/nodes/1.KYdA6ppX.js.br +0 -2
  232. package/build/client/_app/immutable/nodes/1.KYdA6ppX.js.gz +0 -0
  233. package/build/client/_app/immutable/nodes/2.DBz20KgG.js.br +0 -0
  234. package/build/client/_app/immutable/nodes/2.DBz20KgG.js.gz +0 -0
  235. package/build/client/_app/immutable/nodes/3.19DIoFtw.js +0 -1
  236. package/build/client/_app/immutable/nodes/3.19DIoFtw.js.br +0 -0
  237. package/build/client/_app/immutable/nodes/3.19DIoFtw.js.gz +0 -0
  238. package/build/client/_app/immutable/nodes/4.BvMzqBJj.js.br +0 -0
  239. package/build/client/_app/immutable/nodes/4.BvMzqBJj.js.gz +0 -0
  240. package/build/client/_app/immutable/nodes/5.Dq6obSGG.js +0 -42
  241. package/build/client/_app/immutable/nodes/5.Dq6obSGG.js.br +0 -0
  242. package/build/client/_app/immutable/nodes/5.Dq6obSGG.js.gz +0 -0
  243. package/build/client/_app/immutable/nodes/6.BOHISqs-.js.br +0 -0
  244. package/build/client/_app/immutable/nodes/6.BOHISqs-.js.gz +0 -0
  245. package/build/client/_app/immutable/nodes/7.CemgNJfw.js.br +0 -0
  246. package/build/client/_app/immutable/nodes/7.CemgNJfw.js.gz +0 -0
  247. package/build/client/_app/immutable/nodes/8.DejSfIYh.js +0 -5
  248. package/build/client/_app/immutable/nodes/8.DejSfIYh.js.br +0 -0
  249. package/build/client/_app/immutable/nodes/8.DejSfIYh.js.gz +0 -0
  250. package/build/client/_app/immutable/nodes/9.CMW6a2Lg.js.br +0 -0
  251. package/build/client/_app/immutable/nodes/9.CMW6a2Lg.js.gz +0 -0
  252. package/build/server/chunks/1-DPpKAKXV.js +0 -9
  253. package/build/server/chunks/5-D7OCJpxD.js +0 -9
  254. package/build/server/chunks/5-D7OCJpxD.js.map +0 -1
  255. package/build/server/chunks/8-CVO-E-sf.js +0 -9
  256. package/build/server/chunks/8-CVO-E-sf.js.map +0 -1
  257. package/build/server/chunks/9-DxT1baO5.js +0 -9
  258. package/build/server/chunks/9-DxT1baO5.js.map +0 -1
  259. package/build/server/chunks/ProgressBar-CfhccQ83.js.map +0 -1
  260. package/build/server/chunks/_layout.svelte-BREws55o.js.map +0 -1
  261. package/build/server/chunks/_page.svelte-BqSC-1vK.js.map +0 -1
  262. package/build/server/chunks/_page.svelte-BtI2zZ_Z.js.map +0 -1
  263. package/build/server/chunks/_page.svelte-Zf9H4KOP.js.map +0 -1
  264. package/build/server/chunks/builderModeStore.svelte-ihupr-3p.js.map +0 -1
  265. package/build/server/chunks/client-DfpLcAZ9.js +0 -24
  266. package/build/server/chunks/hooks.server-Rv301GTB.js.map +0 -1
  267. package/build/server/chunks/reconcile-Dv7jS3C8.js.map +0 -1
  268. /package/build/client/_app/immutable/assets/{9.nv0I59TU.css → 11.nv0I59TU.css} +0 -0
  269. /package/build/client/_app/immutable/assets/{9.nv0I59TU.css.br → 11.nv0I59TU.css.br} +0 -0
  270. /package/build/client/_app/immutable/assets/{9.nv0I59TU.css.gz → 11.nv0I59TU.css.gz} +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{H as h}from"../chunks/Bp2_Vghh.js";import"../chunks/suTxxv1t.js";import{t as g}from"../chunks/DkxwAIfJ2.js";import{t as _}from"../chunks/hpWJNn0t2.js";import{n as v,t as y}from"../chunks/9nXQ5qrY2.js";import{t as b}from"../chunks/U9p9CtKG2.js";var x=n(`<div class="mx-auto max-w-7xl px-4 py-10 text-sm text-neutral-500">Loading...</div>`),S=n(`<div class="mx-auto max-w-7xl px-4 py-10 text-sm text-red-600"> </div>`),C=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>`),w=n(`<main class="mx-auto max-w-[1600px] px-4 py-6"><!></main>`);function T(n,T){d(T,!1);let E=()=>o(g,`$page`,D),[D,O]=c();m(()=>{let e=h(E().params.id??``);return _.load(e),y.load(e),()=>{_.reset(),v.reset(),y.reset()}}),p();var k=t(),A=a(k),j=e=>{l(e,x())},M=t=>{var n=S(),a=i(n,!0);f(n),r(()=>e(a,_.error)),l(t,n)},N=e=>{l(e,C())},P=e=>{var t=w();b(i(t),{get feature(){return _.feature}}),f(t),l(e,t)};u(A,e=>{_.loading?e(j):_.error?e(M,1):_.feature?e(P,-1):e(N,2)}),l(n,k),s(),O()}export{T as component};
@@ -1,4 +1,4 @@
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{F as S,H as C,L as w,M as T,X as E,a as D,c as O,d as k,f as A,k as j,o as M,s as N,t as P,u as F}from"../chunks/Bp2_Vghh.js";import{t as I}from"../chunks/BfMYiIUi.js";import{n as ee,t as L}from"../chunks/DKgYpi6_.js";import{a as R,i as z,o as B,r as te,s as V,t as H}from"../chunks/CJjJLwzv2.js";var ne=e=>e,re=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:A(e.namespace)})),createdAt:e.createdAt,updatedAt:e.updatedAt}),ie=(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},U={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.`},ae=e=>e?e.mode===`custom`?e:{mode:`auto`,stack:e.stack,conventions:e.conventions??U.conventions,notes:e.notes??U.notes}:null,oe=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 j(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 j(n.condition))typeof e.left==`string`&&t.add(e.left);return t},se=(e,t)=>{for(let n of e.surfaces){let r=n.actions.find(e=>e.id===t);if(!r)continue;let i=oe(r),a=n.stateDefinitions.filter(e=>i.has(e.path)),o=n.invariants.filter(e=>j(e.condition).some(e=>typeof e.left==`string`&&i.has(e.left))),s=ae(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},ce=(e,t)=>{let n=H(e,t);return{...n,total:te(n)}},W=N(),le=e=>W(e),ue=5,G=5,de=M(),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,ue),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,G),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},fe=(e,t={})=>q(e,de(e),t),pe=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=k({left:e.path,operator:e.operator,right:e.value},n,r);return{path:String(e.path),operator:e.operator,held:i,...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?B(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?B(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},h=O({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=F(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},p=O({surface:e,action:t,snapshot:u,parameters:f,featureInvariants:r.featureInvariants,feature:r,...i?{projectFeatures:i}:{}}),m=F(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(`, `)})`:``,j=_.filter(e=>!e.skipped).length,M=_.length-j,N=M>0?`, ${M} skipped (action was blocked)`:``,P=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, `:``,ee=E?`pass. ${I}${g}${j>0?`, ${j} assertion${j===1?``:`s`} held`:``}${N}`:`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}/${j} assertion${j===1?``:`s`} did not hold${A}`:`transition mismatch${P}`:`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:ee}},me=()=>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}},he=a(`<option> </option>`),ge=a(`<option> </option>`),_e=a(`<span class="text-xs text-slate-500">Loading...</span>`),ve=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>`),ye=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>`),be=a(`<p class="text-sm text-red-600"> </p>`),xe=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>`),Se=a(`<span class="rounded bg-slate-100 px-1.5 py-0.5 font-mono text-[10px] text-slate-600"> </span>`),Ce=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>`),we=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>`),Te=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
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{F as S,H as C,L as w,M as T,X as E,a as D,c as O,d as k,f as A,k as j,o as M,s as N,t as P,u as F}from"../chunks/Bp2_Vghh.js";import{t as I}from"../chunks/BfMYiIUi.js";import{n as ee,t as L}from"../chunks/DKgYpi6_.js";import{a as R,i as z,o as B,r as te,s as V,t as H}from"../chunks/CJjJLwzv2.js";var ne=e=>e,re=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:A(e.namespace)})),createdAt:e.createdAt,updatedAt:e.updatedAt}),ie=(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},U={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.`},ae=e=>e?e.mode===`custom`?e:{mode:`auto`,stack:e.stack,conventions:e.conventions??U.conventions,notes:e.notes??U.notes}:null,oe=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 j(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 j(n.condition))typeof e.left==`string`&&t.add(e.left);return t},se=(e,t)=>{for(let n of e.surfaces){let r=n.actions.find(e=>e.id===t);if(!r)continue;let i=oe(r),a=n.stateDefinitions.filter(e=>i.has(e.path)),o=n.invariants.filter(e=>j(e.condition).some(e=>typeof e.left==`string`&&i.has(e.left))),s=ae(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},ce=(e,t)=>{let n=H(e,t);return{...n,total:te(n)}},W=N(),le=e=>W(e),ue=5,G=5,de=M(),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,ue),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,G),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},fe=(e,t={})=>q(e,de(e),t),pe=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=k({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?B(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?B(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},h=O({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=F(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},p=O({surface:e,action:t,snapshot:u,parameters:f,featureInvariants:r.featureInvariants,feature:r,...i?{projectFeatures:i}:{}}),m=F(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(`, `)})`:``,j=_.filter(e=>!e.skipped).length,M=_.length-j,N=M>0?`, ${M} skipped (action was blocked)`:``,P=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, `:``,ee=E?`pass. ${I}${g}${j>0?`, ${j} assertion${j===1?``:`s`} held`:``}${N}`:`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}/${j} assertion${j===1?``:`s`} did not hold${A}`:`transition mismatch${P}`:`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:ee}},me=()=>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}},he=a(`<option> </option>`),ge=a(`<option> </option>`),_e=a(`<span class="text-xs text-slate-500">Loading...</span>`),ve=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>`),ye=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>`),be=a(`<p class="text-sm text-red-600"> </p>`),xe=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>`),Se=a(`<span class="rounded bg-slate-100 px-1.5 py-0.5 font-mono text-[10px] text-slate-600"> </span>`),Ce=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>`),we=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>`),Te=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
2
  pasting the full JSON blob into a prompt. A Feature is one LLM-sized slice of behavior
3
3
  (a flow, a screen, a capability); a Project groups many Features under one product or codebase.
4
4
  The read tools below run live against the selected Feature (plus the first Project). Compare
@@ -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/DBJWcC6Y.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/BYIrIC5L.js";function i(i){n(`rqn88j`,n=>{t(()=>{e.title=`Projects / Unspaghettit`})}),r(i,{})}export{i as component};
@@ -0,0 +1,5 @@
1
+ import{$ as e,A as t,C as n,E as r,F as i,G as a,H as o,I as s,J as c,L as l,M as u,N as d,O as f,Q as p,R as m,U as h,V as g,W as _,X as v,Y as y,Z as b,at as x,c as S,ct as C,et as w,it as T,j as E,k as D,l as O,lt as k,m as A,mt as j,n as M,o as N,p as ee,pt as P,q as F,r as I,rt as L,s as R,tt as z,u as B,v as V,x as H,z as U}from"../chunks/BPl9BITm.js";import{n as W}from"../chunks/OJscNS3T.js";import"../chunks/xihTtKlq.js";import{n as te,t as ne}from"../chunks/ib21i2T_.js";import{E as re,H as ie,T as ae,a as G,at as oe,i as K,lt as se,pt as ce,t as q,vt as le}from"../chunks/Bp2_Vghh.js";import"../chunks/suTxxv1t.js";import{t as ue}from"../chunks/BOrLmFwJ.js";import"../chunks/BCEY79Dw.js";import{t as de}from"../chunks/cMamJTsF.js";import{t as fe}from"../chunks/D8YEa1po.js";import{t as pe}from"../chunks/DKgYpi6_.js";import{t as me}from"../chunks/D9dKmajw.js";import{t as he}from"../chunks/Dhqg7r_2.js";import{n as ge,o as _e,t as ve}from"../chunks/HKLi1Yz3.js";import{t as ye}from"../chunks/N7PXjlRH.js";import{t as be}from"../chunks/CxyLMlpt2.js";import{t as xe}from"../chunks/DkxwAIfJ2.js";import{a as J,r as Se,t as Ce}from"../chunks/B_9TWPrx2.js";import{n as Y,t as X}from"../chunks/CY3em1ma2.js";var we=d(`<button type="button" class="h-8 rounded-md px-2 text-xs font-medium text-slate-500 hover:bg-slate-50 hover:text-slate-900">Clear</button>`),Te=d(`<div class="space-y-3"><p>No features in this project yet.</p> <div class="flex flex-wrap justify-center gap-2"><button type="button" class="rounded-md bg-slate-900 px-4 py-2 text-sm font-medium text-white">Create first feature</button></div></div>`),Ee=d(`<div class="rounded-lg border border-dashed border-hairline bg-white p-6 text-center text-sm text-slate-500"><!></div>`),De=d(`<li><!></li>`),Oe=d(`<ul class="grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3"></ul>`),ke=d(`<div class="fixed inset-0 z-40 flex items-start justify-center bg-slate-950/30 px-4 py-24 backdrop-blur-sm" role="presentation"><div class="w-full max-w-2xl rounded-xl border border-hairline bg-white shadow-xl" role="dialog" aria-modal="true" aria-labelledby="add-feature-dialog-title"><header class="flex items-start justify-between gap-4 border-b border-hairline px-5 py-4"><div><h2 id="add-feature-dialog-title" class="text-base font-semibold text-slate-950">Add an feature</h2> <p class="mt-1 text-sm text-slate-500">Create a new behavior model. It will be tied to this project automatically.</p></div> <button type="button" class="rounded-md px-2 py-1 text-sm text-slate-500 hover:bg-slate-100 hover:text-slate-900" aria-label="Close">x</button></header> <form class="space-y-3 p-5" data-tour="new-feature-form"><label class="block text-xs font-medium text-slate-700">Feature name <input type="text" placeholder="e.g. Restaurant booking" class="mt-1 h-10 w-full rounded-md border border-slate-300 bg-white px-3 text-sm outline-none focus:border-slate-900" required=""/></label> <label class="block text-xs font-medium text-slate-700">Description <input type="text" data-tour="new-feature-description" placeholder="What is this feature about?" class="mt-1 h-10 w-full rounded-md border border-slate-300 bg-white px-3 text-sm outline-none focus:border-slate-900" required=""/></label> <div class="flex justify-end gap-2 pt-2"><button type="button" class="h-10 rounded-md border border-slate-300 bg-white px-4 text-sm font-medium text-slate-700 hover:bg-slate-50">Cancel</button> <button type="submit" class="h-10 rounded-md bg-slate-900 px-4 text-sm font-medium text-white disabled:opacity-50"> </button></div></form></div></div>`),Ae=d(`<div class="space-y-4"><div class="rounded-xl border border-slate-200 bg-white p-3 shadow-sm shadow-slate-950/5"><div class="flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between"><div class="flex min-w-0 items-center rounded-lg border border-hairline bg-white p-1 lg:flex-1"><label for="project-feature-search" class="sr-only">Search project features</label> <input id="project-feature-search" type="search" placeholder="Search features..." class="h-9 w-full min-w-0 rounded-md border-0 bg-transparent px-3 text-sm outline-none placeholder:text-slate-400"/> <!></div> <div class="flex flex-col gap-2 sm:flex-row sm:items-center"><!> <label class="flex h-10 items-center gap-2 rounded-lg border border-hairline bg-white px-3 text-sm text-slate-600"><span class="text-xs font-medium">Sort</span> <select class="bg-transparent text-sm font-medium text-slate-800 outline-none"><option>Updated</option><option>Name</option><option>Maturity</option></select></label> <button type="button" data-tour="new-feature-button" class="inline-flex h-10 items-center justify-center gap-2 rounded-md bg-slate-900 px-4 text-sm font-medium text-white" title="Create a new feature inside this project"><span aria-hidden="true">+</span> New feature</button></div></div></div> <!></div> <!>`,1);function je(n,o){k(o,!0);let s=z(`all`);function c(e,t){return t.length===0?!0:e.name.toLowerCase().includes(t)||(e.description??``).toLowerCase().includes(t)}function u(e,t){let n=e.tags??[];if(t===`all`)return!0;if(t===`untagged`)return n.length===0;let r=se(t);return n.some(e=>se(e)===r)}let d=L(()=>{let e=o.search.trim().toLowerCase();return o.features.filter(t=>c(t,e)&&u(t,U(s)))}),f=L(()=>{let e=[];for(let t of o.features)for(let n of t.tags??[])e.push(n);return e});a(()=>{fe.registerTypes(U(f).map(e=>e.type))});function h(e){let t=o.search.trim().toLowerCase();return o.features.filter(n=>c(n,t)&&u(n,e)).length}let x=z(!1),T=z(null),M=z(`updated`),N=z(``),P=z(``),F=z(!1),I=L(()=>he(de.currentStep,`new-feature`,U(N))),V=z(e(new Map));a(()=>{let e=o.features.map(e=>String(e.id)),t=!1;return(async()=>{let n=await q(),r=e.filter(e=>!U(V).has(e));if(r.length===0)return;let i=await Promise.all(r.map(async e=>[e,await n.statusRepository.get(e)]));if(t)return;let a=new Map(U(V));for(let[e,t]of i)a.set(e,t);w(V,a,!0)})(),()=>{t=!0}}),a(()=>{U(x)&&g().then(()=>U(T)?.focus())});function H(){w(x,!0)}function W(){w(x,!1),w(N,``),w(P,``)}async function te(){let e=U(N).trim();if(!(U(F)||e.length===0)&&U(P).trim().length!==0){w(F,!0);try{await o.onCreate(e,U(P).trim()),W()}finally{w(F,!1)}}}function ne(e){e.key===`Escape`&&W()}function ie(e){let t=re(e),n=ae(e,U(V).get(String(e.id))??null);return{id:e.id,name:e.name,description:e.description,surfaceCount:e.surfaces.length,actionCount:e.surfaces.reduce((e,t)=>e+t.actions.length,0),createdAt:e.createdAt,updatedAt:e.updatedAt,tags:e.tags,maturityPercentage:t.percentage,criticalIssueCount:t.criticalIssues.length,recommendedIssueCount:t.recommendedIssues.length,implementationPercentage:n.expectedCount===0?null:n.percentage,implementationFoundCount:n.foundCount,implementationExpectedCount:n.expectedCount,implementationHasReport:n.hasReport}}let G=L(()=>U(d).map(ie).sort((e,t)=>U(M)===`name`?e.name.localeCompare(t.name):U(M)===`maturity`?t.maturityPercentage-e.maturityPercentage:new Date(t.updatedAt).getTime()-new Date(e.updatedAt).getTime())),ce=L(()=>{let e=new Set;for(let t of o.features)for(let n of t.tags??[])e.add(oe(n.type));return[...e].sort((e,t)=>e.localeCompare(t))});function le(e){let t=Y.project?.implementationQueue??[],n=`feature:${String(e)}`;return t.some(e=>K(e)===n)}async function ue(e){if(!Y.project)return;let t=await(await q()).useCases.enqueueQueueItem(Y.project.id,{kind:`feature`,featureId:e});Y.project&&=t.project}async function pe(e){if(!Y.project)return;let t=Y.project.implementationQueue??[],n=`feature:${String(e)}`,r=t.find(e=>K(e)===n);if(!r)return;let i=await(await q()).useCases.dequeueQueueItem(Y.project.id,r.id);Y.project&&=i}var me=Ae();m(`keydown`,y,ne);var ge=b(me),_e=v(ge),ve=v(_e),xe=v(ve),J=p(v(xe),2);O(J);var Se=p(J,2),Ce=e=>{var t=we();l(`click`,t,()=>o.onSearch(``)),E(e,t)},X=L(()=>o.search.trim().length>0);D(Se,e=>{U(X)&&e(Ce)}),j(xe);var je=p(xe,2),Me=v(je);ye(Me,{get tags(){return U(f)},get value(){return U(s)},onChange:e=>w(s,e,!0),countLabel:h});var Z=p(Me,2),Q=p(v(Z),2),Ne=v(Q);Ne.value=Ne.__value=`updated`;var Pe=p(Ne);Pe.value=Pe.__value=`name`;var Fe=p(Pe);Fe.value=Fe.__value=`maturity`,j(Q),j(Z);var Ie=p(Z,2);j(je),j(ve),j(_e);var Le=p(_e,2),Re=e=>{var t=Ee(),n=v(t),r=e=>{var t=Te(),n=p(v(t),2),r=v(n);j(n),j(t),l(`click`,r,()=>H()),E(e,t)},a=e=>{E(e,i(`No features match your search.`))};D(n,e=>{o.features.length===0?e(r):e(a,-1)}),j(t),E(e,t)},ze=e=>{var t=Oe();r(t,21,()=>U(G),e=>e.id,(e,t)=>{var n=De(),r=v(n);{let e=L(()=>o.onRemoveTag?(e,n)=>o.onRemoveTag(U(t).id,{type:e,value:n}):void 0),n=L(()=>le(U(t).id));be(r,{get summary(){return U(t)},get tagTypeOptions(){return U(ce)},deleteLabel:`Remove`,onAddTag:(e,n)=>o.onAddTag(U(t).id,{type:e,value:n}),get onRemoveTag(){return U(e)},onDelete:()=>o.onRemove(U(t).id),get queued(){return U(n)},onAddToQueue:()=>ue(U(t).id),onRemoveFromQueue:()=>pe(U(t).id)})}j(n),E(e,n)}),j(t),E(e,t)};D(Le,e=>{U(G).length===0?e(Re):e(ze,-1)}),j(ge);var Be=p(ge,2),Ve=e=>{var n=ke(),r=v(n),i=v(r),a=p(v(i),2);j(i);var o=p(i,2),s=v(o),c=p(v(s));O(c),R(c,e=>w(T,e),()=>U(T)),j(s);var u=p(s,2),d=p(v(u));O(d),j(u);var f=p(u,2),h=v(f),g=p(h,2),y=v(g,!0);j(g),j(f),j(o),j(r),j(n),_(e=>{g.disabled=e,B(g,`title`,U(I).blocked?`Tutorial: name must be exactly "${U(I).requiredValue}"`:void 0),t(y,U(F)?`Creating...`:`Create feature`)},[()=>U(F)||U(N).trim().length===0||U(P).trim().length===0||U(I).blocked]),l(`click`,n,e=>{e.currentTarget===e.target&&W()}),l(`click`,a,W),m(`submit`,o,e=>{e.preventDefault(),te()}),S(c,()=>U(N),e=>w(N,e)),S(d,()=>U(P),e=>w(P,e)),l(`click`,h,W),E(e,n)};D(Be,e=>{U(x)&&e(Ve)}),_(()=>ee(J,o.search)),l(`input`,J,e=>o.onSearch(e.target.value)),A(Q,()=>U(M),e=>w(M,e)),l(`click`,Ie,()=>H()),E(n,me),C()}s([`input`,`click`]);var Me=e=>`${e.kind}|${e.provider}|${e.name}`.toLowerCase(),Z=e=>{let t=new Map;for(let n of e)for(let e of n.resources){let r=Me(e),i={featureId:String(n.id),featureName:n.name},a=t.get(r);if(a){a.sources.some(e=>e.featureId===i.featureId)||a.sources.push(i);continue}t.set(r,{key:r,name:e.name,kind:e.kind,provider:e.provider,scope:e.scope,sensitivity:e.sensitivity,containsPii:e.containsPii,description:e.description,sources:[i]})}return Array.from(t.values())},Q=e=>{let t=new Map;for(let n of e)for(let e of J(n)){let r=e.namespace.toLowerCase(),i={featureId:String(n.id),featureName:n.name},a=t.get(r);if(a){a.sources.some(e=>e.featureId===i.featureId)||a.sources.push(i),e.fields.length>a.fieldCount&&(a.fieldCount=e.fields.length),!a.description&&e.description&&(a.description=e.description);continue}t.set(r,{key:r,namespace:e.namespace,description:e.description,fieldCount:e.fields.length,sources:[i]})}return Array.from(t.values())},Ne=e=>{let t=new Map;for(let n of e){let e=new Map((n.events??[]).map(e=>[String(e.name),e]));for(let r of Se(n)){let i=String(r.name),a=i.toLowerCase(),o=e.get(i),s={featureId:String(n.id),featureName:n.name},c=t.get(a);if(c){if(c.sources.some(e=>e.featureId===s.featureId)||c.sources.push(s),c.emissions+=r.emissions.length,o){!c.description&&o.description&&(c.description=o.description);let e=o.payloadSchema?.length??0;e>c.payloadFieldCount&&(c.payloadFieldCount=e)}continue}t.set(a,{key:a,name:i,description:o?.description,payloadFieldCount:o?.payloadSchema?.length??0,emissions:r.emissions.length,sources:[s]})}}return Array.from(t.values())},Pe=e=>{let t=new Map;for(let n of e)for(let e of Ce(n)){let r=e.sources[0]?.description,i=`${e.fromSurfaceName}|${e.toSurfaceName}|${r??``}`.toLowerCase(),a={featureId:String(n.id),featureName:n.name},o=t.get(i);if(o){o.sources.some(e=>e.featureId===a.featureId)||o.sources.push(a),o.sourcesCount+=e.sources.length;continue}t.set(i,{key:i,sourceName:e.fromSurfaceName,targetName:e.toSurfaceName,label:r,sourcesCount:e.sources.length,sources:[a]})}return Array.from(t.values())},Fe=d(`<p class="rounded-lg border border-dashed border-hairline bg-white p-6 text-center text-sm text-slate-500"> </p>`),Ie=d(`<div class="text-xs font-normal text-slate-500"> </div>`),Le=d(`<a class="rounded-full border border-cyan-100 bg-cyan-50/60 px-2 py-0.5 text-brand-700 hover:bg-cyan-50 hover:underline"> </a>`),Re=d(`<tr class="border-t border-slate-100"><td class="px-3 py-2 font-medium text-slate-950"> <!></td><td class="px-3 py-2 text-slate-600"> </td><td class="px-3 py-2 text-slate-600"> </td><td class="px-3 py-2 text-slate-600"> </td><td class="px-3 py-2 text-slate-600"> </td><td class="px-3 py-2 text-slate-600"> </td><td class="px-3 py-2 text-xs"><div class="flex flex-wrap gap-1"></div></td></tr>`),ze=d(`<div class="overflow-x-auto rounded-lg border border-hairline bg-white"><table class="w-full text-sm"><thead class="bg-slate-50 text-left text-xs uppercase tracking-wide text-slate-500"><tr><th class="px-3 py-2">Name</th><th class="px-3 py-2">Kind</th><th class="px-3 py-2">Provider</th><th class="px-3 py-2">Scope</th><th class="px-3 py-2">Sensitivity</th><th class="px-3 py-2">PII</th><th class="px-3 py-2">From features</th></tr></thead><tbody></tbody></table></div>`);function Be(e,n){k(n,!0);let i=L(()=>Z(n.features)),a=L(()=>n.search.trim().length===0?U(i):U(i).filter(e=>{let t=n.search.toLowerCase();return e.name.toLowerCase().includes(t)||e.provider.toLowerCase().includes(t)||e.kind.toLowerCase().includes(t)||e.sources.some(e=>e.featureName.toLowerCase().includes(t))}));var o=u(),s=b(o),c=e=>{var n=Fe(),r=v(n,!0);j(n),_(()=>t(r,U(i).length===0?`No resources declared across the project features.`:`No resources match your search.`)),E(e,n)},l=e=>{var n=ze(),i=v(n),o=p(v(i));r(o,21,()=>U(a),e=>e.key,(e,n)=>{var i=Re(),a=v(i),o=v(a),s=p(o),c=e=>{var r=Ie(),i=v(r,!0);j(r),_(()=>t(i,U(n).description)),E(e,r)};D(s,e=>{U(n).description&&e(c)}),j(a);var l=p(a),u=v(l,!0);j(l);var d=p(l),f=v(d,!0);j(d);var m=p(d),h=v(m,!0);j(m);var g=p(m),y=v(g,!0);j(g);var b=p(g),x=v(b,!0);j(b);var S=p(b),C=v(S);r(C,21,()=>U(n).sources,e=>e.featureId,(e,n)=>{var r=Le(),i=v(r,!0);j(r),_(()=>{B(r,`href`,`/features/${U(n).featureId}`),t(i,U(n).featureName)}),E(e,r)}),j(C),j(S),j(i),_(()=>{t(o,`${U(n).name??``} `),t(u,U(n).kind),t(f,U(n).provider),t(h,U(n).scope),t(y,U(n).sensitivity),t(x,U(n).containsPii?`Yes`:`No`)}),E(e,i)}),j(o),j(i),j(n),E(e,n)};D(s,e=>{U(a).length===0?e(c):e(l,-1)}),E(e,o),C()}var Ve=d(`<p class="rounded-lg border border-dashed border-hairline bg-white p-6 text-center text-sm text-slate-500"> </p>`),He=d(`<div class="text-xs font-normal text-slate-500"> </div>`),Ue=d(`<a class="rounded-full border border-cyan-100 bg-cyan-50/60 px-2 py-0.5 text-brand-700 hover:bg-cyan-50 hover:underline"> </a>`),We=d(`<tr class="border-t border-slate-100"><td class="px-3 py-2 font-medium text-slate-950"> <!></td><td class="px-3 py-2 text-slate-600"> </td><td class="px-3 py-2 text-xs"><div class="flex flex-wrap gap-1"></div></td></tr>`),Ge=d(`<div class="overflow-x-auto rounded-lg border border-hairline bg-white"><table class="w-full text-sm"><thead class="bg-slate-50 text-left text-xs uppercase tracking-wide text-slate-500"><tr><th class="px-3 py-2">Namespace</th><th class="px-3 py-2">Fields</th><th class="px-3 py-2">From features</th></tr></thead><tbody></tbody></table></div>`);function Ke(e,n){k(n,!0);let i=L(()=>Q(n.features)),a=L(()=>n.search.trim().length===0?U(i):U(i).filter(e=>{let t=n.search.toLowerCase();return e.namespace.toLowerCase().includes(t)||(e.description??``).toLowerCase().includes(t)||e.sources.some(e=>e.featureName.toLowerCase().includes(t))}));var o=u(),s=b(o),c=e=>{var n=Ve(),r=v(n,!0);j(n),_(()=>t(r,U(i).length===0?`No data entities declared across the project features.`:`No data entities match your search.`)),E(e,n)},l=e=>{var n=Ge(),i=v(n),o=p(v(i));r(o,21,()=>U(a),e=>e.key,(e,n)=>{var i=We(),a=v(i),o=v(a),s=p(o),c=e=>{var r=He(),i=v(r,!0);j(r),_(()=>t(i,U(n).description)),E(e,r)};D(s,e=>{U(n).description&&e(c)}),j(a);var l=p(a),u=v(l,!0);j(l);var d=p(l),f=v(d);r(f,21,()=>U(n).sources,e=>e.featureId,(e,n)=>{var r=Ue(),i=v(r,!0);j(r),_(()=>{B(r,`href`,`/features/${U(n).featureId}`),t(i,U(n).featureName)}),E(e,r)}),j(f),j(d),j(i),_(()=>{t(o,`${U(n).namespace??``} `),t(u,U(n).fieldCount)}),E(e,i)}),j(o),j(i),j(n),E(e,n)};D(s,e=>{U(a).length===0?e(c):e(l,-1)}),E(e,o),C()}var qe=d(`<p class="rounded-lg border border-dashed border-hairline bg-white p-6 text-center text-sm text-slate-500"> </p>`),Je=d(`<div class="font-sans text-xs text-slate-500"> </div>`),Ye=d(`<a class="rounded-full border border-cyan-100 bg-cyan-50/60 px-2 py-0.5 text-brand-700 hover:bg-cyan-50 hover:underline"> </a>`),Xe=d(`<tr class="border-t border-slate-100"><td class="px-3 py-2 font-mono text-slate-950"> <!></td><td class="px-3 py-2 text-slate-600"> </td><td class="px-3 py-2 text-slate-600"> </td><td class="px-3 py-2 text-xs"><div class="flex flex-wrap gap-1"></div></td></tr>`),Ze=d(`<div class="overflow-x-auto rounded-lg border border-hairline bg-white"><table class="w-full text-sm"><thead class="bg-slate-50 text-left text-xs uppercase tracking-wide text-slate-500"><tr><th class="px-3 py-2">Event name</th><th class="px-3 py-2">Emissions</th><th class="px-3 py-2">Payload fields</th><th class="px-3 py-2">From features</th></tr></thead><tbody></tbody></table></div>`);function Qe(e,n){k(n,!0);let i=L(()=>Ne(n.features)),a=L(()=>n.search.trim().length===0?U(i):U(i).filter(e=>{let t=n.search.toLowerCase();return e.name.toLowerCase().includes(t)||(e.description??``).toLowerCase().includes(t)||e.sources.some(e=>e.featureName.toLowerCase().includes(t))}));var o=u(),s=b(o),c=e=>{var n=qe(),r=v(n,!0);j(n),_(()=>t(r,U(i).length===0?`No events registered across the project features.`:`No events match your search.`)),E(e,n)},l=e=>{var n=Ze(),i=v(n),o=p(v(i));r(o,21,()=>U(a),e=>e.key,(e,n)=>{var i=Xe(),a=v(i),o=v(a),s=p(o),c=e=>{var r=Je(),i=v(r,!0);j(r),_(()=>t(i,U(n).description)),E(e,r)};D(s,e=>{U(n).description&&e(c)}),j(a);var l=p(a),u=v(l,!0);j(l);var d=p(l),f=v(d,!0);j(d);var m=p(d),h=v(m);r(h,21,()=>U(n).sources,e=>e.featureId,(e,n)=>{var r=Ye(),i=v(r,!0);j(r),_(()=>{B(r,`href`,`/features/${U(n).featureId}`),t(i,U(n).featureName)}),E(e,r)}),j(h),j(m),j(i),_(()=>{t(o,`${U(n).name??``} `),t(u,U(n).emissions),t(f,U(n).payloadFieldCount)}),E(e,i)}),j(o),j(i),j(n),E(e,n)};D(s,e=>{U(a).length===0?e(c):e(l,-1)}),E(e,o),C()}var $e=d(`<p class="rounded-lg border border-dashed border-hairline bg-white p-6 text-center text-sm text-slate-500"> </p>`),et=d(`<a class="rounded-full border border-cyan-100 bg-cyan-50/60 px-2 py-0.5 text-brand-700 hover:bg-cyan-50 hover:underline"> </a>`),tt=d(`<tr class="border-t border-slate-100"><td class="px-3 py-2 font-medium text-slate-950"> </td><td class="px-3 py-2 text-slate-700"> </td><td class="px-3 py-2 text-slate-600"> </td><td class="px-3 py-2 text-xs"><div class="flex flex-wrap gap-1"></div></td></tr>`),nt=d(`<div class="overflow-x-auto rounded-lg border border-hairline bg-white"><table class="w-full text-sm"><thead class="bg-slate-50 text-left text-xs uppercase tracking-wide text-slate-500"><tr><th class="px-3 py-2">From</th><th class="px-3 py-2">To</th><th class="px-3 py-2">Label</th><th class="px-3 py-2">From features</th></tr></thead><tbody></tbody></table></div>`);function rt(e,n){k(n,!0);let i=L(()=>Pe(n.features)),a=L(()=>n.search.trim().length===0?U(i):U(i).filter(e=>{let t=n.search.toLowerCase();return e.sourceName.toLowerCase().includes(t)||e.targetName.toLowerCase().includes(t)||(e.label??``).toLowerCase().includes(t)||e.sources.some(e=>e.featureName.toLowerCase().includes(t))}));var o=u(),s=b(o),c=e=>{var n=$e(),r=v(n,!0);j(n),_(()=>t(r,U(i).length===0?`No transitions declared across the project features.`:`No transitions match your search.`)),E(e,n)},l=e=>{var n=nt(),i=v(n),o=p(v(i));r(o,21,()=>U(a),e=>e.key,(e,n)=>{var i=tt(),a=v(i),o=v(a,!0);j(a);var s=p(a),c=v(s,!0);j(s);var l=p(s),u=v(l,!0);j(l);var d=p(l),f=v(d);r(f,21,()=>U(n).sources,e=>e.featureId,(e,n)=>{var r=et(),i=v(r,!0);j(r),_(()=>{B(r,`href`,`/features/${U(n).featureId}`),t(i,U(n).featureName)}),E(e,r)}),j(f),j(d),j(i),_(()=>{t(o,U(n).sourceName),t(c,U(n).targetName),t(u,U(n).label??`-`)}),E(e,i)}),j(o),j(i),j(n),E(e,n)};D(s,e=>{U(a).length===0?e(c):e(l,-1)}),E(e,o),C()}var it=d(`<div class="px-6 py-10 text-center text-xs text-slate-500">No edits yet. Project metadata changes, feature add/remove, queue mutations - they all land here.</div>`),at=d(`<span class="ml-1 text-purple-700"> </span>`),ot=d(`<li class="flex items-start gap-3 px-4 py-2.5 text-xs"><span> </span> <div class="min-w-0 flex-1"><p class="truncate font-medium text-slate-800"> </p> <p class="mt-0.5 text-[11px] text-slate-500"> <!></p></div></li>`),st=d(`<ol class="divide-y divide-slate-100"></ol>`),ct=d(`<section class="rounded-lg border border-hairline bg-white"><header class="flex items-center justify-between border-b border-hairline px-4 py-3"><div><h2 class="text-sm font-semibold text-slate-950">Project history</h2> <p class="mt-0.5 text-xs text-slate-500"> </p></div> <span class="rounded-md bg-slate-100 px-2 py-0.5 text-[10px] font-medium uppercase tracking-wide text-slate-600">Audit</span></header> <!></section>`);function lt(e,n){k(n,!0);let i=L(()=>[...Y.historyEntries].reverse()),a=e=>{let t=new Date(e),n=new Date,r=t.getFullYear()===n.getFullYear()&&t.getMonth()===n.getMonth()&&t.getDate()===n.getDate(),i=t.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`});return r?i:`${t.toLocaleDateString([],{month:`short`,day:`numeric`})} ${i}`},o=e=>e===`mcp`?`bg-purple-100 text-purple-700`:e===`system`?`bg-neutral-100 text-neutral-600`:`bg-sky-100 text-sky-700`,s=e=>e===`mcp`?`AI`:e===`system`?`sys`:e.replace(/^user-/,``).replace(/^Anon-/,``);var c=ct(),l=v(c),u=v(l),d=p(v(u),2),f=v(d);j(d),j(u),P(2),j(l);var m=p(l,2),h=e=>{E(e,it())},g=e=>{var n=st();r(n,21,()=>U(i),e=>e.id,(e,n)=>{var r=ot(),i=v(r),c=v(i,!0);j(i);var l=p(i,2),u=v(l),d=v(u,!0);j(u);var f=p(u,2),m=v(f),h=p(m),g=e=>{var r=at(),i=v(r);j(r),_(()=>t(i,`· for ${U(n).actingFor??``}`)),E(e,r)};D(h,e=>{U(n).actingFor&&e(g)}),j(f),j(l),j(r),_((e,r,a)=>{V(i,1,`mt-0.5 inline-flex shrink-0 items-center rounded px-1.5 py-0.5 text-[10px] font-semibold ${e??``}`),B(i,`title`,`Author: ${U(n).author}`),t(c,r),t(d,U(n).label??`Edit`),t(m,`${a??``} `)},[()=>o(U(n).author),()=>s(U(n).author),()=>a(U(n).ts)]),E(e,r)}),j(n),E(e,n)};D(m,e=>{U(i).length===0?e(h):e(g,-1)}),j(c),_(()=>t(f,`${Y.historyEntries.length??``} edit${Y.historyEntries.length===1?``:`s`} · read-only`)),E(e,c),C()}var $=new class{#e=z(e([]));get views(){return U(this.#e)}set views(e){w(this.#e,e,!0)}#t=z(!1);get loading(){return U(this.#t)}set loading(e){w(this.#t,e,!0)}#n=z(null);get error(){return U(this.#n)}set error(e){w(this.#n,e,!0)}async refresh(){let e=Y.project?.id;if(!e){this.views=[];return}this.loading=!0,this.error=null;try{let t=await q();this.views=await t.useCases.listQueue(e)}catch(e){this.error=e.message}finally{this.loading=!1}}isQueued(e){let t=e.kind===`feature`?`feature:${String(e.featureId)}`:e.kind===`surface`?`surface:${String(e.featureId)}:${String(e.surfaceId)}`:`action:${String(e.featureId)}:${String(e.actionId)}`;return this.views.some(e=>K(e.item)===t)}async enqueueFeature(e,t){await this.mutate(async n=>{await n.useCases.enqueueQueueItem(e,{kind:`feature`,featureId:t})})}async enqueueSurface(e,t,n){await this.mutate(async r=>{await r.useCases.enqueueQueueItem(e,{kind:`surface`,featureId:t,surfaceId:n})})}async enqueueAction(e,t,n){await this.mutate(async r=>{await r.useCases.enqueueQueueItem(e,{kind:`action`,featureId:t,actionId:n})})}async dequeue(e,t){await this.mutate(async n=>{await n.useCases.dequeueQueueItem(e,t)})}async moveTo(e,t,n){await this.mutate(async r=>{await r.useCases.moveQueueItem(e,t,{kind:`to`,targetIndex:n})})}reset(){this.views=[],this.loading=!1,this.error=null}async mutate(e){this.error=null;try{await e(await q()),await this.refresh()}catch(e){this.error=e.message}}},ut=d(`<p class="rounded-md border border-red-200 bg-red-50 px-3 py-2 text-xs text-red-700"> </p>`),dt=d(`<div class="rounded-lg border border-dashed border-slate-300 bg-white p-6 text-center text-xs text-slate-500"><p class="font-medium text-slate-700">No items queued yet.</p> <p class="mt-1 mx-auto max-w-md">Hover any Feature card or any Action row and click <strong>+ queue</strong> to add it here. Then ask your LLM &quot;implement the next thing in the queue&quot;.</p></div>`),ft=d(`<a class="font-medium text-slate-900 hover:text-brand-800 hover:underline"> </a> <span class="text-xs text-slate-500"> </span>`,1),pt=d(`<a class="font-medium text-slate-900 hover:text-brand-800 hover:underline"> </a> <span class="text-xs text-slate-500"> </span>`,1),mt=d(`<a class="font-medium text-slate-900 hover:text-brand-800 hover:underline"> </a>`),ht=d(`<span class="block truncate text-xs text-slate-500"> </span>`),gt=d(`<span class="shrink-0 rounded bg-amber-100 px-1.5 py-0.5 text-[10px] font-semibold text-amber-800" title="Target was deleted from the spec">orphan</span>`),_t=d(`<li draggable="true"><span class="cursor-grab select-none text-slate-300 transition-colors group-hover:text-slate-500 active:cursor-grabbing" aria-hidden="true" title="Drag to reorder">⋮⋮</span> <span class="w-5 shrink-0 text-right text-[11px] tabular-nums text-slate-400"> </span> <span> </span> <div class="min-w-0 flex-1 truncate"><!> <!></div> <!> <div class="flex shrink-0 items-center gap-0.5 opacity-0 transition group-hover:opacity-100 group-focus-within:opacity-100"><button type="button" class="rounded px-1 text-xs text-slate-400 hover:bg-slate-100 hover:text-slate-700 disabled:cursor-not-allowed disabled:opacity-30" aria-label="Move up" title="Move up">↑</button> <button type="button" class="rounded px-1 text-xs text-slate-400 hover:bg-slate-100 hover:text-slate-700 disabled:cursor-not-allowed disabled:opacity-30" aria-label="Move down" title="Move down">↓</button> <button type="button" class="rounded px-1 text-xs text-slate-400 hover:bg-red-50 hover:text-red-600" aria-label="Remove from queue" title="Remove from queue">x</button></div></li>`),vt=d(`<ul class="space-y-1.5"></ul>`),yt=d(`<div class="space-y-3"><header class="flex items-start justify-between gap-3"><div><h2 class="text-sm font-semibold text-slate-800">Implementation queue</h2> <p class="mt-1 text-xs text-slate-500">What to implement next. Drag to reorder. The MCP <code class="mono text-[11px]">get_next_queued</code> tool reads the top live entry so an LLM can pick up where you left off without you naming the feature.</p></div> <span class="shrink-0 rounded-md bg-slate-100 px-2 py-0.5 text-xs font-medium text-slate-700"> </span></header> <!> <!></div>`);function bt(e,n){k(n,!0),a(()=>{Y.project?.implementationQueue,o(()=>{$.refresh()})}),I(()=>{$.refresh()});let i=z(null),s=z(null);function c(e,t){w(i,t,!0),e.dataTransfer&&(e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(`text/plain`,String(t)))}function u(e,t){U(i)!==null&&(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`move`),w(s,t,!0))}async function d(e,t){e.preventDefault();let n=U(i);w(i,null),w(s,null),!(!n||!Y.project)&&await $.moveTo(Y.project.id,n,t)}function f(){w(i,null),w(s,null)}async function h(e,t){if(!Y.project)return;let n=$.views.findIndex(t=>t.item.id===e);n<0||await $.moveTo(Y.project.id,e,n+t)}async function g(e){Y.project&&await $.dequeue(Y.project.id,e)}var y=yt(),x=v(y),S=p(v(x),2),T=v(S,!0);j(S),j(x);var O=p(x,2),A=e=>{var n=ut(),r=v(n,!0);j(n),_(()=>t(r,$.error)),E(e,n)};D(O,e=>{$.error&&e(A)});var M=p(O,2),N=e=>{E(e,dt())},ee=e=>{var n=vt();r(n,23,()=>$.views,e=>e.item.id,(e,n,r)=>{let a=L(()=>U(n).item.id),o=L(()=>U(i)===U(a)),y=L(()=>U(s)===U(r)&&U(i)!==null&&U(i)!==U(a));var x=_t(),S=p(v(x),2),C=v(S);j(S);var w=p(S,2),T=v(w,!0);j(w);var O=p(w,2),k=v(O),A=e=>{var r=ft(),i=b(r),a=v(i,!0);j(i);var o=p(i,2),s=v(o);j(o),_(()=>{B(i,`href`,`/features/${U(n).item.featureId}`),t(a,U(n).actionName??`(unnamed action)`),t(s,`· ${U(n).featureName??``}`)}),E(e,r)},M=e=>{var r=pt(),i=b(r),a=v(i,!0);j(i);var o=p(i,2),s=v(o);j(o),_(()=>{B(i,`href`,`/features/${U(n).item.featureId}`),t(a,U(n).surfaceName??`(unnamed surface)`),t(s,`· ${U(n).featureName??``}`)}),E(e,r)},N=e=>{var r=mt(),i=v(r,!0);j(r),_(()=>{B(r,`href`,`/features/${U(n).item.featureId}`),t(i,U(n).featureName)}),E(e,r)};D(k,e=>{U(n).item.kind===`action`?e(A):U(n).item.kind===`surface`?e(M,1):e(N,-1)});var ee=p(k,2),P=e=>{var r=ht(),i=v(r,!0);j(r),_(()=>t(i,U(n).item.note)),E(e,r)};D(ee,e=>{U(n).item.note&&e(P)}),j(O);var F=p(O,2),I=e=>{E(e,gt())};D(F,e=>{U(n).orphaned&&e(I)});var R=p(F,2),z=v(R),H=p(z,2),W=p(H,2);j(R),j(x),_(()=>{V(x,1,`group flex items-center gap-2 rounded-md border bg-white px-2 py-1.5 text-sm transition
2
+ ${U(n).orphaned?`border-amber-200 bg-amber-50/40`:`border-slate-200`}
3
+ ${U(o)?`opacity-40`:``}
4
+ ${U(y)?`border-brand-400 ring-1 ring-brand-200`:``}`),t(C,`${U(r)+1}.`),V(w,1,`shrink-0 rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide
5
+ ${U(n).item.kind===`feature`?`bg-violet-100 text-violet-800`:U(n).item.kind===`surface`?`bg-emerald-100 text-emerald-800`:`bg-cyan-100 text-cyan-800`}`),t(T,U(n).item.kind),z.disabled=U(r)===0,H.disabled=U(r)===$.views.length-1}),m(`dragstart`,x,e=>c(e,U(a))),m(`dragover`,x,e=>u(e,U(r))),m(`drop`,x,e=>d(e,U(r))),m(`dragend`,x,f),l(`click`,z,()=>h(U(a),-1)),l(`click`,H,()=>h(U(a),1)),l(`click`,W,()=>g(U(a))),E(e,x)}),j(n),E(e,n)};D(M,e=>{$.views.length===0?e(N):e(ee,-1)}),j(y),_(()=>t(T,$.views.length)),E(e,y),C()}s([`click`]);var xt=d(`<div class="space-y-3"><label class="block"><span class="sr-only">Project name</span> <input type="text" class="w-full rounded-lg border border-slate-300 bg-white px-3 py-2 text-3xl font-semibold tracking-tight text-slate-950 outline-none focus:border-brand-700 focus:ring-2 focus:ring-brand-100 sm:text-4xl"/></label> <label class="block"><span class="sr-only">Project description</span> <textarea rows="3" placeholder="Describe what belongs in this project..." class="w-full resize-none rounded-lg border border-slate-300 bg-white px-3 py-2 text-sm leading-6 text-slate-700 outline-none focus:border-brand-700 focus:ring-2 focus:ring-brand-100"></textarea></label> <div class="flex flex-wrap gap-2"><button type="button" class="rounded-md bg-slate-900 px-3 py-1.5 text-xs font-medium text-white disabled:opacity-50"> </button> <button type="button" class="rounded-md border border-slate-300 bg-white px-3 py-1.5 text-xs font-medium text-slate-700 hover:bg-slate-50">Cancel</button></div></div>`),St=d(`<p class="mt-2 max-w-3xl text-sm leading-6 text-slate-600"> </p>`),Ct=d(`<p class="mt-2 max-w-3xl text-sm leading-6 text-slate-500">A project that groups related behavior models and their implementation signals.</p>`),wt=d(`<div class="mt-3"><!></div>`),Tt=d(`<h1 class="truncate text-4xl font-semibold tracking-tight text-slate-950"> </h1> <!> <!> <div class="mt-3 flex flex-wrap items-center gap-3 text-xs text-slate-500"><button class="font-medium text-brand-700 hover:underline">Edit project</button> <span> </span> <span> </span></div>`,1),Et=d(`<p class="mt-4 rounded-md border border-red-200 bg-red-50 px-3 py-2 text-sm text-red-700"> <button type="button" class="ml-2 underline">dismiss</button></p>`),Dt=d(`<button type="button"> <span> </span></button>`),Ot=d(`<div class="mb-5 flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between"><input type="search" class="h-10 w-full max-w-sm rounded-lg border border-slate-300 bg-white px-3 text-sm outline-none focus:border-brand-700 focus:ring-2 focus:ring-brand-100"/> <p class="text-xs text-slate-500"> </p></div>`),kt=d(`<p class="text-sm text-slate-500">Loading features...</p>`),At=d(`<div class="motion-reduce:animate-none! motion-reduce:opacity-100!"><!></div>`),jt=d(`<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="flex items-center justify-between gap-3"><a href="/projects" class="inline-flex items-center gap-1 text-xs font-semibold uppercase tracking-wide text-brand-700 hover:underline"><span aria-hidden="true">←</span> Back to projects</a> <a class="inline-flex items-center gap-1.5 rounded-md border border-slate-300 bg-white px-3 py-1.5 text-xs font-medium text-slate-700 transition hover:border-brand-300 hover:bg-cyan-50 hover:text-brand-800" title="Open the whole project behavior graph">Graph</a> <button type="button" class="inline-flex items-center gap-1.5 rounded-md border border-slate-300 bg-white px-3 py-1.5 text-xs font-medium text-slate-700 transition hover:border-brand-300 hover:bg-cyan-50 hover:text-brand-800 disabled:opacity-50" title="Encrypt the project (and all its features + status) into a .unspa file you can share or back up"><span aria-hidden="true">⬇</span> </button></div> <div class="mt-3"><div class="min-w-0"><!></div></div> <!></header> <div class="mb-4 rounded-xl border border-slate-200 bg-white p-1 shadow-sm shadow-slate-950/5"><nav class="flex flex-wrap gap-1"></nav></div> <!> <!></div>`);function Mt(e,i){k(i,!0);let o=[{id:`features`,label:`Features`},{id:`queue`,label:`Queue`},{id:`resources`,label:`Resources`},{id:`data`,label:`Entity`},{id:`events`,label:`Events`},{id:`transitions`,label:`Transitions`},{id:`history`,label:`History`}],s=z(!1),c=z(``),d=z(``);a(()=>{let e=Y.project;!e||U(s)||(w(c,e.name,!0),w(d,e.description??``,!0))}),a(()=>{let e=Y.project?.tags??[];e.length>0&&fe.registerTypes(e.map(e=>e.type))});function m(e){let t=X.features;switch(e){case`features`:return t.length;case`queue`:return Y.project?.implementationQueue?.length??0;case`resources`:return Z(t).length;case`data`:return Q(t).length;case`events`:return Ne(t).length;case`transitions`:return Pe(t).length;case`history`:return Y.historyEntries.length}}async function h(){Y.project&&(await Y.updateMetadata(U(c),U(d)),Y.saveError||w(s,!1))}async function g(e,t){X.features.find(t=>t.id===e)&&(await pe.addTag(String(e),t),Y.project&&await X.load(Y.project.featureIds))}async function y(e,t){X.features.find(t=>t.id===e)&&(await pe.removeTag(String(e),t),Y.project&&await X.load(Y.project.featureIds))}async function x(e,t){let n=await pe.create(e,t);await Y.addFeature(n),await W(`/features/${n}`)}async function T(e){await Y.removeFeature(e),Y.project&&await X.load(Y.project.featureIds)}let A=z(!1);async function M(){let e=Y.project;if(!e||U(A))return;let t=await le({title:`Export project`,message:`Encrypt "${e.name}" with a passphrase and download as a .unspa file. You'll need the same passphrase to import it back. Minimum 8 characters.`,inputLabel:`Passphrase`,placeholder:`At least 8 characters`,password:!0,confirmLabel:`Export`,tone:`info`,validate:e=>e.length<8?`Passphrase must be at least 8 characters.`:null});if(t!==null){w(A,!0);try{let{envelope:n,projectName:r}=await ge(e.id,t);ve(n,r)}catch(e){await ce({title:`Export failed`,message:e instanceof _e?e.message:`Export failed: ${e.message}`,tone:`danger`})}finally{w(A,!1)}}}var N=u(),P=b(N),I=e=>{let i=L(()=>Y.project);var a=jt(),C=v(a),k=v(C),N=p(v(k),2),P=p(N,2),I=p(v(P));j(P),j(k);var R=p(k,2),z=v(R),H=v(z),W=e=>{var n=xt(),r=v(n),i=p(v(r),2);O(i),j(r);var a=p(r,2),o=p(v(a),2);F(o),j(a);var u=p(a,2),f=v(u),m=v(f,!0);j(f);var g=p(f,2);j(u),j(n),_(e=>{f.disabled=e,t(m,Y.saving?`Saving...`:`Save project`)},[()=>Y.saving||U(c).trim().length===0||U(d).trim().length===0]),S(i,()=>U(c),e=>w(c,e)),S(o,()=>U(d),e=>w(d,e)),l(`click`,f,h),l(`click`,g,()=>w(s,!1)),E(e,n)},re=e=>{var n=Tt(),r=b(n),a=v(r,!0);j(r);var o=p(r,2),c=e=>{var n=St(),r=v(n,!0);j(n),_(()=>t(r,U(i).description)),E(e,n)},u=e=>{E(e,Ct())};D(o,e=>{U(i).description?e(c):e(u,-1)});var d=p(o,2),f=e=>{var t=wt();me(v(t),{get tags(){return U(i).tags}}),j(t),E(e,t)};D(d,e=>{U(i).tags&&U(i).tags.length>0&&e(f)});var m=p(d,2),h=v(m),g=p(h,2),y=v(g);j(g);var x=p(g,2),S=v(x,!0);j(x),j(m),_(e=>{t(a,U(i).name),t(y,`Updated ${e??``}`),t(S,Y.saving?`Saving...`:`Saved`)},[()=>new Date(U(i).updatedAt).toLocaleString()]),l(`click`,h,()=>w(s,!0)),E(e,n)};D(H,e=>{U(s)?e(W):e(re,-1)}),j(z),j(R);var ie=p(R,2),ae=e=>{var n=Et(),r=v(n),i=p(r);j(n),_(()=>t(r,`${Y.saveError??``} `)),l(`click`,i,()=>Y.dismissSaveError()),E(e,n)};D(ie,e=>{Y.saveError&&e(ae)}),j(C);var G=p(C,2),oe=v(G);r(oe,21,()=>o,e=>e.id,(e,n)=>{var r=Dt(),i=v(r),a=p(i),o=v(a,!0);j(a),j(r),_(e=>{V(r,1,`rounded-md px-3 py-1.5 text-sm font-medium transition ${Y.activePanel===U(n).id?`bg-slate-900 text-white shadow-sm`:`text-slate-600 hover:bg-slate-100 hover:text-slate-950`}`),t(i,`${U(n).label??``} `),V(a,1,`ml-1 rounded bg-white/80 px-1.5 py-0.5 text-xs ${Y.activePanel===U(n).id?`text-brand-900`:`text-slate-600`}`),t(o,e)},[()=>m(U(n).id)]),l(`click`,r,()=>Y.setActivePanel(U(n).id)),E(e,r)}),j(oe),j(G);var K=p(G,2),se=e=>{var n=Ot(),r=v(n);O(r);var i=p(r,2),a=v(i);j(i),j(n),_(e=>{B(r,`placeholder`,`Search ${Y.activePanel}...`),ee(r,Y.search),t(a,`${e??``} ${Y.activePanel??``} in this project`)},[()=>m(Y.activePanel)]),l(`input`,r,e=>Y.setSearch(e.target.value)),E(e,n)};D(K,e=>{Y.activePanel!==`features`&&Y.activePanel!==`queue`&&Y.activePanel!==`history`&&e(se)});var ce=p(K,2),q=e=>{E(e,kt())},le=e=>{var t=u();f(b(t),()=>Y.activePanel,e=>{var t=At(),r=v(t),i=e=>{je(e,{get features(){return X.features},get search(){return Y.search},onSearch:e=>Y.setSearch(e),onCreate:x,onAddTag:g,onRemoveTag:y,onRemove:T})},a=e=>{bt(e,{})},o=e=>{Be(e,{get features(){return X.features},get search(){return Y.search}})},s=e=>{Ke(e,{get features(){return X.features},get search(){return Y.search}})},c=e=>{Qe(e,{get features(){return X.features},get search(){return Y.search}})},l=e=>{rt(e,{get features(){return X.features},get search(){return Y.search}})},u=e=>{lt(e,{})};D(r,e=>{Y.activePanel===`features`?e(i):Y.activePanel===`queue`?e(a,1):Y.activePanel===`resources`?e(o,2):Y.activePanel===`data`?e(s,3):Y.activePanel===`events`?e(c,4):Y.activePanel===`transitions`?e(l,5):Y.activePanel===`history`&&e(u,6)}),j(t),n(1,t,()=>te,()=>({duration:140,easing:ne})),E(e,t)}),E(e,t)};D(ce,e=>{X.loading?e(q):e(le,-1)}),j(a),_(()=>{B(N,`href`,`/projects/${U(i).id}/graph`),P.disabled=U(A),t(I,` ${U(A)?`Exporting...`:`Export .unspa`}`)}),l(`click`,P,M),E(e,a)};D(P,e=>{Y.project&&e(I)}),E(e,N),C()}s([`click`,`input`]);var Nt=d(`<p class="mx-auto max-w-7xl px-4 py-10 text-sm text-neutral-500">Loading project…</p>`),Pt=d(`<p class="mx-auto max-w-7xl px-4 py-10 text-sm text-red-600"> </p>`),Ft=d(`<p class="mx-auto max-w-7xl px-4 py-10 text-sm text-neutral-500">Project not found. <a href="/projects" class="text-brand-700 hover:underline">← Back to projects</a></p>`);function It(e,n){k(n,!1);let r=()=>x(xe,`$page`,i),[i,a]=T(),o=null;I(async()=>{let e=r().params.id;if(!e)return;let t=G(e);await Y.load(t),await X.loadAllSummaries(),Y.project&&await X.load(Y.project.featureIds),o=ue(async e=>{Y.project&&(e.kind===`project`&&e.id===String(t)?await X.syncWith(Y.project.featureIds):e.kind===`feature`&&(Y.project.featureIds.some(t=>String(t)===e.id)?await X.refetchOne(ie(e.id)):await X.loadAllSummaries()))})}),M(()=>{o?.(),o=null,Y.reset(),X.reset()}),N();var s=u();H(`ffmenf`,e=>{h(()=>{c.title=`Project / Unspaghettit`})});var l=b(s),d=e=>{E(e,Nt())},f=e=>{var n=Pt(),r=v(n,!0);j(n),_(()=>t(r,Y.error)),E(e,n)},p=e=>{E(e,Ft())},m=e=>{Mt(e,{})};D(l,e=>{Y.loading?e(d):Y.error?e(f,1):Y.project?e(m,-1):e(p,2)}),E(e,s),C(),a()}export{It as component};
@@ -1 +1 @@
1
- {"version":"1780274074793"}
1
+ {"version":"1781735206128"}
Binary file
Binary file
@@ -0,0 +1,148 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
6
+ xmlns:cc="http://creativecommons.org/ns#"
7
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8
+ xmlns:svg="http://www.w3.org/2000/svg"
9
+ xmlns="http://www.w3.org/2000/svg"
10
+ xmlns:xlink="http://www.w3.org/1999/xlink"
11
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13
+ width="48"
14
+ height="48"
15
+ viewBox="0 0 12.7 12.7"
16
+ version="1.1"
17
+ id="svg8"
18
+ inkscape:version="0.92.3 (2405546, 2018-03-11)"
19
+ sodipodi:docname="lyriks-1.svg">
20
+ <defs
21
+ id="defs2">
22
+ <linearGradient
23
+ inkscape:collect="always"
24
+ id="linearGradient4618">
25
+ <stop
26
+ style="stop-color:#ffa101;stop-opacity:1;"
27
+ offset="0"
28
+ id="stop4614" />
29
+ <stop
30
+ style="stop-color:#ffa101;stop-opacity:0;"
31
+ offset="1"
32
+ id="stop4616" />
33
+ </linearGradient>
34
+ <linearGradient
35
+ inkscape:collect="always"
36
+ id="linearGradient4610">
37
+ <stop
38
+ style="stop-color:#bb46f5;stop-opacity:1;"
39
+ offset="0"
40
+ id="stop4606" />
41
+ <stop
42
+ style="stop-color:#bb46f5;stop-opacity:0;"
43
+ offset="1"
44
+ id="stop4608" />
45
+ </linearGradient>
46
+ <linearGradient
47
+ inkscape:collect="always"
48
+ id="linearGradient4602">
49
+ <stop
50
+ style="stop-color:#0066ff;stop-opacity:1;"
51
+ offset="0"
52
+ id="stop4598" />
53
+ <stop
54
+ style="stop-color:#0066ff;stop-opacity:0;"
55
+ offset="1"
56
+ id="stop4600" />
57
+ </linearGradient>
58
+ <linearGradient
59
+ inkscape:collect="always"
60
+ xlink:href="#linearGradient4602"
61
+ id="linearGradient4604"
62
+ x1="433.33047"
63
+ y1="223.41049"
64
+ x2="432.65369"
65
+ y2="484.82812"
66
+ gradientUnits="userSpaceOnUse"
67
+ gradientTransform="matrix(0.26458333,0,0,0.26458333,-82.110177,-99.957753)" />
68
+ <linearGradient
69
+ inkscape:collect="always"
70
+ xlink:href="#linearGradient4610"
71
+ id="linearGradient4612"
72
+ x1="432.83047"
73
+ y1="323.48856"
74
+ x2="433.53754"
75
+ y2="146.35829"
76
+ gradientUnits="userSpaceOnUse"
77
+ gradientTransform="matrix(0.26458333,0,0,0.26458333,-82.110177,-99.957753)" />
78
+ <linearGradient
79
+ inkscape:collect="always"
80
+ xlink:href="#linearGradient4618"
81
+ id="linearGradient4620"
82
+ x1="22.477682"
83
+ y1="34.598564"
84
+ x2="21.553013"
85
+ y2="86.671013"
86
+ gradientUnits="userSpaceOnUse"
87
+ gradientTransform="translate(12.832291,-41.407291)" />
88
+ </defs>
89
+ <sodipodi:namedview
90
+ id="base"
91
+ pagecolor="#ffffff"
92
+ bordercolor="#666666"
93
+ borderopacity="1.0"
94
+ inkscape:pageopacity="0.0"
95
+ inkscape:pageshadow="2"
96
+ inkscape:zoom="11.313708"
97
+ inkscape:cx="31.592839"
98
+ inkscape:cy="4.7086138"
99
+ inkscape:document-units="mm"
100
+ inkscape:current-layer="layer1"
101
+ showgrid="false"
102
+ inkscape:window-width="2560"
103
+ inkscape:window-height="1369"
104
+ inkscape:window-x="-8"
105
+ inkscape:window-y="-8"
106
+ inkscape:window-maximized="1"
107
+ inkscape:pagecheckerboard="false"
108
+ units="px" />
109
+ <metadata
110
+ id="metadata5">
111
+ <rdf:RDF>
112
+ <cc:Work
113
+ rdf:about="">
114
+ <dc:format>image/svg+xml</dc:format>
115
+ <dc:type
116
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
117
+ <dc:title></dc:title>
118
+ </cc:Work>
119
+ </rdf:RDF>
120
+ </metadata>
121
+ <g
122
+ inkscape:label="Calque 1"
123
+ inkscape:groupmode="layer"
124
+ id="layer1"
125
+ transform="translate(0,-284.3)">
126
+ <g
127
+ transform="matrix(0.43489873,0,0,0.40888801,-9.9205419,298.38648)"
128
+ id="g3740">
129
+ <rect
130
+ id="rect3742-2-8"
131
+ width="29.185829"
132
+ height="7.0625973"
133
+ x="22.823183"
134
+ y="-10.439077"
135
+ style="fill:url(#linearGradient4620);fill-opacity:1;stroke-width:0.29681981" />
136
+ <path
137
+ style="fill:url(#linearGradient4604);fill-opacity:1;stroke-width:0.09354433"
138
+ d="m 22.821255,-30.364151 v -4.069178 h 9.494747 9.494751 v 4.069178 4.069178 h -9.494751 -9.494747 z"
139
+ id="path3785"
140
+ inkscape:connector-curvature="0" />
141
+ <path
142
+ style="fill:url(#linearGradient4612);fill-opacity:1;stroke-width:0.09354433"
143
+ d="m 22.821255,-18.343704 v -4.022408 h 9.494747 9.494751 v 4.022408 4.022404 h -9.494751 -9.494747 z"
144
+ id="path3787"
145
+ inkscape:connector-curvature="0" />
146
+ </g>
147
+ </g>
148
+ </svg>
Binary file
Binary file
@@ -1,15 +1,15 @@
1
1
  const index = 0;
2
2
  let component_cache;
3
- const component = async () => component_cache ??= (await import('./_layout.svelte-BREws55o.js')).default;
3
+ const component = async () => component_cache ??= (await import('./_layout.svelte-CLTmk0xU.js')).default;
4
4
  const universal = {
5
5
  "ssr": false,
6
6
  "prerender": false,
7
7
  "trailingSlash": "never"
8
8
  };
9
9
  const universal_id = "src/routes/+layout.ts";
10
- const imports = ["_app/immutable/nodes/0.BOoI-hsu.js","_app/immutable/chunks/BPl9BITm.js","_app/immutable/chunks/DatGSObE.js","_app/immutable/chunks/Dq0DUAz1.js","_app/immutable/chunks/Bp2_Vghh.js","_app/immutable/chunks/Dg0acPpT.js","_app/immutable/chunks/D8YEa1po.js","_app/immutable/chunks/BOrLmFwJ.js","_app/immutable/chunks/DHoA038D.js","_app/immutable/chunks/iQu0D9Ux.js","_app/immutable/chunks/ib21i2T_.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/suTxxv1t.js","_app/immutable/chunks/BfMYiIUi.js","_app/immutable/chunks/Cl7Z3e6-.js","_app/immutable/chunks/cMamJTsF.js","_app/immutable/chunks/C8rRKIXT.js"];
11
- const stylesheets = ["_app/immutable/assets/0.DFMDYAU9.css"];
10
+ const imports = ["_app/immutable/nodes/0.dIOlQ-0y.js","_app/immutable/chunks/BPl9BITm.js","_app/immutable/chunks/OJscNS3T.js","_app/immutable/chunks/CgdRZPgI.js","_app/immutable/chunks/Bp2_Vghh.js","_app/immutable/chunks/Dg0acPpT.js","_app/immutable/chunks/D8YEa1po.js","_app/immutable/chunks/BOrLmFwJ.js","_app/immutable/chunks/BCEY79Dw.js","_app/immutable/chunks/B439_FLv.js","_app/immutable/chunks/ib21i2T_.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/suTxxv1t.js","_app/immutable/chunks/BfMYiIUi.js","_app/immutable/chunks/Cl7Z3e6-.js","_app/immutable/chunks/cMamJTsF.js","_app/immutable/chunks/C8rRKIXT.js"];
11
+ const stylesheets = ["_app/immutable/assets/0.DSctqr5I.css"];
12
12
  const fonts = [];
13
13
 
14
14
  export { component, fonts, imports, index, stylesheets, universal, universal_id };
15
- //# sourceMappingURL=0-C_o0oz-N.js.map
15
+ //# sourceMappingURL=0-Co8kcANG.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"0-C_o0oz-N.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.BOoI-hsu.js\",\"_app/immutable/chunks/BPl9BITm.js\",\"_app/immutable/chunks/DatGSObE.js\",\"_app/immutable/chunks/Dq0DUAz1.js\",\"_app/immutable/chunks/Bp2_Vghh.js\",\"_app/immutable/chunks/Dg0acPpT.js\",\"_app/immutable/chunks/D8YEa1po.js\",\"_app/immutable/chunks/BOrLmFwJ.js\",\"_app/immutable/chunks/DHoA038D.js\",\"_app/immutable/chunks/iQu0D9Ux.js\",\"_app/immutable/chunks/ib21i2T_.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/suTxxv1t.js\",\"_app/immutable/chunks/BfMYiIUi.js\",\"_app/immutable/chunks/Cl7Z3e6-.js\",\"_app/immutable/chunks/cMamJTsF.js\",\"_app/immutable/chunks/C8rRKIXT.js\"];\nexport const stylesheets = [\"_app/immutable/assets/0.DFMDYAU9.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;AAChnB,MAAC,WAAW,GAAG,CAAC,sCAAsC;AACtD,MAAC,KAAK,GAAG;;;;"}
1
+ {"version":3,"file":"0-Co8kcANG.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.dIOlQ-0y.js\",\"_app/immutable/chunks/BPl9BITm.js\",\"_app/immutable/chunks/OJscNS3T.js\",\"_app/immutable/chunks/CgdRZPgI.js\",\"_app/immutable/chunks/Bp2_Vghh.js\",\"_app/immutable/chunks/Dg0acPpT.js\",\"_app/immutable/chunks/D8YEa1po.js\",\"_app/immutable/chunks/BOrLmFwJ.js\",\"_app/immutable/chunks/BCEY79Dw.js\",\"_app/immutable/chunks/B439_FLv.js\",\"_app/immutable/chunks/ib21i2T_.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/suTxxv1t.js\",\"_app/immutable/chunks/BfMYiIUi.js\",\"_app/immutable/chunks/Cl7Z3e6-.js\",\"_app/immutable/chunks/cMamJTsF.js\",\"_app/immutable/chunks/C8rRKIXT.js\"];\nexport const stylesheets = [\"_app/immutable/assets/0.DSctqr5I.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;AAChnB,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-Cdjeq3L2.js')).default;
4
+ 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"];
5
+ const stylesheets = [];
6
+ const fonts = [];
7
+
8
+ export { component, fonts, imports, index, stylesheets };
9
+ //# sourceMappingURL=1-BSUItTig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"1-DPpKAKXV.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.KYdA6ppX.js\",\"_app/immutable/chunks/BPl9BITm.js\",\"_app/immutable/chunks/iQu0D9Ux.js\",\"_app/immutable/chunks/DatGSObE.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-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;;;;"}
@@ -0,0 +1,9 @@
1
+ const index = 10;
2
+ let component_cache;
3
+ const component = async () => component_cache ??= (await import('./_page.svelte-Z_kK2lHY.js')).default;
4
+ const imports = ["_app/immutable/nodes/10.ivxAosDg.js","_app/immutable/chunks/BPl9BITm.js","_app/immutable/chunks/DkxwAIfJ2.js","_app/immutable/chunks/OJscNS3T.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/Bp2_Vghh.js","_app/immutable/chunks/U9p9CtKG2.js","_app/immutable/chunks/kNaey6uv.js","_app/immutable/chunks/CY3em1ma2.js","_app/immutable/chunks/Bp8HpEPe2.js","_app/immutable/chunks/C8rRKIXT.js","_app/immutable/chunks/Cl7Z3e6-.js","_app/immutable/chunks/BOrLmFwJ.js"];
5
+ const stylesheets = ["_app/immutable/assets/BehaviorGraph.Bk0xQRZk.css"];
6
+ const fonts = [];
7
+
8
+ export { component, fonts, imports, index, stylesheets };
9
+ //# sourceMappingURL=10-BygvxrZp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"10-BygvxrZp.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_/graph/_page.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/10.ivxAosDg.js\",\"_app/immutable/chunks/BPl9BITm.js\",\"_app/immutable/chunks/DkxwAIfJ2.js\",\"_app/immutable/chunks/OJscNS3T.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/Bp2_Vghh.js\",\"_app/immutable/chunks/U9p9CtKG2.js\",\"_app/immutable/chunks/kNaey6uv.js\",\"_app/immutable/chunks/CY3em1ma2.js\",\"_app/immutable/chunks/Bp8HpEPe2.js\",\"_app/immutable/chunks/C8rRKIXT.js\",\"_app/immutable/chunks/Cl7Z3e6-.js\",\"_app/immutable/chunks/BOrLmFwJ.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,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AACre,MAAC,WAAW,GAAG,CAAC,kDAAkD;AAClE,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-DlFVT40-.js')).default;
4
+ const imports = ["_app/immutable/nodes/11.wvMfJKC2.js","_app/immutable/chunks/BPl9BITm.js","_app/immutable/chunks/OJscNS3T.js","_app/immutable/chunks/BCEY79Dw.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/Bp2_Vghh.js","_app/immutable/chunks/DKgYpi6_.js","_app/immutable/chunks/BfMYiIUi.js","_app/immutable/chunks/Cl7Z3e6-.js","_app/immutable/chunks/BQ9GodWX2.js","_app/immutable/chunks/hpWJNn0t2.js","_app/immutable/chunks/Bp8HpEPe2.js","_app/immutable/chunks/C8rRKIXT.js","_app/immutable/chunks/BzLd0mTH.js","_app/immutable/chunks/cMamJTsF.js"];
5
+ const stylesheets = ["_app/immutable/assets/11.nv0I59TU.css"];
6
+ const fonts = [];
7
+
8
+ export { component, fonts, imports, index, stylesheets };
9
+ //# sourceMappingURL=11-DRx0tRx2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"11-DRx0tRx2.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/tutorial/_page.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/11.wvMfJKC2.js\",\"_app/immutable/chunks/BPl9BITm.js\",\"_app/immutable/chunks/OJscNS3T.js\",\"_app/immutable/chunks/BCEY79Dw.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/Bp2_Vghh.js\",\"_app/immutable/chunks/DKgYpi6_.js\",\"_app/immutable/chunks/BfMYiIUi.js\",\"_app/immutable/chunks/Cl7Z3e6-.js\",\"_app/immutable/chunks/BQ9GodWX2.js\",\"_app/immutable/chunks/hpWJNn0t2.js\",\"_app/immutable/chunks/Bp8HpEPe2.js\",\"_app/immutable/chunks/C8rRKIXT.js\",\"_app/immutable/chunks/BzLd0mTH.js\",\"_app/immutable/chunks/cMamJTsF.js\"];\nexport const stylesheets = [\"_app/immutable/assets/11.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,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAC5iB,MAAC,WAAW,GAAG,CAAC,uCAAuC;AACvD,MAAC,KAAK,GAAG;;;;"}
@@ -1,9 +1,9 @@
1
1
  const index = 2;
2
2
  let component_cache;
3
- const component = async () => component_cache ??= (await import('./_page.svelte-De508ek8.js')).default;
4
- const imports = ["_app/immutable/nodes/2.DBz20KgG.js","_app/immutable/chunks/BPl9BITm.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/suTxxv1t.js","_app/immutable/chunks/DBJWcC6Y.js","_app/immutable/chunks/DatGSObE.js","_app/immutable/chunks/DHoA038D.js","_app/immutable/chunks/Bp2_Vghh.js","_app/immutable/chunks/DKgYpi6_.js","_app/immutable/chunks/BfMYiIUi.js","_app/immutable/chunks/Cl7Z3e6-.js","_app/immutable/chunks/HKLi1Yz3.js","_app/immutable/chunks/D6jhrpTg.js","_app/immutable/chunks/D9dKmajw.js","_app/immutable/chunks/D8YEa1po.js","_app/immutable/chunks/N7PXjlRH.js","_app/immutable/chunks/Dhqg7r_2.js","_app/immutable/chunks/BzLd0mTH.js","_app/immutable/chunks/cMamJTsF.js","_app/immutable/chunks/BOrLmFwJ.js"];
3
+ const component = async () => component_cache ??= (await import('./_page.svelte-B1nG3PKn.js')).default;
4
+ const imports = ["_app/immutable/nodes/2.CmPPom9Z.js","_app/immutable/chunks/BPl9BITm.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/suTxxv1t.js","_app/immutable/chunks/BYIrIC5L.js","_app/immutable/chunks/OJscNS3T.js","_app/immutable/chunks/BCEY79Dw.js","_app/immutable/chunks/Bp2_Vghh.js","_app/immutable/chunks/DKgYpi6_.js","_app/immutable/chunks/BfMYiIUi.js","_app/immutable/chunks/Cl7Z3e6-.js","_app/immutable/chunks/HKLi1Yz3.js","_app/immutable/chunks/D6jhrpTg.js","_app/immutable/chunks/D9dKmajw.js","_app/immutable/chunks/D8YEa1po.js","_app/immutable/chunks/N7PXjlRH.js","_app/immutable/chunks/Dhqg7r_2.js","_app/immutable/chunks/BzLd0mTH.js","_app/immutable/chunks/cMamJTsF.js","_app/immutable/chunks/BOrLmFwJ.js"];
5
5
  const stylesheets = [];
6
6
  const fonts = [];
7
7
 
8
8
  export { component, fonts, imports, index, stylesheets };
9
- //# sourceMappingURL=2-AlfFqtL1.js.map
9
+ //# sourceMappingURL=2-BQT3m1vc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"2-AlfFqtL1.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.DBz20KgG.js\",\"_app/immutable/chunks/BPl9BITm.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/suTxxv1t.js\",\"_app/immutable/chunks/DBJWcC6Y.js\",\"_app/immutable/chunks/DatGSObE.js\",\"_app/immutable/chunks/DHoA038D.js\",\"_app/immutable/chunks/Bp2_Vghh.js\",\"_app/immutable/chunks/DKgYpi6_.js\",\"_app/immutable/chunks/BfMYiIUi.js\",\"_app/immutable/chunks/Cl7Z3e6-.js\",\"_app/immutable/chunks/HKLi1Yz3.js\",\"_app/immutable/chunks/D6jhrpTg.js\",\"_app/immutable/chunks/D9dKmajw.js\",\"_app/immutable/chunks/D8YEa1po.js\",\"_app/immutable/chunks/N7PXjlRH.js\",\"_app/immutable/chunks/Dhqg7r_2.js\",\"_app/immutable/chunks/BzLd0mTH.js\",\"_app/immutable/chunks/cMamJTsF.js\",\"_app/immutable/chunks/BOrLmFwJ.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,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAC5tB,MAAC,WAAW,GAAG;AACf,MAAC,KAAK,GAAG;;;;"}
1
+ {"version":3,"file":"2-BQT3m1vc.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.CmPPom9Z.js\",\"_app/immutable/chunks/BPl9BITm.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/suTxxv1t.js\",\"_app/immutable/chunks/BYIrIC5L.js\",\"_app/immutable/chunks/OJscNS3T.js\",\"_app/immutable/chunks/BCEY79Dw.js\",\"_app/immutable/chunks/Bp2_Vghh.js\",\"_app/immutable/chunks/DKgYpi6_.js\",\"_app/immutable/chunks/BfMYiIUi.js\",\"_app/immutable/chunks/Cl7Z3e6-.js\",\"_app/immutable/chunks/HKLi1Yz3.js\",\"_app/immutable/chunks/D6jhrpTg.js\",\"_app/immutable/chunks/D9dKmajw.js\",\"_app/immutable/chunks/D8YEa1po.js\",\"_app/immutable/chunks/N7PXjlRH.js\",\"_app/immutable/chunks/Dhqg7r_2.js\",\"_app/immutable/chunks/BzLd0mTH.js\",\"_app/immutable/chunks/cMamJTsF.js\",\"_app/immutable/chunks/BOrLmFwJ.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,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAC5tB,MAAC,WAAW,GAAG;AACf,MAAC,KAAK,GAAG;;;;"}
@@ -1,6 +1,6 @@
1
1
  const index = 3;
2
2
  let component_cache;
3
- const component = async () => component_cache ??= (await import('./_page.svelte-BqSC-1vK.js')).default;
3
+ const component = async () => component_cache ??= (await import('./_page.svelte-Caq7J0jU.js')).default;
4
4
  const universal = {
5
5
  "ssr": false,
6
6
  "prerender": false,
@@ -8,9 +8,9 @@ const universal = {
8
8
  "load": null
9
9
  };
10
10
  const universal_id = "src/routes/builder-mode/+page.ts";
11
- const imports = ["_app/immutable/nodes/3.19DIoFtw.js","_app/immutable/chunks/BPl9BITm.js","_app/immutable/chunks/DatGSObE.js","_app/immutable/chunks/Dq0DUAz1.js","_app/immutable/chunks/Bp2_Vghh.js","_app/immutable/chunks/Dg0acPpT.js","_app/immutable/chunks/D8YEa1po.js","_app/immutable/chunks/BOrLmFwJ.js","_app/immutable/chunks/DjWKKtqp.js","_app/immutable/chunks/DHoA038D.js","_app/immutable/chunks/iQu0D9Ux.js","_app/immutable/chunks/ib21i2T_.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/suTxxv1t.js"];
11
+ const imports = ["_app/immutable/nodes/3.D-iCGCEx.js","_app/immutable/chunks/BPl9BITm.js","_app/immutable/chunks/OJscNS3T.js","_app/immutable/chunks/CgdRZPgI.js","_app/immutable/chunks/Bp2_Vghh.js","_app/immutable/chunks/Dg0acPpT.js","_app/immutable/chunks/D8YEa1po.js","_app/immutable/chunks/BOrLmFwJ.js","_app/immutable/chunks/BvOhVtZg.js","_app/immutable/chunks/BCEY79Dw.js","_app/immutable/chunks/B439_FLv.js","_app/immutable/chunks/ib21i2T_.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/suTxxv1t.js"];
12
12
  const stylesheets = ["_app/immutable/assets/3.B3akUL9A.css"];
13
13
  const fonts = [];
14
14
 
15
15
  export { component, fonts, imports, index, stylesheets, universal, universal_id };
16
- //# sourceMappingURL=3-vbjUt_51.js.map
16
+ //# sourceMappingURL=3-DPZ9BquJ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"3-vbjUt_51.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.19DIoFtw.js\",\"_app/immutable/chunks/BPl9BITm.js\",\"_app/immutable/chunks/DatGSObE.js\",\"_app/immutable/chunks/Dq0DUAz1.js\",\"_app/immutable/chunks/Bp2_Vghh.js\",\"_app/immutable/chunks/Dg0acPpT.js\",\"_app/immutable/chunks/D8YEa1po.js\",\"_app/immutable/chunks/BOrLmFwJ.js\",\"_app/immutable/chunks/DjWKKtqp.js\",\"_app/immutable/chunks/DHoA038D.js\",\"_app/immutable/chunks/iQu0D9Ux.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,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AACpgB,MAAC,WAAW,GAAG,CAAC,sCAAsC;AACtD,MAAC,KAAK,GAAG;;;;"}
1
+ {"version":3,"file":"3-DPZ9BquJ.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.D-iCGCEx.js\",\"_app/immutable/chunks/BPl9BITm.js\",\"_app/immutable/chunks/OJscNS3T.js\",\"_app/immutable/chunks/CgdRZPgI.js\",\"_app/immutable/chunks/Bp2_Vghh.js\",\"_app/immutable/chunks/Dg0acPpT.js\",\"_app/immutable/chunks/D8YEa1po.js\",\"_app/immutable/chunks/BOrLmFwJ.js\",\"_app/immutable/chunks/BvOhVtZg.js\",\"_app/immutable/chunks/BCEY79Dw.js\",\"_app/immutable/chunks/B439_FLv.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,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AACpgB,MAAC,WAAW,GAAG,CAAC,sCAAsC;AACtD,MAAC,KAAK,GAAG;;;;"}
@@ -1,6 +1,6 @@
1
1
  const index = 4;
2
2
  let component_cache;
3
- const component = async () => component_cache ??= (await import('./_page.svelte-BKTveFAj.js')).default;
3
+ const component = async () => component_cache ??= (await import('./_page.svelte-Oj-W7G5s.js')).default;
4
4
  const universal = {
5
5
  "ssr": false,
6
6
  "prerender": false,
@@ -8,9 +8,9 @@ const universal = {
8
8
  "load": null
9
9
  };
10
10
  const universal_id = "src/routes/features/+page.ts";
11
- const imports = ["_app/immutable/nodes/4.BvMzqBJj.js","_app/immutable/chunks/BPl9BITm.js","_app/immutable/chunks/DatGSObE.js","_app/immutable/chunks/DjWKKtqp.js","_app/immutable/chunks/DHoA038D.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/Bp2_Vghh.js","_app/immutable/chunks/DKgYpi6_.js","_app/immutable/chunks/BfMYiIUi.js","_app/immutable/chunks/Cl7Z3e6-.js","_app/immutable/chunks/CxyLMlpt2.js","_app/immutable/chunks/D9dKmajw.js","_app/immutable/chunks/D8YEa1po.js","_app/immutable/chunks/aNMRV4sP2.js","_app/immutable/chunks/BQ9GodWX2.js","_app/immutable/chunks/D6jhrpTg.js","_app/immutable/chunks/N7PXjlRH.js"];
11
+ const imports = ["_app/immutable/nodes/4.DbfAvO8Z.js","_app/immutable/chunks/BPl9BITm.js","_app/immutable/chunks/OJscNS3T.js","_app/immutable/chunks/BvOhVtZg.js","_app/immutable/chunks/BCEY79Dw.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/Bp2_Vghh.js","_app/immutable/chunks/DKgYpi6_.js","_app/immutable/chunks/BfMYiIUi.js","_app/immutable/chunks/Cl7Z3e6-.js","_app/immutable/chunks/CxyLMlpt2.js","_app/immutable/chunks/D9dKmajw.js","_app/immutable/chunks/D8YEa1po.js","_app/immutable/chunks/aNMRV4sP2.js","_app/immutable/chunks/BQ9GodWX2.js","_app/immutable/chunks/D6jhrpTg.js","_app/immutable/chunks/N7PXjlRH.js"];
12
12
  const stylesheets = [];
13
13
  const fonts = [];
14
14
 
15
15
  export { component, fonts, imports, index, stylesheets, universal, universal_id };
16
- //# sourceMappingURL=4-BNow4x6D.js.map
16
+ //# sourceMappingURL=4-DHo47YX6.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"4-BNow4x6D.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.BvMzqBJj.js\",\"_app/immutable/chunks/BPl9BITm.js\",\"_app/immutable/chunks/DatGSObE.js\",\"_app/immutable/chunks/DjWKKtqp.js\",\"_app/immutable/chunks/DHoA038D.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/Bp2_Vghh.js\",\"_app/immutable/chunks/DKgYpi6_.js\",\"_app/immutable/chunks/BfMYiIUi.js\",\"_app/immutable/chunks/Cl7Z3e6-.js\",\"_app/immutable/chunks/CxyLMlpt2.js\",\"_app/immutable/chunks/D9dKmajw.js\",\"_app/immutable/chunks/D8YEa1po.js\",\"_app/immutable/chunks/aNMRV4sP2.js\",\"_app/immutable/chunks/BQ9GodWX2.js\",\"_app/immutable/chunks/D6jhrpTg.js\",\"_app/immutable/chunks/N7PXjlRH.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,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC;AACnnB,MAAC,WAAW,GAAG;AACf,MAAC,KAAK,GAAG;;;;"}
1
+ {"version":3,"file":"4-DHo47YX6.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.DbfAvO8Z.js\",\"_app/immutable/chunks/BPl9BITm.js\",\"_app/immutable/chunks/OJscNS3T.js\",\"_app/immutable/chunks/BvOhVtZg.js\",\"_app/immutable/chunks/BCEY79Dw.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/Bp2_Vghh.js\",\"_app/immutable/chunks/DKgYpi6_.js\",\"_app/immutable/chunks/BfMYiIUi.js\",\"_app/immutable/chunks/Cl7Z3e6-.js\",\"_app/immutable/chunks/CxyLMlpt2.js\",\"_app/immutable/chunks/D9dKmajw.js\",\"_app/immutable/chunks/D8YEa1po.js\",\"_app/immutable/chunks/aNMRV4sP2.js\",\"_app/immutable/chunks/BQ9GodWX2.js\",\"_app/immutable/chunks/D6jhrpTg.js\",\"_app/immutable/chunks/N7PXjlRH.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,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC;AACnnB,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-NVT2dzpG.js')).default;
4
+ const imports = ["_app/immutable/nodes/5.CC5Q7lVw.js","_app/immutable/chunks/BPl9BITm.js","_app/immutable/chunks/OJscNS3T.js","_app/immutable/chunks/BCEY79Dw.js","_app/immutable/chunks/B439_FLv.js","_app/immutable/chunks/DkxwAIfJ2.js","_app/immutable/chunks/ib21i2T_.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/suTxxv1t.js","_app/immutable/chunks/Bp2_Vghh.js","_app/immutable/chunks/B_9TWPrx2.js","_app/immutable/chunks/Dg0acPpT.js","_app/immutable/chunks/CJjJLwzv2.js","_app/immutable/chunks/hpWJNn0t2.js","_app/immutable/chunks/Bp8HpEPe2.js","_app/immutable/chunks/C8rRKIXT.js","_app/immutable/chunks/Cl7Z3e6-.js","_app/immutable/chunks/9nXQ5qrY2.js","_app/immutable/chunks/D9dKmajw.js","_app/immutable/chunks/D8YEa1po.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-Cp9evBAG.js.map