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
+ {"version":3,"file":"_page.svelte-BW_nbAAH.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/projects/_id_/_page.svelte.js"],"sourcesContent":["import { G as attr, d as head, h as unsubscribe_stores, l as derived, m as stringify, n as onDestroy, o as attr_class, q as escape_html, u as ensure_array_like } from \"../../../../chunks/index-server.js\";\nimport { Z as tagKey, f as queueItemKey, q as humanizeTagText } from \"../../../../chunks/TagPalette.js\";\nimport \"../../../../chunks/ids.js\";\nimport { n as goto } from \"../../../../chunks/client.js\";\nimport { d as computeImplementationBreakdown, f as scoreFeature, t as getBrowserContainer } from \"../../../../chunks/browserContainer.js\";\nimport \"../../../../chunks/syncEvents.js\";\nimport \"../../../../chunks/navigation.js\";\nimport { t as tourStore } from \"../../../../chunks/tourStore.svelte.js\";\nimport \"../../../../chunks/tagPaletteStore.svelte.js\";\nimport { t as featuresStore } from \"../../../../chunks/featuresStore.svelte.js\";\nimport { t as TagDotStrip } from \"../../../../chunks/TagDotStrip.js\";\nimport { t as evaluateTourSubmitGuard } from \"../../../../chunks/SubmitGuard.js\";\nimport \"../../../../chunks/projectBundleClient.js\";\nimport { t as TagFilterSelect } from \"../../../../chunks/TagFilterSelect.js\";\nimport { t as FeatureCard } from \"../../../../chunks/FeatureCard.js\";\nimport \"../../../../chunks/stores.js\";\nimport { a as getEffectiveEntities, r as buildEventCatalog, t as buildTransitionCatalog } from \"../../../../chunks/TransitionCatalog.js\";\nimport { n as projectStore, t as projectFeaturesStore } from \"../../../../chunks/projectFeaturesStore.svelte.js\";\n//#region src/features/projects/presentation/components/ProjectFeaturesPanel.svelte\nfunction ProjectFeaturesPanel($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { features, search, onSearch, onCreate, onAddTag, onRemoveTag, onRemove } = $$props;\n\t\tlet tagFilter = \"all\";\n\t\tfunction matchesSearch(feature, query) {\n\t\t\tif (query.length === 0) return true;\n\t\t\treturn feature.name.toLowerCase().includes(query) || (feature.description ?? \"\").toLowerCase().includes(query);\n\t\t}\n\t\tfunction matchesTagFilter(feature, filter) {\n\t\t\tconst featureTags = feature.tags ?? [];\n\t\t\tif (filter === \"all\") return true;\n\t\t\tif (filter === \"untagged\") return featureTags.length === 0;\n\t\t\tconst key = tagKey(filter);\n\t\t\treturn featureTags.some((tag) => tagKey(tag) === key);\n\t\t}\n\t\tconst filteredMembers = derived(() => {\n\t\t\tconst q = search.trim().toLowerCase();\n\t\t\treturn features.filter((feature) => matchesSearch(feature, q) && matchesTagFilter(feature, tagFilter));\n\t\t});\n\t\tconst allTagsFlat = derived(() => {\n\t\t\tconst out = [];\n\t\t\tfor (const feature of features) for (const tag of feature.tags ?? []) out.push(tag);\n\t\t\treturn out;\n\t\t});\n\t\tfunction tagFilterCount(filter) {\n\t\t\tconst q = search.trim().toLowerCase();\n\t\t\treturn features.filter((feature) => matchesSearch(feature, q) && matchesTagFilter(feature, filter)).length;\n\t\t}\n\t\tlet sortBy = \"updated\";\n\t\tlet newName = \"\";\n\t\tderived(() => evaluateTourSubmitGuard(tourStore.currentStep, \"new-feature\", newName));\n\t\tlet implByFeatureId = /* @__PURE__ */ new Map();\n\t\tfunction toFeatureCard(feature) {\n\t\t\tconst report = scoreFeature(feature);\n\t\t\tconst impl = computeImplementationBreakdown(feature, implByFeatureId.get(String(feature.id)) ?? null);\n\t\t\treturn {\n\t\t\t\tid: feature.id,\n\t\t\t\tname: feature.name,\n\t\t\t\tdescription: feature.description,\n\t\t\t\tsurfaceCount: feature.surfaces.length,\n\t\t\t\tactionCount: feature.surfaces.reduce((acc, surface) => acc + surface.actions.length, 0),\n\t\t\t\tcreatedAt: feature.createdAt,\n\t\t\t\tupdatedAt: feature.updatedAt,\n\t\t\t\ttags: feature.tags,\n\t\t\t\tmaturityPercentage: report.percentage,\n\t\t\t\tcriticalIssueCount: report.criticalIssues.length,\n\t\t\t\trecommendedIssueCount: report.recommendedIssues.length,\n\t\t\t\timplementationPercentage: impl.expectedCount === 0 ? null : impl.percentage,\n\t\t\t\timplementationFoundCount: impl.foundCount,\n\t\t\t\timplementationExpectedCount: impl.expectedCount,\n\t\t\t\timplementationHasReport: impl.hasReport\n\t\t\t};\n\t\t}\n\t\tconst filteredCards = derived(() => {\n\t\t\treturn filteredMembers().map(toFeatureCard).sort((a, b) => {\n\t\t\t\treturn new Date(b.updatedAt).getTime() - new Date(a.updatedAt).getTime();\n\t\t\t});\n\t\t});\n\t\tconst tagTypeOptions = derived(() => {\n\t\t\tconst types = /* @__PURE__ */ new Set();\n\t\t\tfor (const feature of features) for (const tag of feature.tags ?? []) types.add(humanizeTagText(tag.type));\n\t\t\treturn [...types].sort((a, b) => a.localeCompare(b));\n\t\t});\n\t\tfunction isFeatureQueued(featureId) {\n\t\t\tconst queue = projectStore.project?.implementationQueue ?? [];\n\t\t\tconst key = `feature:${String(featureId)}`;\n\t\t\treturn queue.some((q) => queueItemKey(q) === key);\n\t\t}\n\t\tasync function enqueueFeature(featureId) {\n\t\t\tif (!projectStore.project) return;\n\t\t\tconst result = await (await getBrowserContainer()).useCases.enqueueQueueItem(projectStore.project.id, {\n\t\t\t\tkind: \"feature\",\n\t\t\t\tfeatureId\n\t\t\t});\n\t\t\tif (projectStore.project) projectStore.project = result.project;\n\t\t}\n\t\tasync function removeFeatureFromQueue(featureId) {\n\t\t\tif (!projectStore.project) return;\n\t\t\tconst queue = projectStore.project.implementationQueue ?? [];\n\t\t\tconst key = `feature:${String(featureId)}`;\n\t\t\tconst match = queue.find((q) => queueItemKey(q) === key);\n\t\t\tif (!match) return;\n\t\t\tconst next = await (await getBrowserContainer()).useCases.dequeueQueueItem(projectStore.project.id, match.id);\n\t\t\tif (projectStore.project) projectStore.project = next;\n\t\t}\n\t\t$$renderer.push(`<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...\"${attr(\"value\", search)} class=\"h-9 w-full min-w-0 rounded-md border-0 bg-transparent px-3 text-sm outline-none placeholder:text-slate-400\"/> `);\n\t\tif (search.trim().length > 0) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<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>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></div> <div class=\"flex flex-col gap-2 sm:flex-row sm:items-center\">`);\n\t\tTagFilterSelect($$renderer, {\n\t\t\ttags: allTagsFlat(),\n\t\t\tvalue: tagFilter,\n\t\t\tonChange: (next) => tagFilter = next,\n\t\t\tcountLabel: tagFilterCount\n\t\t});\n\t\t$$renderer.push(`<!----> <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> `);\n\t\t$$renderer.select({\n\t\t\tvalue: sortBy,\n\t\t\tclass: \"bg-transparent text-sm font-medium text-slate-800 outline-none\"\n\t\t}, ($$renderer) => {\n\t\t\t$$renderer.option({ value: \"updated\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`Updated`);\n\t\t\t});\n\t\t\t$$renderer.option({ value: \"name\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`Name`);\n\t\t\t});\n\t\t\t$$renderer.option({ value: \"maturity\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`Maturity`);\n\t\t\t});\n\t\t});\n\t\t$$renderer.push(`</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> `);\n\t\tif (filteredCards().length === 0) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<div class=\"rounded-lg border border-dashed border-hairline bg-white p-6 text-center text-sm text-slate-500\">`);\n\t\t\tif (features.length === 0) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<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>`);\n\t\t\t} else {\n\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`No features match your search.`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<ul class=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3\"><!--[-->`);\n\t\t\tconst each_array = ensure_array_like(filteredCards());\n\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\tlet summary = each_array[$$index];\n\t\t\t\t$$renderer.push(`<li>`);\n\t\t\t\tFeatureCard($$renderer, {\n\t\t\t\t\tsummary,\n\t\t\t\t\ttagTypeOptions: tagTypeOptions(),\n\t\t\t\t\tdeleteLabel: \"Remove\",\n\t\t\t\t\tonAddTag: (type, value) => onAddTag(summary.id, {\n\t\t\t\t\t\ttype,\n\t\t\t\t\t\tvalue\n\t\t\t\t\t}),\n\t\t\t\t\tonRemoveTag: onRemoveTag ? (type, value) => onRemoveTag(summary.id, {\n\t\t\t\t\t\ttype,\n\t\t\t\t\t\tvalue\n\t\t\t\t\t}) : void 0,\n\t\t\t\t\tonDelete: () => onRemove(summary.id),\n\t\t\t\t\tqueued: isFeatureQueued(summary.id),\n\t\t\t\t\tonAddToQueue: () => enqueueFeature(summary.id),\n\t\t\t\t\tonRemoveFromQueue: () => removeFeatureFromQueue(summary.id)\n\t\t\t\t});\n\t\t\t\t$$renderer.push(`<!----></li>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></ul>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></div> `);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]-->`);\n\t});\n}\n//#endregion\n//#region src/features/projects/presentation/services/crossFeatureGroups.ts\nvar resourceKey = (r) => `${r.kind}|${r.provider}|${r.name}`.toLowerCase();\nvar groupResources = (features) => {\n\tconst map = /* @__PURE__ */ new Map();\n\tfor (const e of features) for (const r of e.resources) {\n\t\tconst key = resourceKey(r);\n\t\tconst attribution = {\n\t\t\tfeatureId: String(e.id),\n\t\t\tfeatureName: e.name\n\t\t};\n\t\tconst existing = map.get(key);\n\t\tif (existing) {\n\t\t\tif (!existing.sources.some((s) => s.featureId === attribution.featureId)) existing.sources.push(attribution);\n\t\t\tcontinue;\n\t\t}\n\t\tmap.set(key, {\n\t\t\tkey,\n\t\t\tname: r.name,\n\t\t\tkind: r.kind,\n\t\t\tprovider: r.provider,\n\t\t\tscope: r.scope,\n\t\t\tsensitivity: r.sensitivity,\n\t\t\tcontainsPii: r.containsPii,\n\t\t\tdescription: r.description,\n\t\t\tsources: [attribution]\n\t\t});\n\t}\n\treturn Array.from(map.values());\n};\nvar groupEntities = (features) => {\n\tconst map = /* @__PURE__ */ new Map();\n\tfor (const e of features) for (const d of getEffectiveEntities(e)) {\n\t\tconst key = d.namespace.toLowerCase();\n\t\tconst attribution = {\n\t\t\tfeatureId: String(e.id),\n\t\t\tfeatureName: e.name\n\t\t};\n\t\tconst existing = map.get(key);\n\t\tif (existing) {\n\t\t\tif (!existing.sources.some((s) => s.featureId === attribution.featureId)) existing.sources.push(attribution);\n\t\t\tif (d.fields.length > existing.fieldCount) existing.fieldCount = d.fields.length;\n\t\t\tif (!existing.description && d.description) existing.description = d.description;\n\t\t\tcontinue;\n\t\t}\n\t\tmap.set(key, {\n\t\t\tkey,\n\t\t\tnamespace: d.namespace,\n\t\t\tdescription: d.description,\n\t\t\tfieldCount: d.fields.length,\n\t\t\tsources: [attribution]\n\t\t});\n\t}\n\treturn Array.from(map.values());\n};\nvar groupEvents = (features) => {\n\tconst map = /* @__PURE__ */ new Map();\n\tfor (const e of features) {\n\t\tconst registered = new Map((e.events ?? []).map((ev) => [String(ev.name), ev]));\n\t\tfor (const entry of buildEventCatalog(e)) {\n\t\t\tconst name = String(entry.name);\n\t\t\tconst key = name.toLowerCase();\n\t\t\tconst declared = registered.get(name);\n\t\t\tconst attribution = {\n\t\t\t\tfeatureId: String(e.id),\n\t\t\t\tfeatureName: e.name\n\t\t\t};\n\t\t\tconst existing = map.get(key);\n\t\t\tif (existing) {\n\t\t\t\tif (!existing.sources.some((s) => s.featureId === attribution.featureId)) existing.sources.push(attribution);\n\t\t\t\texisting.emissions += entry.emissions.length;\n\t\t\t\tif (declared) {\n\t\t\t\t\tif (!existing.description && declared.description) existing.description = declared.description;\n\t\t\t\t\tconst declaredFields = declared.payloadSchema?.length ?? 0;\n\t\t\t\t\tif (declaredFields > existing.payloadFieldCount) existing.payloadFieldCount = declaredFields;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tmap.set(key, {\n\t\t\t\tkey,\n\t\t\t\tname,\n\t\t\t\tdescription: declared?.description,\n\t\t\t\tpayloadFieldCount: declared?.payloadSchema?.length ?? 0,\n\t\t\t\temissions: entry.emissions.length,\n\t\t\t\tsources: [attribution]\n\t\t\t});\n\t\t}\n\t}\n\treturn Array.from(map.values());\n};\nvar groupTransitions = (features) => {\n\tconst map = /* @__PURE__ */ new Map();\n\tfor (const e of features) for (const entry of buildTransitionCatalog(e)) {\n\t\tconst label = entry.sources[0]?.description;\n\t\tconst key = `${entry.fromSurfaceName}|${entry.toSurfaceName}|${label ?? \"\"}`.toLowerCase();\n\t\tconst attribution = {\n\t\t\tfeatureId: String(e.id),\n\t\t\tfeatureName: e.name\n\t\t};\n\t\tconst existing = map.get(key);\n\t\tif (existing) {\n\t\t\tif (!existing.sources.some((s) => s.featureId === attribution.featureId)) existing.sources.push(attribution);\n\t\t\texisting.sourcesCount += entry.sources.length;\n\t\t\tcontinue;\n\t\t}\n\t\tmap.set(key, {\n\t\t\tkey,\n\t\t\tsourceName: entry.fromSurfaceName,\n\t\t\ttargetName: entry.toSurfaceName,\n\t\t\tlabel,\n\t\t\tsourcesCount: entry.sources.length,\n\t\t\tsources: [attribution]\n\t\t});\n\t}\n\treturn Array.from(map.values());\n};\n//#endregion\n//#region src/features/projects/presentation/components/ProjectResourcesPanel.svelte\nfunction ProjectResourcesPanel($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { features, search } = $$props;\n\t\tconst rows = derived(() => groupResources(features));\n\t\tconst filtered = derived(() => search.trim().length === 0 ? rows() : rows().filter((r) => {\n\t\t\tconst q = search.toLowerCase();\n\t\t\treturn r.name.toLowerCase().includes(q) || r.provider.toLowerCase().includes(q) || r.kind.toLowerCase().includes(q) || r.sources.some((s) => s.featureName.toLowerCase().includes(q));\n\t\t}));\n\t\tif (filtered().length === 0) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<p class=\"rounded-lg border border-dashed border-hairline bg-white p-6 text-center text-sm text-slate-500\">${escape_html(rows().length === 0 ? \"No resources declared across the project features.\" : \"No resources match your search.\")}</p>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<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><!--[-->`);\n\t\t\tconst each_array = ensure_array_like(filtered());\n\t\t\tfor (let $$index_1 = 0, $$length = each_array.length; $$index_1 < $$length; $$index_1++) {\n\t\t\t\tlet row = each_array[$$index_1];\n\t\t\t\t$$renderer.push(`<tr class=\"border-t border-slate-100\"><td class=\"px-3 py-2 font-medium text-slate-950\">${escape_html(row.name)} `);\n\t\t\t\tif (row.description) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<div class=\"text-xs font-normal text-slate-500\">${escape_html(row.description)}</div>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--></td><td class=\"px-3 py-2 text-slate-600\">${escape_html(row.kind)}</td><td class=\"px-3 py-2 text-slate-600\">${escape_html(row.provider)}</td><td class=\"px-3 py-2 text-slate-600\">${escape_html(row.scope)}</td><td class=\"px-3 py-2 text-slate-600\">${escape_html(row.sensitivity)}</td><td class=\"px-3 py-2 text-slate-600\">${escape_html(row.containsPii ? \"Yes\" : \"No\")}</td><td class=\"px-3 py-2 text-xs\"><div class=\"flex flex-wrap gap-1\"><!--[-->`);\n\t\t\t\tconst each_array_1 = ensure_array_like(row.sources);\n\t\t\t\tfor (let $$index = 0, $$length = each_array_1.length; $$index < $$length; $$index++) {\n\t\t\t\t\tlet src = each_array_1[$$index];\n\t\t\t\t\t$$renderer.push(`<a${attr(\"href\", `/features/${src.featureId}`)} 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\">${escape_html(src.featureName)}</a>`);\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]--></div></td></tr>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></tbody></table></div>`);\n\t\t}\n\t\t$$renderer.push(`<!--]-->`);\n\t});\n}\n//#endregion\n//#region src/features/projects/presentation/components/ProjectEntitiesPanel.svelte\nfunction ProjectEntitiesPanel($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { features, search } = $$props;\n\t\tconst rows = derived(() => groupEntities(features));\n\t\tconst filtered = derived(() => search.trim().length === 0 ? rows() : rows().filter((r) => {\n\t\t\tconst q = search.toLowerCase();\n\t\t\treturn r.namespace.toLowerCase().includes(q) || (r.description ?? \"\").toLowerCase().includes(q) || r.sources.some((s) => s.featureName.toLowerCase().includes(q));\n\t\t}));\n\t\tif (filtered().length === 0) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<p class=\"rounded-lg border border-dashed border-hairline bg-white p-6 text-center text-sm text-slate-500\">${escape_html(rows().length === 0 ? \"No data entities declared across the project features.\" : \"No data entities match your search.\")}</p>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<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><!--[-->`);\n\t\t\tconst each_array = ensure_array_like(filtered());\n\t\t\tfor (let $$index_1 = 0, $$length = each_array.length; $$index_1 < $$length; $$index_1++) {\n\t\t\t\tlet row = each_array[$$index_1];\n\t\t\t\t$$renderer.push(`<tr class=\"border-t border-slate-100\"><td class=\"px-3 py-2 font-medium text-slate-950\">${escape_html(row.namespace)} `);\n\t\t\t\tif (row.description) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<div class=\"text-xs font-normal text-slate-500\">${escape_html(row.description)}</div>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--></td><td class=\"px-3 py-2 text-slate-600\">${escape_html(row.fieldCount)}</td><td class=\"px-3 py-2 text-xs\"><div class=\"flex flex-wrap gap-1\"><!--[-->`);\n\t\t\t\tconst each_array_1 = ensure_array_like(row.sources);\n\t\t\t\tfor (let $$index = 0, $$length = each_array_1.length; $$index < $$length; $$index++) {\n\t\t\t\t\tlet src = each_array_1[$$index];\n\t\t\t\t\t$$renderer.push(`<a${attr(\"href\", `/features/${src.featureId}`)} 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\">${escape_html(src.featureName)}</a>`);\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]--></div></td></tr>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></tbody></table></div>`);\n\t\t}\n\t\t$$renderer.push(`<!--]-->`);\n\t});\n}\n//#endregion\n//#region src/features/projects/presentation/components/ProjectEventsPanel.svelte\nfunction ProjectEventsPanel($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { features, search } = $$props;\n\t\tconst rows = derived(() => groupEvents(features));\n\t\tconst filtered = derived(() => search.trim().length === 0 ? rows() : rows().filter((r) => {\n\t\t\tconst q = search.toLowerCase();\n\t\t\treturn r.name.toLowerCase().includes(q) || (r.description ?? \"\").toLowerCase().includes(q) || r.sources.some((s) => s.featureName.toLowerCase().includes(q));\n\t\t}));\n\t\tif (filtered().length === 0) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<p class=\"rounded-lg border border-dashed border-hairline bg-white p-6 text-center text-sm text-slate-500\">${escape_html(rows().length === 0 ? \"No events registered across the project features.\" : \"No events match your search.\")}</p>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<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><!--[-->`);\n\t\t\tconst each_array = ensure_array_like(filtered());\n\t\t\tfor (let $$index_1 = 0, $$length = each_array.length; $$index_1 < $$length; $$index_1++) {\n\t\t\t\tlet row = each_array[$$index_1];\n\t\t\t\t$$renderer.push(`<tr class=\"border-t border-slate-100\"><td class=\"px-3 py-2 font-mono text-slate-950\">${escape_html(row.name)} `);\n\t\t\t\tif (row.description) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<div class=\"font-sans text-xs text-slate-500\">${escape_html(row.description)}</div>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--></td><td class=\"px-3 py-2 text-slate-600\">${escape_html(row.emissions)}</td><td class=\"px-3 py-2 text-slate-600\">${escape_html(row.payloadFieldCount)}</td><td class=\"px-3 py-2 text-xs\"><div class=\"flex flex-wrap gap-1\"><!--[-->`);\n\t\t\t\tconst each_array_1 = ensure_array_like(row.sources);\n\t\t\t\tfor (let $$index = 0, $$length = each_array_1.length; $$index < $$length; $$index++) {\n\t\t\t\t\tlet src = each_array_1[$$index];\n\t\t\t\t\t$$renderer.push(`<a${attr(\"href\", `/features/${src.featureId}`)} 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\">${escape_html(src.featureName)}</a>`);\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]--></div></td></tr>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></tbody></table></div>`);\n\t\t}\n\t\t$$renderer.push(`<!--]-->`);\n\t});\n}\n//#endregion\n//#region src/features/projects/presentation/components/ProjectTransitionsPanel.svelte\nfunction ProjectTransitionsPanel($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { features, search } = $$props;\n\t\tconst rows = derived(() => groupTransitions(features));\n\t\tconst filtered = derived(() => search.trim().length === 0 ? rows() : rows().filter((r) => {\n\t\t\tconst q = search.toLowerCase();\n\t\t\treturn r.sourceName.toLowerCase().includes(q) || r.targetName.toLowerCase().includes(q) || (r.label ?? \"\").toLowerCase().includes(q) || r.sources.some((s) => s.featureName.toLowerCase().includes(q));\n\t\t}));\n\t\tif (filtered().length === 0) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<p class=\"rounded-lg border border-dashed border-hairline bg-white p-6 text-center text-sm text-slate-500\">${escape_html(rows().length === 0 ? \"No transitions declared across the project features.\" : \"No transitions match your search.\")}</p>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<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><!--[-->`);\n\t\t\tconst each_array = ensure_array_like(filtered());\n\t\t\tfor (let $$index_1 = 0, $$length = each_array.length; $$index_1 < $$length; $$index_1++) {\n\t\t\t\tlet row = each_array[$$index_1];\n\t\t\t\t$$renderer.push(`<tr class=\"border-t border-slate-100\"><td class=\"px-3 py-2 font-medium text-slate-950\">${escape_html(row.sourceName)}</td><td class=\"px-3 py-2 text-slate-700\">${escape_html(row.targetName)}</td><td class=\"px-3 py-2 text-slate-600\">${escape_html(row.label ?? \"-\")}</td><td class=\"px-3 py-2 text-xs\"><div class=\"flex flex-wrap gap-1\"><!--[-->`);\n\t\t\t\tconst each_array_1 = ensure_array_like(row.sources);\n\t\t\t\tfor (let $$index = 0, $$length = each_array_1.length; $$index < $$length; $$index++) {\n\t\t\t\t\tlet src = each_array_1[$$index];\n\t\t\t\t\t$$renderer.push(`<a${attr(\"href\", `/features/${src.featureId}`)} 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\">${escape_html(src.featureName)}</a>`);\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]--></div></td></tr>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></tbody></table></div>`);\n\t\t}\n\t\t$$renderer.push(`<!--]-->`);\n\t});\n}\n//#endregion\n//#region src/features/projects/presentation/components/ProjectHistoryPanel.svelte\nfunction ProjectHistoryPanel($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\t/**\n\t\t* Read-only timeline of every change made to the project (name,\n\t\t* description, tags, feature add/remove, queue mutations, …). Mirrors\n\t\t* the feature-level HistoryPanel's *visual* language but intentionally\n\t\t* drops the interactive bits — no jumpTo, no Clear — so a stray click\n\t\t* can't time-travel a project out from under its features.\n\t\t*\n\t\t* Pulls from `projectStore.historyEntries` which the store subscribes\n\t\t* to via `YDocClient.observeHistory`.\n\t\t*/\n\t\tconst reversed = derived(() => [...projectStore.historyEntries].reverse());\n\t\tconst formatTime = (ts) => {\n\t\t\tconst d = new Date(ts);\n\t\t\tconst today = /* @__PURE__ */ new Date();\n\t\t\tconst sameDay = d.getFullYear() === today.getFullYear() && d.getMonth() === today.getMonth() && d.getDate() === today.getDate();\n\t\t\tconst time = d.toLocaleTimeString([], {\n\t\t\t\thour: \"2-digit\",\n\t\t\t\tminute: \"2-digit\"\n\t\t\t});\n\t\t\tif (sameDay) return time;\n\t\t\treturn `${d.toLocaleDateString([], {\n\t\t\t\tmonth: \"short\",\n\t\t\t\tday: \"numeric\"\n\t\t\t})} ${time}`;\n\t\t};\n\t\tconst authorBadgeClass = (author) => {\n\t\t\tif (author === \"mcp\") return \"bg-purple-100 text-purple-700\";\n\t\t\tif (author === \"system\") return \"bg-neutral-100 text-neutral-600\";\n\t\t\treturn \"bg-sky-100 text-sky-700\";\n\t\t};\n\t\tconst authorLabel = (author) => {\n\t\t\tif (author === \"mcp\") return \"AI\";\n\t\t\tif (author === \"system\") return \"sys\";\n\t\t\treturn author.replace(/^user-/, \"\").replace(/^Anon-/, \"\");\n\t\t};\n\t\t$$renderer.push(`<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\">${escape_html(projectStore.historyEntries.length)} edit${escape_html(projectStore.historyEntries.length === 1 ? \"\" : \"s\")} · read-only</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> `);\n\t\tif (reversed().length === 0) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<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>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<ol class=\"divide-y divide-slate-100\"><!--[-->`);\n\t\t\tconst each_array = ensure_array_like(reversed());\n\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\tlet entry = each_array[$$index];\n\t\t\t\t$$renderer.push(`<li class=\"flex items-start gap-3 px-4 py-2.5 text-xs\"><span${attr_class(`mt-0.5 inline-flex shrink-0 items-center rounded px-1.5 py-0.5 text-[10px] font-semibold ${stringify(authorBadgeClass(entry.author))}`)}${attr(\"title\", `Author: ${entry.author}`)}>${escape_html(authorLabel(entry.author))}</span> <div class=\"min-w-0 flex-1\"><p class=\"truncate font-medium text-slate-800\">${escape_html(entry.label ?? \"Edit\")}</p> <p class=\"mt-0.5 text-[11px] text-slate-500\">${escape_html(formatTime(entry.ts))} `);\n\t\t\t\tif (entry.actingFor) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<span class=\"ml-1 text-purple-700\">· for ${escape_html(entry.actingFor)}</span>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--></p></div></li>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></ol>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></section>`);\n\t});\n}\n//#endregion\n//#region src/features/implementation-queue/presentation/stores/queueStore.svelte.ts\nvar QueueStore = class {\n\tviews = [];\n\tloading = false;\n\terror = null;\n\t/** Refresh `views` for the currently loaded project. Idempotent. */\n\tasync refresh() {\n\t\tconst projectId = projectStore.project?.id;\n\t\tif (!projectId) {\n\t\t\tthis.views = [];\n\t\t\treturn;\n\t\t}\n\t\tthis.loading = true;\n\t\tthis.error = null;\n\t\ttry {\n\t\t\tconst container = await getBrowserContainer();\n\t\t\tthis.views = await container.useCases.listQueue(projectId);\n\t\t} catch (e) {\n\t\t\tthis.error = e.message;\n\t\t} finally {\n\t\t\tthis.loading = false;\n\t\t}\n\t}\n\t/** True when the queue already holds an entry for this (kind, ids) tuple. */\n\tisQueued(target) {\n\t\tconst key = target.kind === \"feature\" ? `feature:${String(target.featureId)}` : target.kind === \"surface\" ? `surface:${String(target.featureId)}:${String(target.surfaceId)}` : `action:${String(target.featureId)}:${String(target.actionId)}`;\n\t\treturn this.views.some((v) => queueItemKey(v.item) === key);\n\t}\n\tasync enqueueFeature(projectId, featureId) {\n\t\tawait this.mutate(async (container) => {\n\t\t\tawait container.useCases.enqueueQueueItem(projectId, {\n\t\t\t\tkind: \"feature\",\n\t\t\t\tfeatureId\n\t\t\t});\n\t\t});\n\t}\n\tasync enqueueSurface(projectId, featureId, surfaceId) {\n\t\tawait this.mutate(async (container) => {\n\t\t\tawait container.useCases.enqueueQueueItem(projectId, {\n\t\t\t\tkind: \"surface\",\n\t\t\t\tfeatureId,\n\t\t\t\tsurfaceId\n\t\t\t});\n\t\t});\n\t}\n\tasync enqueueAction(projectId, featureId, actionId) {\n\t\tawait this.mutate(async (container) => {\n\t\t\tawait container.useCases.enqueueQueueItem(projectId, {\n\t\t\t\tkind: \"action\",\n\t\t\t\tfeatureId,\n\t\t\t\tactionId\n\t\t\t});\n\t\t});\n\t}\n\tasync dequeue(projectId, itemId) {\n\t\tawait this.mutate(async (container) => {\n\t\t\tawait container.useCases.dequeueQueueItem(projectId, itemId);\n\t\t});\n\t}\n\tasync moveTo(projectId, itemId, targetIndex) {\n\t\tawait this.mutate(async (container) => {\n\t\t\tawait container.useCases.moveQueueItem(projectId, itemId, {\n\t\t\t\tkind: \"to\",\n\t\t\t\ttargetIndex\n\t\t\t});\n\t\t});\n\t}\n\treset() {\n\t\tthis.views = [];\n\t\tthis.loading = false;\n\t\tthis.error = null;\n\t}\n\t/**\n\t* Wrap an awaitable mutation: clear the error, run it, then refresh from\n\t* the repo so the local view matches the persisted truth. Any thrown\n\t* error is captured on the store and the UI can surface it (or dismiss).\n\t*/\n\tasync mutate(op) {\n\t\tthis.error = null;\n\t\ttry {\n\t\t\tawait op(await getBrowserContainer());\n\t\t\tawait this.refresh();\n\t\t} catch (e) {\n\t\t\tthis.error = e.message;\n\t\t}\n\t}\n};\nvar queueStore = new QueueStore();\n//#endregion\n//#region src/features/implementation-queue/presentation/components/QueuePanel.svelte\nfunction QueuePanel($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet draggingId = null;\n\t\tlet overIndex = null;\n\t\t$$renderer.push(`<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\">${escape_html(queueStore.views.length)}</span></header> `);\n\t\tif (queueStore.error) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<p class=\"rounded-md border border-red-200 bg-red-50 px-3 py-2 text-xs text-red-700\">${escape_html(queueStore.error)}</p>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> `);\n\t\tif (queueStore.views.length === 0) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<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 \"implement the next thing in the queue\".</p></div>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<ul class=\"space-y-1.5\"><!--[-->`);\n\t\t\tconst each_array = ensure_array_like(queueStore.views);\n\t\t\tfor (let index = 0, $$length = each_array.length; index < $$length; index++) {\n\t\t\t\tlet view = each_array[index];\n\t\t\t\tconst isDragging = draggingId === view.item.id;\n\t\t\t\tconst isOver = overIndex === index && false;\n\t\t\t\t$$renderer.push(`<li${attr_class(`group flex items-center gap-2 rounded-md border bg-white px-2 py-1.5 text-sm transition ${view.orphaned ? \"border-amber-200 bg-amber-50/40\" : \"border-slate-200\"} ${isDragging ? \"opacity-40\" : \"\"} ${isOver ? \"border-brand-400 ring-1 ring-brand-200\" : \"\"}`)} 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\">${escape_html(index + 1)}.</span> <span${attr_class(`shrink-0 rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide ${view.item.kind === \"feature\" ? \"bg-violet-100 text-violet-800\" : view.item.kind === \"surface\" ? \"bg-emerald-100 text-emerald-800\" : \"bg-cyan-100 text-cyan-800\"}`)}>${escape_html(view.item.kind)}</span> <div class=\"min-w-0 flex-1 truncate\">`);\n\t\t\t\tif (view.item.kind === \"action\") {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<a${attr(\"href\", `/features/${view.item.featureId}`)} class=\"font-medium text-slate-900 hover:text-brand-800 hover:underline\">${escape_html(view.actionName ?? \"(unnamed action)\")}</a> <span class=\"text-xs text-slate-500\">· ${escape_html(view.featureName)}</span>`);\n\t\t\t\t} else if (view.item.kind === \"surface\") {\n\t\t\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t\t\t$$renderer.push(`<a${attr(\"href\", `/features/${view.item.featureId}`)} class=\"font-medium text-slate-900 hover:text-brand-800 hover:underline\">${escape_html(view.surfaceName ?? \"(unnamed surface)\")}</a> <span class=\"text-xs text-slate-500\">· ${escape_html(view.featureName)}</span>`);\n\t\t\t\t} else {\n\t\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t$$renderer.push(`<a${attr(\"href\", `/features/${view.item.featureId}`)} class=\"font-medium text-slate-900 hover:text-brand-800 hover:underline\">${escape_html(view.featureName)}</a>`);\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\t\tif (view.item.note) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<span class=\"block truncate text-xs text-slate-500\">${escape_html(view.item.note)}</span>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--></div> `);\n\t\t\t\tif (view.orphaned) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<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>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--> <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\"${attr(\"disabled\", index === 0, true)} 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\"${attr(\"disabled\", index === queueStore.views.length - 1, true)} 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>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></ul>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></div>`);\n\t});\n}\n//#endregion\n//#region src/features/projects/presentation/components/ProjectEditor.svelte\nfunction ProjectEditor($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tconst PANELS = [\n\t\t\t{\n\t\t\t\tid: \"features\",\n\t\t\t\tlabel: \"Features\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"queue\",\n\t\t\t\tlabel: \"Queue\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"resources\",\n\t\t\t\tlabel: \"Resources\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"data\",\n\t\t\t\tlabel: \"Entity\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"events\",\n\t\t\t\tlabel: \"Events\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"transitions\",\n\t\t\t\tlabel: \"Transitions\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"history\",\n\t\t\t\tlabel: \"History\"\n\t\t\t}\n\t\t];\n\t\tfunction panelCount(panel) {\n\t\t\tconst exps = projectFeaturesStore.features;\n\t\t\tswitch (panel) {\n\t\t\t\tcase \"features\": return exps.length;\n\t\t\t\tcase \"queue\": return projectStore.project?.implementationQueue?.length ?? 0;\n\t\t\t\tcase \"resources\": return groupResources(exps).length;\n\t\t\t\tcase \"data\": return groupEntities(exps).length;\n\t\t\t\tcase \"events\": return groupEvents(exps).length;\n\t\t\t\tcase \"transitions\": return groupTransitions(exps).length;\n\t\t\t\tcase \"history\": return projectStore.historyEntries.length;\n\t\t\t}\n\t\t}\n\t\tasync function handleAddFeatureTag(id, tag) {\n\t\t\tif (!projectFeaturesStore.features.find((item) => item.id === id)) return;\n\t\t\tawait featuresStore.addTag(String(id), tag);\n\t\t\tif (projectStore.project) await projectFeaturesStore.load(projectStore.project.featureIds);\n\t\t}\n\t\tasync function handleRemoveFeatureTag(id, tag) {\n\t\t\tif (!projectFeaturesStore.features.find((item) => item.id === id)) return;\n\t\t\tawait featuresStore.removeTag(String(id), tag);\n\t\t\tif (projectStore.project) await projectFeaturesStore.load(projectStore.project.featureIds);\n\t\t}\n\t\tasync function handleCreateFeature(name, description) {\n\t\t\tconst newId = await featuresStore.create(name, description);\n\t\t\tawait projectStore.addFeature(newId);\n\t\t\tawait goto(`/features/${newId}`);\n\t\t}\n\t\tasync function handleRemoveFeature(id) {\n\t\t\tawait projectStore.removeFeature(id);\n\t\t\tif (projectStore.project) await projectFeaturesStore.load(projectStore.project.featureIds);\n\t\t}\n\t\tlet exporting = false;\n\t\tif (projectStore.project) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\tconst project = projectStore.project;\n\t\t\t$$renderer.push(`<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${attr(\"href\", `/projects/${project.id}/graph`)} 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\"${attr(\"disabled\", exporting, true)} title=\"Encrypt the project (and all its features + status) into a .unspa file you can share or back up\"><span aria-hidden=\"true\">⬇</span> ${escape_html(\"Export .unspa\")}</button></div> <div class=\"mt-3\"><div class=\"min-w-0\">`);\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<h1 class=\"truncate text-4xl font-semibold tracking-tight text-slate-950\">${escape_html(project.name)}</h1> `);\n\t\t\tif (project.description) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<p class=\"mt-2 max-w-3xl text-sm leading-6 text-slate-600\">${escape_html(project.description)}</p>`);\n\t\t\t} else {\n\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<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>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\tif (project.tags && project.tags.length > 0) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<div class=\"mt-3\">`);\n\t\t\t\tTagDotStrip($$renderer, { tags: project.tags });\n\t\t\t\t$$renderer.push(`<!----></div>`);\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--> <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>Updated ${escape_html(new Date(project.updatedAt).toLocaleString())}</span> <span>${escape_html(projectStore.saving ? \"Saving...\" : \"Saved\")}</span></div>`);\n\t\t\t$$renderer.push(`<!--]--></div></div> `);\n\t\t\tif (projectStore.saveError) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<p class=\"mt-4 rounded-md border border-red-200 bg-red-50 px-3 py-2 text-sm text-red-700\">${escape_html(projectStore.saveError)} <button type=\"button\" class=\"ml-2 underline\">dismiss</button></p>`);\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--></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\"><!--[-->`);\n\t\t\tconst each_array = ensure_array_like(PANELS);\n\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\tlet panel = each_array[$$index];\n\t\t\t\t$$renderer.push(`<button type=\"button\"${attr_class(`rounded-md px-3 py-1.5 text-sm font-medium transition ${projectStore.activePanel === panel.id ? \"bg-slate-900 text-white shadow-sm\" : \"text-slate-600 hover:bg-slate-100 hover:text-slate-950\"}`)}>${escape_html(panel.label)} <span${attr_class(`ml-1 rounded bg-white/80 px-1.5 py-0.5 text-xs ${projectStore.activePanel === panel.id ? \"text-brand-900\" : \"text-slate-600\"}`)}>${escape_html(panelCount(panel.id))}</span></button>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></nav></div> `);\n\t\t\tif (projectStore.activePanel !== \"features\" && projectStore.activePanel !== \"queue\" && projectStore.activePanel !== \"history\") {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<div class=\"mb-5 flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between\"><input type=\"search\"${attr(\"placeholder\", `Search ${projectStore.activePanel}...`)}${attr(\"value\", projectStore.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\">${escape_html(panelCount(projectStore.activePanel))} ${escape_html(projectStore.activePanel)} in this project</p></div>`);\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\tif (projectFeaturesStore.loading) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<p class=\"text-sm text-slate-500\">Loading features...</p>`);\n\t\t\t} else {\n\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!---->`);\n\t\t\t\t$$renderer.push(`<div class=\"motion-reduce:animate-none! motion-reduce:opacity-100!\">`);\n\t\t\t\tif (projectStore.activePanel === \"features\") {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\tProjectFeaturesPanel($$renderer, {\n\t\t\t\t\t\tfeatures: projectFeaturesStore.features,\n\t\t\t\t\t\tsearch: projectStore.search,\n\t\t\t\t\t\tonSearch: (query) => projectStore.setSearch(query),\n\t\t\t\t\t\tonCreate: handleCreateFeature,\n\t\t\t\t\t\tonAddTag: handleAddFeatureTag,\n\t\t\t\t\t\tonRemoveTag: handleRemoveFeatureTag,\n\t\t\t\t\t\tonRemove: handleRemoveFeature\n\t\t\t\t\t});\n\t\t\t\t} else if (projectStore.activePanel === \"queue\") {\n\t\t\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t\t\tQueuePanel($$renderer, {});\n\t\t\t\t} else if (projectStore.activePanel === \"resources\") {\n\t\t\t\t\t$$renderer.push(\"<!--[2-->\");\n\t\t\t\t\tProjectResourcesPanel($$renderer, {\n\t\t\t\t\t\tfeatures: projectFeaturesStore.features,\n\t\t\t\t\t\tsearch: projectStore.search\n\t\t\t\t\t});\n\t\t\t\t} else if (projectStore.activePanel === \"data\") {\n\t\t\t\t\t$$renderer.push(\"<!--[3-->\");\n\t\t\t\t\tProjectEntitiesPanel($$renderer, {\n\t\t\t\t\t\tfeatures: projectFeaturesStore.features,\n\t\t\t\t\t\tsearch: projectStore.search\n\t\t\t\t\t});\n\t\t\t\t} else if (projectStore.activePanel === \"events\") {\n\t\t\t\t\t$$renderer.push(\"<!--[4-->\");\n\t\t\t\t\tProjectEventsPanel($$renderer, {\n\t\t\t\t\t\tfeatures: projectFeaturesStore.features,\n\t\t\t\t\t\tsearch: projectStore.search\n\t\t\t\t\t});\n\t\t\t\t} else if (projectStore.activePanel === \"transitions\") {\n\t\t\t\t\t$$renderer.push(\"<!--[5-->\");\n\t\t\t\t\tProjectTransitionsPanel($$renderer, {\n\t\t\t\t\t\tfeatures: projectFeaturesStore.features,\n\t\t\t\t\t\tsearch: projectStore.search\n\t\t\t\t\t});\n\t\t\t\t} else if (projectStore.activePanel === \"history\") {\n\t\t\t\t\t$$renderer.push(\"<!--[6-->\");\n\t\t\t\t\tProjectHistoryPanel($$renderer, {});\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t\t\t$$renderer.push(`<!---->`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]-->`);\n\t});\n}\n//#endregion\n//#region src/routes/projects/[id]/+page.svelte\nfunction _page($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tvar $$store_subs;\n\t\tlet unsubscribeSync = null;\n\t\tonDestroy(() => {\n\t\t\tunsubscribeSync?.();\n\t\t\tunsubscribeSync = null;\n\t\t\tprojectStore.reset();\n\t\t\tprojectFeaturesStore.reset();\n\t\t});\n\t\thead(\"ffmenf\", $$renderer, ($$renderer) => {\n\t\t\t$$renderer.title(($$renderer) => {\n\t\t\t\t$$renderer.push(`<title>Project / Unspaghettit</title>`);\n\t\t\t});\n\t\t});\n\t\tif (projectStore.loading) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<p class=\"mx-auto max-w-7xl px-4 py-10 text-sm text-neutral-500\">Loading project…</p>`);\n\t\t} else if (projectStore.error) {\n\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t$$renderer.push(`<p class=\"mx-auto max-w-7xl px-4 py-10 text-sm text-red-600\">${escape_html(projectStore.error)}</p>`);\n\t\t} else if (!projectStore.project) {\n\t\t\t$$renderer.push(\"<!--[2-->\");\n\t\t\t$$renderer.push(`<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>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\tProjectEditor($$renderer, {});\n\t\t}\n\t\t$$renderer.push(`<!--]-->`);\n\t\tif ($$store_subs) unsubscribe_stores($$store_subs);\n\t});\n}\n//#endregion\nexport { _page as default };\n"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  import { A as head, W as onDestroy, r as ensure_array_like, i as attr_style, t as escape_html, h as attr_class, l as clsx$1, g as attr, a6 as stringify, q as derived } from './index-server-7H0jzj0M.js';
2
2
  import { x as humanizeTagText, X as tagKey, Y as tagLabel } from './TagPalette-CtMNYCmu.js';
3
- import './client-DfpLcAZ9.js';
4
- import { b as builderModeStore } from './builderModeStore.svelte-ihupr-3p.js';
5
- import './internal-BPKrFkK1.js';
3
+ import { a as afterNavigate } from './client-DeX3TC3s.js';
4
+ import { p as page } from './state-DBjl9lhV.js';
5
+ import { b as builderModeStore } from './builderModeStore.svelte-BpRIU_zP.js';
6
+ import './internal-KYK0WpL7.js';
6
7
  import './index-DBqjc0Yf.js';
7
8
  import './ids-t7Gjdj0M.js';
8
9
  import './browserContainer-CNX7ANld.js';
@@ -25,7 +26,8 @@ function ClampedDescription($$renderer, $$props) {
25
26
  var nextDatalistSerial = 0;
26
27
  function BuilderTagChips($$renderer, $$props) {
27
28
  $$renderer.component(($$renderer) => {
28
- let { tags, onToggle, isActive, onAdd, onRemove, onRename, typeOptions = [], class: className = "" } = $$props;
29
+ let { tags, onToggle, isActive, onAdd, onRemove, onRename, typeOptions = [], collapsible = false, class: className = "" } = $$props;
30
+ let expanded = false;
29
31
  const datalistId = `buildertags-types-${++nextDatalistSerial}`;
30
32
  const SLATE = "#64748b";
31
33
  const chipStyle = (color, active) => {
@@ -43,44 +45,59 @@ function BuilderTagChips($$renderer, $$props) {
43
45
  let editValue = "";
44
46
  if (tags.length > 0 || onAdd) {
45
47
  $$renderer.push("<!--[0-->");
46
- $$renderer.push(`<div${attr_class(clsx$1(className))}><div class="flex flex-wrap items-center gap-1.5"><!--[-->`);
47
- const each_array = ensure_array_like(tags);
48
- for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
49
- let tag = each_array[$$index];
50
- if (editingKey === tagKey(tag)) {
48
+ $$renderer.push(`<div${attr_class(clsx$1(className))}><div class="flex flex-wrap items-center gap-1.5">`);
49
+ if (collapsible) {
50
+ $$renderer.push("<!--[0-->");
51
+ $$renderer.push(`<button type="button"${attr_class(`inline-flex shrink-0 items-center gap-1 rounded-full px-1.5 py-0.5 text-[10px] font-medium text-slate-400 transition hover:text-brand-300 `)}${attr("aria-expanded", expanded)}${attr("aria-label", "Show tags")}${attr("title", tags.length > 0 ? `Show ${tags.length} tag${tags.length === 1 ? "" : "s"}` : "Add a tag")}><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" class="size-3.5" aria-hidden="true"><path d="M20.59 13.41 11 3.83A2 2 0 0 0 9.59 3H4a1 1 0 0 0-1 1v5.59A2 2 0 0 0 3.59 11l9.58 9.59a2 2 0 0 0 2.83 0l4.59-4.59a2 2 0 0 0 0-2.83z"></path><circle cx="7.5" cy="7.5" r="1.1" fill="currentColor" stroke="none"></circle></svg> `);
52
+ if (tags.length > 0) {
51
53
  $$renderer.push("<!--[0-->");
52
- $$renderer.push(`<form class="inline-flex items-center gap-1"><input${attr("value", editType)}${attr("list", typeOptions.length > 0 ? datalistId : void 0)} placeholder="Type" class="h-6 w-16 rounded border border-slate-700 bg-slate-900/70 px-1.5 text-[11px] text-slate-200 outline-none focus:border-brand-500"/> <input${attr("value", editValue)} placeholder="Value" class="h-6 w-20 rounded border border-slate-700 bg-slate-900/70 px-1.5 text-[11px] text-slate-200 outline-none focus:border-brand-500"/> <button type="submit" class="text-[11px] font-semibold text-brand-300 hover:text-brand-200" title="Rename everywhere">✓</button> <button type="button" class="text-[11px] text-slate-500 hover:text-slate-300" title="Cancel">✕</button></form>`);
53
- } else {
54
- $$renderer.push("<!--[-1-->");
55
- const color = builderModeStore.colorForTag(tag);
56
- const active = isActive?.(tag) ?? false;
57
- $$renderer.push(`<span class="group/chip inline-flex max-w-full items-center gap-1 rounded-full py-0.5 pl-2 pr-1.5 text-[10px] font-medium transition"${attr_style(chipStyle(color, active))}><span class="size-1.5 shrink-0 rounded-full"${attr_style(`background-color: ${stringify(color ?? SLATE)}`)}></span> `);
58
- if (onToggle) {
54
+ $$renderer.push(`<span>${escape_html(tags.length)}</span>`);
55
+ } else $$renderer.push("<!--[-1-->");
56
+ $$renderer.push(`<!--]--></button>`);
57
+ } else $$renderer.push("<!--[-1-->");
58
+ $$renderer.push(`<!--]--> `);
59
+ if (!collapsible || expanded) {
60
+ $$renderer.push("<!--[0-->");
61
+ $$renderer.push(`<!--[-->`);
62
+ const each_array = ensure_array_like(tags);
63
+ for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
64
+ let tag = each_array[$$index];
65
+ if (editingKey === tagKey(tag)) {
59
66
  $$renderer.push("<!--[0-->");
60
- $$renderer.push(`<button type="button" class="truncate"${attr("aria-pressed", active)}${attr("title", `${tagLabel(tag)} click to filter`)}>${escape_html(humanizeTagText(tag.value))}</button>`);
67
+ $$renderer.push(`<form class="inline-flex items-center gap-1"><input${attr("value", editType)}${attr("list", typeOptions.length > 0 ? datalistId : void 0)} placeholder="Type" class="h-6 w-16 rounded border border-slate-700 bg-slate-900/70 px-1.5 text-[11px] text-slate-200 outline-none focus:border-brand-500"/> <input${attr("value", editValue)} placeholder="Value" class="h-6 w-20 rounded border border-slate-700 bg-slate-900/70 px-1.5 text-[11px] text-slate-200 outline-none focus:border-brand-500"/> <button type="submit" class="text-[11px] font-semibold text-brand-300 hover:text-brand-200" title="Rename everywhere">✓</button> <button type="button" class="text-[11px] text-slate-500 hover:text-slate-300" title="Cancel">✕</button></form>`);
61
68
  } else {
62
69
  $$renderer.push("<!--[-1-->");
63
- $$renderer.push(`<span class="truncate"${attr("title", tagLabel(tag))}>${escape_html(humanizeTagText(tag.value))}</span>`);
70
+ const color = builderModeStore.colorForTag(tag);
71
+ const active = isActive?.(tag) ?? false;
72
+ $$renderer.push(`<span class="group/chip inline-flex max-w-full items-center gap-1 rounded-full py-0.5 pl-2 pr-1.5 text-[10px] font-medium transition"${attr_style(chipStyle(color, active))}><span class="size-1.5 shrink-0 rounded-full"${attr_style(`background-color: ${stringify(color ?? SLATE)}`)}></span> `);
73
+ if (onToggle) {
74
+ $$renderer.push("<!--[0-->");
75
+ $$renderer.push(`<button type="button" class="truncate"${attr("aria-pressed", active)}${attr("title", `${tagLabel(tag)} — click to filter`)}>${escape_html(humanizeTagText(tag.value))}</button>`);
76
+ } else {
77
+ $$renderer.push("<!--[-1-->");
78
+ $$renderer.push(`<span class="truncate"${attr("title", tagLabel(tag))}>${escape_html(humanizeTagText(tag.value))}</span>`);
79
+ }
80
+ $$renderer.push(`<!--]--> `);
81
+ if (onRename) {
82
+ $$renderer.push("<!--[0-->");
83
+ $$renderer.push(`<button type="button" class="shrink-0 opacity-0 transition group-hover/chip:opacity-70 hover:opacity-100!"${attr("aria-label", `Rename ${tagLabel(tag)}`)} title="Rename (applies everywhere)">✎</button>`);
84
+ } else $$renderer.push("<!--[-1-->");
85
+ $$renderer.push(`<!--]--> `);
86
+ if (onRemove) {
87
+ $$renderer.push("<!--[0-->");
88
+ $$renderer.push(`<button type="button" class="shrink-0 opacity-0 transition group-hover/chip:opacity-70 hover:opacity-100!"${attr("aria-label", `Remove ${tagLabel(tag)}`)} title="Remove from this item">✕</button>`);
89
+ } else $$renderer.push("<!--[-1-->");
90
+ $$renderer.push(`<!--]--></span>`);
64
91
  }
65
- $$renderer.push(`<!--]--> `);
66
- if (onRename) {
67
- $$renderer.push("<!--[0-->");
68
- $$renderer.push(`<button type="button" class="shrink-0 opacity-0 transition group-hover/chip:opacity-70 hover:opacity-100!"${attr("aria-label", `Rename ${tagLabel(tag)}`)} title="Rename (applies everywhere)">✎</button>`);
69
- } else $$renderer.push("<!--[-1-->");
70
- $$renderer.push(`<!--]--> `);
71
- if (onRemove) {
72
- $$renderer.push("<!--[0-->");
73
- $$renderer.push(`<button type="button" class="shrink-0 opacity-0 transition group-hover/chip:opacity-70 hover:opacity-100!"${attr("aria-label", `Remove ${tagLabel(tag)}`)} title="Remove from this item">✕</button>`);
74
- } else $$renderer.push("<!--[-1-->");
75
- $$renderer.push(`<!--]--></span>`);
92
+ $$renderer.push(`<!--]-->`);
76
93
  }
77
- $$renderer.push(`<!--]-->`);
78
- }
79
- $$renderer.push(`<!--]--> `);
80
- if (onAdd) {
81
- $$renderer.push("<!--[0-->");
82
- $$renderer.push("<!--[-1-->");
83
- $$renderer.push(`<button type="button" class="size-5 items-center justify-center rounded-full border border-dashed border-slate-600 text-[11px] leading-none text-slate-400 transition hover:border-brand-500 hover:text-brand-300 hidden group-hover:inline-flex group-focus-within:inline-flex" aria-label="Add tag" title="Add tag">+</button>`);
94
+ $$renderer.push(`<!--]--> `);
95
+ if (onAdd) {
96
+ $$renderer.push("<!--[0-->");
97
+ $$renderer.push("<!--[-1-->");
98
+ $$renderer.push(`<button type="button" class="size-5 items-center justify-center rounded-full border border-dashed border-slate-600 text-[11px] leading-none text-slate-400 transition hover:border-brand-500 hover:text-brand-300 hidden group-hover:inline-flex group-focus-within:inline-flex" aria-label="Add tag" title="Add tag">+</button>`);
99
+ $$renderer.push(`<!--]-->`);
100
+ } else $$renderer.push("<!--[-1-->");
84
101
  $$renderer.push(`<!--]-->`);
85
102
  } else $$renderer.push("<!--[-1-->");
86
103
  $$renderer.push(`<!--]--> `);
@@ -156,9 +173,17 @@ function BuilderModeDashboard($$renderer, $$props) {
156
173
  let promptStuck = false;
157
174
  const skeletonSlots = Array.from({ length: 8 }, (_, i) => i);
158
175
  let unsubscribeSync = null;
176
+ let unregisterViewLink = null;
177
+ afterNavigate((nav) => {
178
+ if (!nav.from) return;
179
+ const params = page.url.searchParams;
180
+ builderModeStore.applySelection(params.get("project"), params.get("core"));
181
+ });
159
182
  onDestroy(() => {
160
183
  unsubscribeSync?.();
161
184
  unsubscribeSync = null;
185
+ unregisterViewLink?.();
186
+ unregisterViewLink = null;
162
187
  });
163
188
  function projectFeatureCount(project) {
164
189
  return project.coreFeatures.reduce((total, coreFeature) => total + coreFeature.features.length, 0);
@@ -231,7 +256,7 @@ function BuilderModeDashboard($$renderer, $$props) {
231
256
  } else if (builderModeStore.selectedProject) {
232
257
  $$renderer.push("<!--[4-->");
233
258
  const selectedProject = builderModeStore.selectedProject;
234
- $$renderer.push(`<div class="space-y-6 svelte-xw1ck7"><button type="button"${attr_class(clsx$1(ghostPill), "svelte-xw1ck7")}>← All projects (${escape_html(builderModeStore.dashboard.projects.length)})</button> <section class="overflow-hidden rounded-2xl border border-slate-700/60 bg-linear-to-b from-slate-800/45 to-slate-900 shadow-xl shadow-black/20 svelte-xw1ck7"><div class="flex flex-col gap-5 p-6 lg:flex-row lg:items-start lg:justify-between svelte-xw1ck7"><div class="min-w-0 svelte-xw1ck7"><div class="flex items-center gap-3 svelte-xw1ck7"><h2 class="truncate text-2xl font-semibold tracking-tight text-white svelte-xw1ck7">${escape_html(selectedProject.name)}</h2> <span class="project-card__count shrink-0 svelte-xw1ck7">${escape_html(selectedProject.coreFeatures.length)} core / ${escape_html(projectFeatureCount(selectedProject))} feat</span></div> <p class="mt-2 max-w-3xl text-sm leading-6 text-slate-400 svelte-xw1ck7">${escape_html(selectedProject.description)}</p></div> <div class="flex shrink-0 items-center gap-6 svelte-xw1ck7">`);
259
+ $$renderer.push(`<div class="space-y-6 svelte-xw1ck7"><button type="button"${attr_class(clsx$1(ghostPill), "svelte-xw1ck7")}>← All projects (${escape_html(builderModeStore.projectCount)})</button> <section class="overflow-hidden rounded-2xl border border-slate-700/60 bg-linear-to-b from-slate-800/45 to-slate-900 shadow-xl shadow-black/20 svelte-xw1ck7"><div class="flex flex-col gap-5 p-6 lg:flex-row lg:items-start lg:justify-between svelte-xw1ck7"><div class="min-w-0 svelte-xw1ck7"><div class="flex items-center gap-3 svelte-xw1ck7"><h2 class="truncate text-2xl font-semibold tracking-tight text-white svelte-xw1ck7">${escape_html(selectedProject.name)}</h2> <span class="project-card__count shrink-0 svelte-xw1ck7">${escape_html(selectedProject.coreFeatures.length)} core / ${escape_html(projectFeatureCount(selectedProject))} feat</span></div> <p class="mt-2 max-w-3xl text-sm leading-6 text-slate-400 svelte-xw1ck7">${escape_html(selectedProject.description)}</p></div> <div class="flex shrink-0 items-center gap-6 svelte-xw1ck7">`);
235
260
  GameScore($$renderer, {
236
261
  label: "Maturity",
237
262
  value: selectedProject.maturityPercentage
@@ -289,6 +314,7 @@ function BuilderModeDashboard($$renderer, $$props) {
289
314
  onRemove: (tag) => builderModeStore.removeCoreFeatureTag(coreFeature.id, tag),
290
315
  onRename: (from, to) => builderModeStore.renameTag(from, to),
291
316
  typeOptions: builderModeStore.allTagTypes,
317
+ collapsible: true,
292
318
  class: "relative z-20 mt-2"
293
319
  });
294
320
  $$renderer.push(`<!----></div> <div class="flex shrink-0 items-center gap-4 svelte-xw1ck7">`);
@@ -336,11 +362,17 @@ function BuilderModeDashboard($$renderer, $$props) {
336
362
  } else {
337
363
  $$renderer.push("<!--[-1-->");
338
364
  const coreFeatureId = builderModeStore.selectedCoreFeature.id;
339
- $$renderer.push(`<div class="space-y-3 svelte-xw1ck7"><!--[-->`);
340
- const each_array_4 = ensure_array_like(builderModeStore.visibleSelectedFeatures);
341
- for (let i = 0, $$length = each_array_4.length; i < $$length; i++) {
342
- let feature = each_array_4[i];
343
- FeatureCard($$renderer, coreFeatureId, feature);
365
+ $$renderer.push(`<div class="space-y-4 svelte-xw1ck7"><!--[-->`);
366
+ const each_array_4 = ensure_array_like(builderModeStore.visibleSelectedSurfaces);
367
+ for (let $$index_3 = 0, $$length = each_array_4.length; $$index_3 < $$length; $$index_3++) {
368
+ let surface = each_array_4[$$index_3];
369
+ $$renderer.push(`<div class="space-y-2 svelte-xw1ck7"><div class="flex items-center gap-2 px-1 pt-1 svelte-xw1ck7"><span class="text-[11px] font-semibold uppercase tracking-wide text-slate-500 svelte-xw1ck7">${escape_html(surface.surfaceName)}</span> <span class="h-px flex-1 bg-slate-800 svelte-xw1ck7" aria-hidden="true"></span> <span class="text-[10px] tabular-nums text-slate-600 svelte-xw1ck7">${escape_html(surface.features.length)}</span></div> <!--[-->`);
370
+ const each_array_5 = ensure_array_like(surface.features);
371
+ for (let i = 0, $$length = each_array_5.length; i < $$length; i++) {
372
+ let feature = each_array_5[i];
373
+ FeatureCard($$renderer, coreFeatureId, feature);
374
+ }
375
+ $$renderer.push(`<!--]--></div>`);
344
376
  }
345
377
  $$renderer.push(`<!--]--></div>`);
346
378
  }
@@ -349,10 +381,10 @@ function BuilderModeDashboard($$renderer, $$props) {
349
381
  $$renderer.push("<!--[-1-->");
350
382
  $$renderer.push(`<section class="svelte-xw1ck7"><div class="mb-4 flex items-end justify-between gap-3 svelte-xw1ck7"><div class="svelte-xw1ck7"><h2 class="text-base font-semibold text-white svelte-xw1ck7">Projects</h2> <p class="text-sm text-slate-500 svelte-xw1ck7">Pick a project to open its build map and queue.</p></div> <div class="flex shrink-0 items-center gap-3 svelte-xw1ck7">`);
351
383
  ActiveTagFilter($$renderer);
352
- $$renderer.push(`<!----> <p class="text-xs text-slate-500 svelte-xw1ck7">${escape_html(builderModeStore.filteredProjects.length)}${escape_html(builderModeStore.searchActive || builderModeStore.tagActive ? ` of ${builderModeStore.dashboard.projects.length}` : " total")}</p></div></div> <ul class="grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 svelte-xw1ck7"><!--[-->`);
353
- const each_array_5 = ensure_array_like(builderModeStore.filteredProjects);
354
- for (let i = 0, $$length = each_array_5.length; i < $$length; i++) {
355
- let project = each_array_5[i];
384
+ $$renderer.push(`<!----> <p class="text-xs text-slate-500 svelte-xw1ck7">${escape_html(builderModeStore.filteredProjects.length)}${escape_html(builderModeStore.searchActive || builderModeStore.tagActive ? ` of ${builderModeStore.projectCount}` : " total")}</p></div></div> <ul class="grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 svelte-xw1ck7"><!--[-->`);
385
+ const each_array_6 = ensure_array_like(builderModeStore.filteredProjects);
386
+ for (let i = 0, $$length = each_array_6.length; i < $$length; i++) {
387
+ let project = each_array_6[i];
356
388
  $$renderer.push(`<li class="project-card-shell svelte-xw1ck7"><article class="project-card group relative h-full min-h-44 overflow-hidden svelte-xw1ck7"><button type="button" class="absolute inset-0 z-10 rounded-xl focus:outline-none focus-visible:ring-2 focus-visible:ring-brand-500/50 svelte-xw1ck7"${attr("aria-label", `Open ${project.name}`)}></button> <div class="project-card__button flex h-full w-full flex-col justify-between p-5 text-left svelte-xw1ck7"><div class="project-card__top space-y-2 svelte-xw1ck7"><div class="flex items-start justify-between gap-3 svelte-xw1ck7"><h3 class="min-w-0 truncate text-base font-semibold text-white svelte-xw1ck7">${escape_html(project.name)}</h3> <span class="project-card__count shrink-0 svelte-xw1ck7">${escape_html(project.coreFeatures.length)} core / ${escape_html(projectFeatureCount(project))} feat</span></div> `);
357
389
  BuilderTagChips($$renderer, {
358
390
  tags: project.tags,
@@ -365,6 +397,7 @@ function BuilderModeDashboard($$renderer, $$props) {
365
397
  onRemove: (tag) => builderModeStore.removeProjectTag(project.id, tag),
366
398
  onRename: (from, to) => builderModeStore.renameTag(from, to),
367
399
  typeOptions: builderModeStore.allTagTypes,
400
+ collapsible: true,
368
401
  class: "relative z-20"
369
402
  });
370
403
  $$renderer.push(`<!----></div> <div class="project-card__scores mt-5 flex items-center justify-center gap-10 pt-5 svelte-xw1ck7">`);
@@ -379,6 +412,17 @@ function BuilderModeDashboard($$renderer, $$props) {
379
412
  });
380
413
  $$renderer.push(`<!----></div></div></article></li>`);
381
414
  }
415
+ $$renderer.push(`<!--]--> `);
416
+ if (builderModeStore.pendingProjectCount > 0 && !builderModeStore.searchActive && !builderModeStore.tagActive) {
417
+ $$renderer.push("<!--[0-->");
418
+ $$renderer.push(`<!--[-->`);
419
+ const each_array_7 = ensure_array_like(Array.from({ length: builderModeStore.pendingProjectCount }));
420
+ for (let i = 0, $$length = each_array_7.length; i < $$length; i++) {
421
+ each_array_7[i];
422
+ $$renderer.push(`<li class="builder-skeleton__card svelte-xw1ck7" aria-hidden="true"><div class="flex items-center justify-between gap-3 svelte-xw1ck7"><span class="builder-skeleton__shape h-2.5 w-3/5 rounded-full svelte-xw1ck7"></span> <span class="builder-skeleton__shape h-4 w-14 rounded-full svelte-xw1ck7"></span></div> <div class="flex justify-center gap-10 pt-5 svelte-xw1ck7"><span class="builder-skeleton__shape size-11 rounded-full svelte-xw1ck7"></span> <span class="builder-skeleton__shape size-11 rounded-full svelte-xw1ck7"></span></div></li>`);
423
+ }
424
+ $$renderer.push(`<!--]-->`);
425
+ } else $$renderer.push("<!--[-1-->");
382
426
  $$renderer.push(`<!--]--></ul></section>`);
383
427
  }
384
428
  $$renderer.push(`<!--]--></div></div> `);
@@ -401,4 +445,4 @@ function _page($$renderer) {
401
445
  }
402
446
 
403
447
  export { _page as default };
404
- //# sourceMappingURL=_page.svelte-BqSC-1vK.js.map
448
+ //# sourceMappingURL=_page.svelte-Caq7J0jU.js.map