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
@@ -1 +0,0 @@
1
- {"version":3,"file":"_page.svelte-Zf9H4KOP.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 { t 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 emit } from \"../../../../chunks/eventBus.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 { a as getEffectiveEntities, r as buildEventCatalog, t as buildTransitionCatalog } from \"../../../../chunks/TransitionCatalog.js\";\nimport { n as reconcileInPlace, r as getRoomClient } from \"../../../../chunks/reconcile.js\";\n//#region src/features/projects/presentation/stores/projectStore.svelte.ts\nvar ProjectStore = class {\n\tloading = true;\n\tproject = null;\n\t#id = derived(() => this.project ? String(this.project.id) : \"\");\n\tget id() {\n\t\treturn this.#id();\n\t}\n\tset id($$value) {\n\t\treturn this.#id($$value);\n\t}\n\t#name = derived(() => this.project?.name ?? \"\");\n\tget name() {\n\t\treturn this.#name();\n\t}\n\tset name($$value) {\n\t\treturn this.#name($$value);\n\t}\n\t#featureIds = derived(() => this.project ? this.project.featureIds.map(String) : []);\n\tget featureIds() {\n\t\treturn this.#featureIds();\n\t}\n\tset featureIds($$value) {\n\t\treturn this.#featureIds($$value);\n\t}\n\terror = null;\n\tsaveError = null;\n\tsaving = false;\n\tdirty = false;\n\tlastSavedAt = \"\";\n\tactivePanel = \"features\";\n\tselectedFeatureId = \"\";\n\tsearch = \"\";\n\thistoryEntries = [];\n\thistoryCursor = -1;\n\tcurrentId = null;\n\tclient = null;\n\tclientUnsubscribe = null;\n\thistoryUnsubscribe = null;\n\tasync load(id) {\n\t\ttry {\n\t\t\tthis.loading = true;\n\t\t\tthis.error = null;\n\t\t\tthis.currentId = id;\n\t\t\tconst fresh = await (await getBrowserContainer()).useCases.getProject(id);\n\t\t\tthis.project = fresh;\n\t\t\tthis.dirty = false;\n\t\t\tthis.lastSavedAt = fresh?.updatedAt ?? \"\";\n\t\t\tthis.subscribeRoom(id);\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\tsetActivePanel(panel) {\n\t\tthis.activePanel = panel;\n\t\temit(\"project.panel_switched\", { panel });\n\t}\n\tsetSearch(query) {\n\t\tthis.search = query;\n\t\temit(\"project.editor_search_updated\", { query });\n\t}\n\tsetSelectedFeature(id) {\n\t\tthis.selectedFeatureId = id;\n\t\tif (id) emit(\"project.feature_opened\", { featureId: id });\n\t}\n\tasync addFeature(featureId) {\n\t\tif (!this.project || !this.currentId) return;\n\t\tthis.saving = true;\n\t\tthis.saveError = null;\n\t\ttry {\n\t\t\tconst next = await (await getBrowserContainer()).useCases.addFeatureToProject(this.currentId, featureId);\n\t\t\tthis.applyProject(next);\n\t\t\temit(\"project.feature_added\", {\n\t\t\t\tprojectId: String(this.currentId),\n\t\t\t\tfeatureId: String(featureId)\n\t\t\t});\n\t\t} catch (e) {\n\t\t\tthis.saveError = e.message;\n\t\t} finally {\n\t\t\tthis.saving = false;\n\t\t}\n\t}\n\tasync removeFeature(featureId) {\n\t\tif (!this.project || !this.currentId) return;\n\t\tthis.saving = true;\n\t\tthis.saveError = null;\n\t\ttry {\n\t\t\tconst next = await (await getBrowserContainer()).useCases.removeFeatureFromProject(this.currentId, featureId);\n\t\t\tthis.applyProject(next);\n\t\t\temit(\"project.feature_removed\", {\n\t\t\t\tprojectId: String(this.currentId),\n\t\t\t\tfeatureId: String(featureId)\n\t\t\t});\n\t\t} catch (e) {\n\t\t\tthis.saveError = e.message;\n\t\t} finally {\n\t\t\tthis.saving = false;\n\t\t}\n\t}\n\tasync rename(name) {\n\t\tif (!this.project) return;\n\t\tthis.saving = true;\n\t\tthis.saveError = null;\n\t\ttry {\n\t\t\tconst next = await (await getBrowserContainer()).useCases.saveProject({\n\t\t\t\t...this.project,\n\t\t\t\tname: name.trim()\n\t\t\t});\n\t\t\tthis.applyProject(next);\n\t\t} catch (e) {\n\t\t\tthis.saveError = e.message;\n\t\t} finally {\n\t\t\tthis.saving = false;\n\t\t}\n\t}\n\tasync updateMetadata(name, description) {\n\t\tif (!this.project) return;\n\t\tconst trimmedName = name.trim();\n\t\tif (trimmedName.length === 0) return;\n\t\tthis.saving = true;\n\t\tthis.saveError = null;\n\t\ttry {\n\t\t\tconst container = await getBrowserContainer();\n\t\t\tconst trimmedDescription = description.trim();\n\t\t\tconst next = await container.useCases.saveProject({\n\t\t\t\t...this.project,\n\t\t\t\tname: trimmedName,\n\t\t\t\tdescription: trimmedDescription.length > 0 ? trimmedDescription : void 0\n\t\t\t});\n\t\t\tthis.applyProject(next);\n\t\t\temit(\"project.saved\", {\n\t\t\t\tid: String(next.id),\n\t\t\t\tname: next.name\n\t\t\t});\n\t\t} catch (e) {\n\t\t\tthis.saveError = e.message;\n\t\t} finally {\n\t\t\tthis.saving = false;\n\t\t}\n\t}\n\tasync setDescription(description) {\n\t\tif (!this.project) return;\n\t\tthis.saving = true;\n\t\tthis.saveError = null;\n\t\ttry {\n\t\t\tconst container = await getBrowserContainer();\n\t\t\tconst trimmed = description.trim();\n\t\t\tconst next = await container.useCases.saveProject({\n\t\t\t\t...this.project,\n\t\t\t\tdescription: trimmed.length > 0 ? trimmed : void 0\n\t\t\t});\n\t\t\tthis.applyProject(next);\n\t\t} catch (e) {\n\t\t\tthis.saveError = e.message;\n\t\t} finally {\n\t\t\tthis.saving = false;\n\t\t}\n\t}\n\tdismissSaveError() {\n\t\tthis.saveError = null;\n\t}\n\treset() {\n\t\tif (this.clientUnsubscribe) {\n\t\t\tthis.clientUnsubscribe();\n\t\t\tthis.clientUnsubscribe = null;\n\t\t}\n\t\tif (this.historyUnsubscribe) {\n\t\t\tthis.historyUnsubscribe();\n\t\t\tthis.historyUnsubscribe = null;\n\t\t}\n\t\tthis.client = null;\n\t\tthis.currentId = null;\n\t\tthis.project = null;\n\t\tthis.historyEntries = [];\n\t\tthis.historyCursor = -1;\n\t\tthis.error = null;\n\t\tthis.saveError = null;\n\t\tthis.loading = true;\n\t\tthis.saving = false;\n\t\tthis.dirty = false;\n\t\tthis.lastSavedAt = \"\";\n\t\tthis.activePanel = \"features\";\n\t\tthis.selectedFeatureId = \"\";\n\t\tthis.search = \"\";\n\t}\n\tapplyProject(next) {\n\t\tif (this.project) reconcileInPlace(this.project, next);\n\t\telse this.project = next;\n\t\tthis.dirty = false;\n\t\tthis.lastSavedAt = next.updatedAt;\n\t}\n\tsubscribeRoom(id) {\n\t\tif (this.clientUnsubscribe) {\n\t\t\tthis.clientUnsubscribe();\n\t\t\tthis.clientUnsubscribe = null;\n\t\t}\n\t\tif (this.historyUnsubscribe) {\n\t\t\tthis.historyUnsubscribe();\n\t\t\tthis.historyUnsubscribe = null;\n\t\t}\n\t\tconst client = getRoomClient(\"project\", id);\n\t\tthis.client = client;\n\t\tthis.clientUnsubscribe = client.observe((next, origin) => {\n\t\t\tif (origin === \"local\") return;\n\t\t\tif (!next) return;\n\t\t\tif (this.currentId !== id) return;\n\t\t\tif (this.project) reconcileInPlace(this.project, next);\n\t\t\telse this.project = next;\n\t\t\tthis.lastSavedAt = next.updatedAt;\n\t\t});\n\t\tthis.historyEntries = client.history.entries;\n\t\tthis.historyCursor = client.history.cursor;\n\t\tthis.historyUnsubscribe = client.observeHistory((view) => {\n\t\t\tif (this.currentId !== id) return;\n\t\t\tthis.historyEntries = view.entries;\n\t\t\tthis.historyCursor = view.cursor;\n\t\t});\n\t}\n};\nvar projectStore = new ProjectStore();\n//#endregion\n//#region src/features/projects/presentation/stores/projectFeaturesStore.svelte.ts\nvar ProjectFeaturesStore = class {\n\tloading = false;\n\tfeatures = [];\n\tallSummaries = [];\n\terror = null;\n\tasync load(featureIds) {\n\t\tthis.loading = true;\n\t\tthis.error = null;\n\t\ttry {\n\t\t\tconst container = await getBrowserContainer();\n\t\t\tconst fetched = await Promise.all(featureIds.map((id) => container.useCases.getFeature(id)));\n\t\t\tthis.features = fetched.filter((e) => e !== null);\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/**\n\t* Bring `features[]` in line with the project's current featureIds[]\n\t* without toggling `loading`. Existing features keep their reference\n\t* (Svelte sees no change → no DOM churn). Missing features get fetched\n\t* and merged in; removed ones are dropped. Out-of-band project edits\n\t* (MCP add_feature_to_project) flow through here, so the UI gets the\n\t* new card sliding into the existing list instead of a full redraw.\n\t*/\n\tasync syncWith(featureIds) {\n\t\tconst wanted = new Set(featureIds.map(String));\n\t\tconst have = new Map(this.features.map((f) => [String(f.id), f]));\n\t\tconst missing = featureIds.filter((id) => !have.has(String(id)));\n\t\tlet nextHave = have;\n\t\tif (missing.length > 0) try {\n\t\t\tconst container = await getBrowserContainer();\n\t\t\tconst fetched = await Promise.all(missing.map((id) => container.useCases.getFeature(id)));\n\t\t\tnextHave = new Map(have);\n\t\t\tfor (const f of fetched) if (f) nextHave.set(String(f.id), f);\n\t\t} catch (e) {\n\t\t\tthis.error = e.message;\n\t\t\treturn;\n\t\t}\n\t\tthis.features = featureIds.map((id) => nextHave.get(String(id))).filter((f) => f !== void 0 && wanted.has(String(f.id)));\n\t}\n\t/**\n\t* Re-fetch a single feature the user already owns. Mutates the array\n\t* in-place at its current index so the keyed `{#each}` re-uses the\n\t* existing DOM node — no flicker, scroll position preserved.\n\t*/\n\tasync refetchOne(featureId) {\n\t\ttry {\n\t\t\tconst fresh = await (await getBrowserContainer()).useCases.getFeature(featureId);\n\t\t\tconst idx = this.features.findIndex((f) => String(f.id) === String(featureId));\n\t\t\tif (!fresh) {\n\t\t\t\tif (idx >= 0) this.features = [...this.features.slice(0, idx), ...this.features.slice(idx + 1)];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (idx >= 0) this.features = [\n\t\t\t\t...this.features.slice(0, idx),\n\t\t\t\tfresh,\n\t\t\t\t...this.features.slice(idx + 1)\n\t\t\t];\n\t\t\telse this.features = [...this.features, fresh];\n\t\t} catch (e) {\n\t\t\tthis.error = e.message;\n\t\t}\n\t}\n\tasync loadAllSummaries() {\n\t\ttry {\n\t\t\tconst container = await getBrowserContainer();\n\t\t\tthis.allSummaries = [...await container.useCases.listFeatures()];\n\t\t} catch (e) {\n\t\t\tthis.error = e.message;\n\t\t}\n\t}\n\treset() {\n\t\tthis.features = [];\n\t\tthis.allSummaries = [];\n\t\tthis.loading = false;\n\t\tthis.error = null;\n\t}\n};\nvar projectFeaturesStore = new ProjectFeaturesStore();\n//#endregion\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> <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 +0,0 @@
1
- {"version":3,"file":"builderModeStore.svelte-ihupr-3p.js","sources":["../../../.svelte-kit/adapter-node/chunks/syncEvents.js","../../../.svelte-kit/adapter-node/chunks/builderModeStore.svelte.js"],"sourcesContent":["import \"./browserContainer.js\";\nvar subscribeSyncEvents = (fn) => {\n\treturn () => {};\n};\n//#endregion\nexport { subscribeSyncEvents as t };\n","import { l as derived } from \"./index-server.js\";\nimport { K as addTag, X as renameTagInList, Y as removeTag, Z as tagKey, _ as asFeatureId, f as queueItemKey, m as asActionId } from \"./TagPalette.js\";\nimport { t as asProjectId } from \"./ids.js\";\nimport { d as computeImplementationBreakdown, m as committedActions, p as scoreFeatureBreakdown, t as getBrowserContainer } from \"./browserContainer.js\";\nimport { t as subscribeSyncEvents } from \"./syncEvents.js\";\nimport { i as dismissActionEvolution, r as clearActionEvolution } from \"./FeatureTransforms.js\";\nimport { t as tagPaletteStore } from \"./tagPaletteStore.svelte.js\";\n//#region src/features/builder-mode/domain/BuilderModeDashboard.ts\nvar fallbackDescription = \"No description yet.\";\nvar average = (values) => values.length === 0 ? 0 : Math.round(values.reduce((total, value) => total + value, 0) / values.length);\nvar averageOptional = (values) => {\n\tconst known = values.filter((value) => value !== null);\n\treturn known.length === 0 ? null : average(known);\n};\n/**\n* Suggestions are NOT computed from maturity / implementation / the simulator.\n* They are the LLM-authored Evolutions on the feature — proposed improvements\n* the assistant raised against the product context (\"competitors offer SSO\",\n* \"harden the password reset\"). Each Evolution lives as an `evolution`-marked\n* skeleton Action; we read its name + rationale here. The deterministic numbers\n* still drive the Maturity / Built bars, but the *advice* is the model's.\n*/\nvar evolutionSuggestions = (feature) => {\n\tconst out = [];\n\tfor (const surface of feature.surfaces) for (const action of surface.actions) {\n\t\tconst evolution = action.evolution;\n\t\tif (!evolution || evolution.dismissed) continue;\n\t\tconst detail = evolution.source ? `${evolution.rationale} (${evolution.source})` : evolution.rationale;\n\t\tout.push({\n\t\t\tid: String(action.id),\n\t\t\ttone: evolution.category === \"security\" || evolution.category === \"compliance\" ? \"urgent\" : \"next\",\n\t\t\ttext: `${action.name}: ${detail}`\n\t\t});\n\t}\n\treturn out;\n};\nvar buildBuilderModeDashboard = (inputs) => ({ projects: inputs.map(({ project, coreFeatures }) => {\n\tconst mappedCoreFeatures = coreFeatures.map(({ feature, implementationStatus }) => {\n\t\tconst maturity = scoreFeatureBreakdown(feature);\n\t\tconst implementation = computeImplementationBreakdown(feature, implementationStatus);\n\t\tconst actionReports = /* @__PURE__ */ new Map();\n\t\tfor (const surface of maturity.perSurface) for (const entry of surface.perAction) actionReports.set(String(entry.action.id), entry.report);\n\t\tconst implementationByAction = new Map(implementation.perSurface.flatMap((surface) => surface.perAction.map((entry) => [String(entry.action.id), entry])));\n\t\tconst features = feature.surfaces.flatMap((surface) => committedActions(surface.actions).map((action) => {\n\t\t\tconst actionReport = actionReports.get(String(action.id));\n\t\t\tconst actionImplementation = implementationByAction.get(String(action.id));\n\t\t\tconst implementationPercentage = actionImplementation && actionImplementation.expectedCount > 0 ? actionImplementation.percentage : null;\n\t\t\treturn {\n\t\t\t\tid: String(action.id),\n\t\t\t\tname: action.name,\n\t\t\t\tdescription: action.intent || fallbackDescription,\n\t\t\t\tmaturityPercentage: actionReport?.percentage ?? 0,\n\t\t\t\timplementationPercentage,\n\t\t\t\tsuggestions: []\n\t\t\t};\n\t\t}));\n\t\tconst coreImplementationPercentage = implementation.expectedCount === 0 ? null : implementation.percentage;\n\t\treturn {\n\t\t\tid: String(feature.id),\n\t\t\tname: feature.name,\n\t\t\tdescription: feature.description || fallbackDescription,\n\t\t\tmaturityPercentage: maturity.global.percentage,\n\t\t\timplementationPercentage: coreImplementationPercentage,\n\t\t\ttags: feature.tags ?? [],\n\t\t\tsuggestions: evolutionSuggestions(feature),\n\t\t\tfeatures\n\t\t};\n\t});\n\treturn {\n\t\tid: String(project.id),\n\t\tname: project.name,\n\t\tdescription: project.description || fallbackDescription,\n\t\tmaturityPercentage: average(mappedCoreFeatures.map((feature) => feature.maturityPercentage)),\n\t\timplementationPercentage: averageOptional(mappedCoreFeatures.map((feature) => feature.implementationPercentage)),\n\t\ttags: project.tags ?? [],\n\t\tcoreFeatures: mappedCoreFeatures\n\t};\n}) });\n//#endregion\n//#region src/features/builder-mode/application/use-cases/GetBuilderModeDashboard.ts\nvar getBuilderModeDashboardUseCase = (deps) => async () => {\n\tconst projectSummaries = await deps.projects.list();\n\tconst inputs = [];\n\tfor (const summary of projectSummaries) {\n\t\tconst project = await deps.projects.get(summary.id);\n\t\tif (!project) continue;\n\t\tconst coreFeatures = await Promise.all(project.featureIds.map(async (featureId) => {\n\t\t\tconst [feature, implementationStatus] = await Promise.all([deps.features.get(featureId), deps.statuses.get(featureId)]);\n\t\t\treturn feature ? {\n\t\t\t\tfeature,\n\t\t\t\timplementationStatus\n\t\t\t} : null;\n\t\t}));\n\t\tinputs.push({\n\t\t\tproject,\n\t\t\tcoreFeatures: coreFeatures.filter((entry) => entry !== null)\n\t\t});\n\t}\n\treturn buildBuilderModeDashboard(inputs);\n};\n//#endregion\n//#region src/features/builder-mode/application/use-cases/GetBuilderModeProject.ts\n/**\n* Scoped sibling of {@link getBuilderModeDashboardUseCase}: rebuild ONE project's\n* builder-mode view. Used after a single-feature mutation so the Builder refreshes\n* just the affected project instead of re-reading and re-scoring every project.\n* Returns null when the project no longer exists.\n*/\nvar getBuilderModeProjectUseCase = (deps) => async (projectId) => {\n\tconst project = await deps.projects.get(projectId);\n\tif (!project) return null;\n\treturn buildBuilderModeDashboard([{\n\t\tproject,\n\t\tcoreFeatures: (await Promise.all(project.featureIds.map(async (featureId) => {\n\t\t\tconst [feature, implementationStatus] = await Promise.all([deps.features.get(featureId), deps.statuses.get(featureId)]);\n\t\t\treturn feature ? {\n\t\t\t\tfeature,\n\t\t\t\timplementationStatus\n\t\t\t} : null;\n\t\t}))).filter((entry) => entry !== null)\n\t}]).projects[0] ?? null;\n};\n//#endregion\n//#region src/features/builder-mode/infrastructure/adapters/defaultBuilderHost.ts\n/**\n* Default adapter binding the builder view's driven ports to the dashboard\n* app's services. This is the one place that knows the concrete singletons\n* (DI container, tag-palette store, sync channel); to host the view elsewhere,\n* supply a different `BuilderHost`.\n*/\nvar defaultBuilderHost = {\n\tdata: { getContainer: () => getBrowserContainer() },\n\ttags: {\n\t\trefresh: () => tagPaletteStore.refresh(),\n\t\tregisterTypes: (types) => tagPaletteStore.registerTypes(types),\n\t\tcolorForTag: (tag) => tagPaletteStore.colorForTag(tag),\n\t\trenameTag: async (from, to) => {\n\t\t\tawait tagPaletteStore.renameTag(from, to);\n\t\t}\n\t},\n\tsync: { subscribe: (handler) => subscribeSyncEvents(handler) }\n};\n//#endregion\n//#region src/features/builder-mode/presentation/stores/builderModeStore.svelte.ts\nvar actionKey = (featureId, actionId) => `action:${featureId}:${actionId}`;\nvar featureKey = (featureId) => `feature:${featureId}`;\nvar byRelevance = (items, score) => items.map((item, index) => ({\n\titem,\n\tindex,\n\tscore: score(item)\n})).filter((entry) => entry.score > 0).sort((a, b) => b.score - a.score || a.index - b.index).map((entry) => entry.item);\nvar BuilderModeStore = class {\n\thost;\n\tconstructor(host) {\n\t\tthis.host = host;\n\t}\n\tloading = true;\n\tdashboard = { projects: [] };\n\tselectedProjectId = null;\n\tselectedCoreFeatureId = null;\n\tsearch = \"\";\n\tactiveTag = null;\n\terror = null;\n\tqueue = [];\n\tqueueError = null;\n\tbusyActions = /* @__PURE__ */ new Set();\n\tisBusy(actionId) {\n\t\treturn this.busyActions.has(actionId);\n\t}\n\tsetBusy(actionId, busy) {\n\t\tconst next = new Set(this.busyActions);\n\t\tif (busy) next.add(actionId);\n\t\telse next.delete(actionId);\n\t\tthis.busyActions = next;\n\t}\n\t#selectedProject = derived(() => this.dashboard.projects.find((project) => project.id === this.selectedProjectId) ?? null);\n\tget selectedProject() {\n\t\treturn this.#selectedProject();\n\t}\n\tset selectedProject($$value) {\n\t\treturn this.#selectedProject($$value);\n\t}\n\t#selectedCoreFeature = derived(() => this.selectedProject?.coreFeatures.find((coreFeature) => coreFeature.id === this.selectedCoreFeatureId) ?? null);\n\tget selectedCoreFeature() {\n\t\treturn this.#selectedCoreFeature();\n\t}\n\tset selectedCoreFeature($$value) {\n\t\treturn this.#selectedCoreFeature($$value);\n\t}\n\t#searchQuery = derived(() => this.search.trim().toLowerCase());\n\tget searchQuery() {\n\t\treturn this.#searchQuery();\n\t}\n\tset searchQuery($$value) {\n\t\treturn this.#searchQuery($$value);\n\t}\n\t#searchActive = derived(() => this.searchQuery.length > 0);\n\tget searchActive() {\n\t\treturn this.#searchActive();\n\t}\n\tset searchActive($$value) {\n\t\treturn this.#searchActive($$value);\n\t}\n\t#activeTagKey = derived(() => this.activeTag ? tagKey(this.activeTag) : null);\n\tget activeTagKey() {\n\t\treturn this.#activeTagKey();\n\t}\n\tset activeTagKey($$value) {\n\t\treturn this.#activeTagKey($$value);\n\t}\n\t#tagActive = derived(() => this.activeTag !== null);\n\tget tagActive() {\n\t\treturn this.#tagActive();\n\t}\n\tset tagActive($$value) {\n\t\treturn this.#tagActive($$value);\n\t}\n\t#allTagTypes = derived(() => {\n\t\tconst types = /* @__PURE__ */ new Set();\n\t\tfor (const project of this.dashboard.projects) {\n\t\t\tfor (const tag of project.tags) types.add(tag.type);\n\t\t\tfor (const coreFeature of project.coreFeatures) for (const tag of coreFeature.tags) types.add(tag.type);\n\t\t}\n\t\treturn [...types];\n\t});\n\tget allTagTypes() {\n\t\treturn this.#allTagTypes();\n\t}\n\tset allTagTypes($$value) {\n\t\treturn this.#allTagTypes($$value);\n\t}\n\t#filteredProjects = derived(() => {\n\t\tlet list = this.dashboard.projects;\n\t\tconst tag = this.activeTagKey;\n\t\tif (tag) list = list.filter((project) => this.projectMatchesTag(project, tag));\n\t\tconst q = this.searchQuery;\n\t\tif (!q) return list;\n\t\treturn byRelevance(list, (project) => this.projectScore(project, q));\n\t});\n\tget filteredProjects() {\n\t\treturn this.#filteredProjects();\n\t}\n\tset filteredProjects($$value) {\n\t\treturn this.#filteredProjects($$value);\n\t}\n\tprojectMatchesTag(project, key) {\n\t\treturn project.tags.some((tag) => tagKey(tag) === key) || project.coreFeatures.some((coreFeature) => coreFeature.tags.some((tag) => tagKey(tag) === key));\n\t}\n\tcoreFeatureMatchesTag(coreFeature, project, key) {\n\t\treturn project.tags.some((tag) => tagKey(tag) === key) || coreFeature.tags.some((tag) => tagKey(tag) === key);\n\t}\n\ttoggleTag(tag) {\n\t\tthis.activeTag = this.activeTagKey === tagKey(tag) ? null : tag;\n\t}\n\tclearTag() {\n\t\tthis.activeTag = null;\n\t}\n\tisActiveTag(tag) {\n\t\treturn this.activeTagKey === tagKey(tag);\n\t}\n\trefreshTagPalette() {\n\t\treturn this.host.tags.refresh();\n\t}\n\tregisterTagTypes(types) {\n\t\tthis.host.tags.registerTypes(types);\n\t}\n\tcolorForTag(tag) {\n\t\treturn this.host.tags.colorForTag(tag);\n\t}\n\tsubscribeSync(handler) {\n\t\treturn this.host.sync.subscribe(handler);\n\t}\n\tasync addProjectTag(projectId, tag) {\n\t\tawait this.mutateTags(projectId, async (container) => {\n\t\t\tconst project = await container.useCases.getProject(asProjectId(projectId));\n\t\t\tif (!project) return;\n\t\t\tawait container.useCases.saveProject({\n\t\t\t\t...project,\n\t\t\t\ttags: addTag(project.tags, tag)\n\t\t\t});\n\t\t});\n\t}\n\tasync removeProjectTag(projectId, tag) {\n\t\tawait this.mutateTags(projectId, async (container) => {\n\t\t\tconst project = await container.useCases.getProject(asProjectId(projectId));\n\t\t\tif (!project) return;\n\t\t\tawait container.useCases.saveProject({\n\t\t\t\t...project,\n\t\t\t\ttags: removeTag(project.tags, tag)\n\t\t\t});\n\t\t});\n\t}\n\tasync addCoreFeatureTag(featureId, tag) {\n\t\tawait this.mutateTags(this.selectedProjectId, async (container) => {\n\t\t\tconst feature = await container.useCases.getFeature(asFeatureId(featureId));\n\t\t\tif (!feature) return;\n\t\t\tawait container.useCases.saveFeature({\n\t\t\t\t...feature,\n\t\t\t\ttags: addTag(feature.tags, tag)\n\t\t\t});\n\t\t});\n\t}\n\tasync removeCoreFeatureTag(featureId, tag) {\n\t\tawait this.mutateTags(this.selectedProjectId, async (container) => {\n\t\t\tconst feature = await container.useCases.getFeature(asFeatureId(featureId));\n\t\t\tif (!feature) return;\n\t\t\tawait container.useCases.saveFeature({\n\t\t\t\t...feature,\n\t\t\t\ttags: removeTag(feature.tags, tag)\n\t\t\t});\n\t\t});\n\t}\n\t/** Rename a tag everywhere it's used and follow the filter onto the new name. */\n\tasync renameTag(from, to) {\n\t\tif (tagKey(from) === tagKey(to)) return;\n\t\tthis.dashboard = {\n\t\t\t...this.dashboard,\n\t\t\tprojects: this.dashboard.projects.map((project) => ({\n\t\t\t\t...project,\n\t\t\t\ttags: renameTagInList(project.tags, from, to) ?? [],\n\t\t\t\tcoreFeatures: project.coreFeatures.map((coreFeature) => ({\n\t\t\t\t\t...coreFeature,\n\t\t\t\t\ttags: renameTagInList(coreFeature.tags, from, to) ?? []\n\t\t\t\t}))\n\t\t\t}))\n\t\t};\n\t\tif (this.activeTagKey === tagKey(from)) this.activeTag = to;\n\t\ttry {\n\t\t\tawait this.host.tags.renameTag(from, to);\n\t\t\tthis.refreshSilent().then(() => this.reconcileActiveTag());\n\t\t} catch (e) {\n\t\t\tthis.error = e.message;\n\t\t}\n\t}\n\tasync mutateTags(projectId, op) {\n\t\ttry {\n\t\t\tawait op(await this.host.data.getContainer());\n\t\t\tif (projectId) await this.refreshProject(projectId);\n\t\t\telse await this.refreshSilent();\n\t\t\tthis.reconcileActiveTag();\n\t\t} catch (e) {\n\t\t\tthis.error = e.message;\n\t\t}\n\t}\n\t/** Drop the active tag filter once nothing carries it anymore. */\n\treconcileActiveTag() {\n\t\tconst key = this.activeTagKey;\n\t\tif (!key) return;\n\t\tif (!this.dashboard.projects.some((project) => this.projectMatchesTag(project, key))) this.activeTag = null;\n\t}\n\t#visibleCoreFeatures = derived(\n\t\t/** Same filter semantics as projects: only the selected core feature shows. */\n\t\t() => {\n\t\t\tconst project = this.selectedProject;\n\t\t\tconst selected = this.selectedCoreFeature;\n\t\t\tlet visible = selected ? [selected] : project?.coreFeatures ?? [];\n\t\t\tconst tag = this.activeTagKey;\n\t\t\tif (tag && project && !selected) visible = visible.filter((coreFeature) => this.coreFeatureMatchesTag(coreFeature, project, tag));\n\t\t\tconst q = this.searchQuery;\n\t\t\tif (!q) return visible;\n\t\t\tif (project && this.matchesText(q, project.name, project.description)) return visible;\n\t\t\treturn byRelevance(visible, (coreFeature) => this.coreFeatureScore(coreFeature, q));\n\t\t}\n\t);\n\tget visibleCoreFeatures() {\n\t\treturn this.#visibleCoreFeatures();\n\t}\n\tset visibleCoreFeatures($$value) {\n\t\treturn this.#visibleCoreFeatures($$value);\n\t}\n\t#visibleSelectedFeatures = derived(() => {\n\t\tconst coreFeature = this.selectedCoreFeature;\n\t\tif (!coreFeature) return [];\n\t\tconst q = this.searchQuery;\n\t\tif (!q || this.matchesText(q, coreFeature.name, coreFeature.description)) return coreFeature.features;\n\t\treturn byRelevance(coreFeature.features, (feature) => this.featureScore(feature, q));\n\t});\n\tget visibleSelectedFeatures() {\n\t\treturn this.#visibleSelectedFeatures();\n\t}\n\tset visibleSelectedFeatures($$value) {\n\t\treturn this.#visibleSelectedFeatures($$value);\n\t}\n\tsetSearch(query) {\n\t\tthis.search = query;\n\t}\n\tclearSearch() {\n\t\tthis.search = \"\";\n\t}\n\tmatchesText(query, ...values) {\n\t\treturn values.some((value) => value.toLowerCase().includes(query));\n\t}\n\ttextScore(query, value, weight) {\n\t\tconst text = value.toLowerCase();\n\t\tif (!text.includes(query)) return 0;\n\t\tif (text === query) return weight * 5;\n\t\tif (text.startsWith(query)) return weight * 4;\n\t\tif (text.split(/\\s+/).some((word) => word.startsWith(query))) return weight * 3;\n\t\treturn weight;\n\t}\n\tfeatureScore(feature, query) {\n\t\treturn Math.max(this.textScore(query, feature.name, 100), this.textScore(query, feature.description, 35), ...feature.suggestions.map((suggestion) => this.textScore(query, suggestion.text, 20)));\n\t}\n\ttagScore(tags, query, weight) {\n\t\tif (tags.length === 0) return 0;\n\t\treturn Math.max(...tags.map((tag) => Math.max(this.textScore(query, tag.value, weight), this.textScore(query, tag.type, weight * .5))));\n\t}\n\tcoreFeatureScore(coreFeature, query) {\n\t\treturn Math.max(this.textScore(query, coreFeature.name, 95), this.textScore(query, coreFeature.description, 32), this.tagScore(coreFeature.tags, query, 60), ...coreFeature.suggestions.map((suggestion) => this.textScore(query, suggestion.text, 24)), ...coreFeature.features.map((feature) => this.featureScore(feature, query) * .75));\n\t}\n\tprojectScore(project, query) {\n\t\treturn Math.max(this.textScore(query, project.name, 120), this.textScore(query, project.description, 40), this.tagScore(project.tags, query, 70), ...project.coreFeatures.map((coreFeature) => this.coreFeatureScore(coreFeature, query) * .8));\n\t}\n\tasync refresh() {\n\t\tthis.loading = true;\n\t\tawait this.refreshSilent();\n\t\tthis.loading = false;\n\t}\n\tasync refreshSilent() {\n\t\ttry {\n\t\t\tconst container = await this.host.data.getContainer();\n\t\t\tconst loadDashboard = getBuilderModeDashboardUseCase({\n\t\t\t\tprojects: container.projectRepository,\n\t\t\t\tfeatures: container.repository,\n\t\t\t\tstatuses: container.statusRepository\n\t\t\t});\n\t\t\tthis.dashboard = await loadDashboard();\n\t\t\tif (this.selectedProjectId && !this.dashboard.projects.some((project) => project.id === this.selectedProjectId)) {\n\t\t\t\tthis.selectedProjectId = null;\n\t\t\t\tthis.selectedCoreFeatureId = null;\n\t\t\t}\n\t\t\tthis.error = null;\n\t\t\tawait this.refreshQueue();\n\t\t} catch (e) {\n\t\t\tthis.error = e.message;\n\t\t}\n\t}\n\tselectProject(id) {\n\t\tthis.selectedProjectId = id;\n\t\tthis.selectedCoreFeatureId = null;\n\t\tthis.refreshQueue();\n\t}\n\t/** Cancel the project filter. */\n\tdeselectProject() {\n\t\tthis.selectedProjectId = null;\n\t\tthis.selectedCoreFeatureId = null;\n\t\tthis.queue = [];\n\t}\n\t/** Toggle a core feature filter (click the selected one again to clear). */\n\tselectCoreFeature(id) {\n\t\tthis.selectedCoreFeatureId = this.selectedCoreFeatureId === id ? null : id;\n\t}\n\tdeselectCoreFeature() {\n\t\tthis.selectedCoreFeatureId = null;\n\t}\n\tasync refreshQueue() {\n\t\tconst projectId = this.selectedProjectId;\n\t\tif (!projectId) {\n\t\t\tthis.queue = [];\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tconst container = await this.host.data.getContainer();\n\t\t\tthis.queue = await container.useCases.listQueue(asProjectId(projectId));\n\t\t\tthis.queueError = null;\n\t\t} catch (e) {\n\t\t\tthis.queueError = e.message;\n\t\t}\n\t}\n\tisQueued(featureId, actionId) {\n\t\tconst key = actionKey(featureId, actionId);\n\t\treturn this.queue.some((view) => queueItemKey(view.item) === key);\n\t}\n\t/** 1-based build-queue position of a queued action, or null when not queued. */\n\tqueuePositionForAction(featureId, actionId) {\n\t\treturn this.queuePosition(actionKey(featureId, actionId));\n\t}\n\tqueuePosition(key) {\n\t\tconst idx = this.queue.findIndex((view) => queueItemKey(view.item) === key);\n\t\treturn idx < 0 ? null : idx + 1;\n\t}\n\tqueueItemIdForAction(featureId, actionId) {\n\t\tconst key = actionKey(featureId, actionId);\n\t\treturn this.queue.find((view) => queueItemKey(view.item) === key)?.item.id ?? null;\n\t}\n\t/** Add the action to the queue, or remove it if already queued. */\n\tasync toggleAction(featureId, actionId) {\n\t\tconst projectId = this.selectedProjectId;\n\t\tif (!projectId) return;\n\t\tconst existing = this.queueItemIdForAction(featureId, actionId);\n\t\tawait this.mutateQueue(async (container) => {\n\t\t\tif (existing) await container.useCases.dequeueQueueItem(asProjectId(projectId), existing);\n\t\t\telse await container.useCases.enqueueQueueItem(asProjectId(projectId), {\n\t\t\t\tkind: \"action\",\n\t\t\t\tfeatureId: asFeatureId(featureId),\n\t\t\t\tactionId: asActionId(actionId)\n\t\t\t});\n\t\t});\n\t}\n\t/**\n\t* True when the WHOLE feature is queued (a `kind:'feature'` entry). This is\n\t* independent of any per-action entries for the same feature: queueing the\n\t* feature means \"implement whatever is still missing\", while per-action\n\t* entries target just a part. Both granularities can coexist.\n\t*/\n\tisFeatureQueued(featureId) {\n\t\tconst key = featureKey(featureId);\n\t\treturn this.queue.some((view) => queueItemKey(view.item) === key);\n\t}\n\t/** 1-based build-queue position of a queued whole-feature entry, or null. */\n\tqueuePositionForFeature(featureId) {\n\t\treturn this.queuePosition(featureKey(featureId));\n\t}\n\tqueueItemIdForFeature(featureId) {\n\t\tconst key = featureKey(featureId);\n\t\treturn this.queue.find((view) => queueItemKey(view.item) === key)?.item.id ?? null;\n\t}\n\t/**\n\t* Queue the whole feature for implementation, or remove it if already queued.\n\t* A `feature`-kind queue item is a pointer at the entire feature; the build\n\t* step resolves \"what's missing\" (possibly everything, possibly just a few\n\t* unimplemented actions) at implementation time.\n\t*/\n\tasync toggleFeature(featureId) {\n\t\tconst projectId = this.selectedProjectId;\n\t\tif (!projectId) return;\n\t\tconst existing = this.queueItemIdForFeature(featureId);\n\t\tawait this.mutateQueue(async (container) => {\n\t\t\tif (existing) await container.useCases.dequeueQueueItem(asProjectId(projectId), existing);\n\t\t\telse await container.useCases.enqueueQueueItem(asProjectId(projectId), {\n\t\t\t\tkind: \"feature\",\n\t\t\t\tfeatureId: asFeatureId(featureId)\n\t\t\t});\n\t\t});\n\t}\n\tasync dequeue(itemId) {\n\t\tconst projectId = this.selectedProjectId;\n\t\tif (!projectId) return;\n\t\tawait this.mutateQueue(async (container) => {\n\t\t\tawait container.useCases.dequeueQueueItem(asProjectId(projectId), itemId);\n\t\t});\n\t}\n\t/**\n\t* Set (or clear, with `undefined`) the implementation goal on a queued item.\n\t* The target rides along to the LLM via the MCP queue tools, so \"implement\n\t* this feature to half maturity\" is something the user can pin in the queue\n\t* and the assistant reads back.\n\t*/\n\tasync setQueueTarget(itemId, target) {\n\t\tconst projectId = this.selectedProjectId;\n\t\tif (!projectId) return;\n\t\tawait this.mutateQueue(async (container) => {\n\t\t\tawait container.useCases.setQueueItemTarget(asProjectId(projectId), itemId, target);\n\t\t});\n\t}\n\t/**\n\t* The current score (0–100) of a queued item for the given metric — where the\n\t* goal progress bar starts filled. Resolved from the live dashboard: a whole\n\t* feature reads its core-feature score, an action reads its own. Unknown /\n\t* orphaned targets read 0.\n\t*/\n\tcurrentScoreFor(view, metric) {\n\t\tconst project = this.selectedProject;\n\t\tif (!project) return 0;\n\t\tconst coreFeature = project.coreFeatures.find((cf) => cf.id === String(view.item.featureId));\n\t\tif (!coreFeature) return 0;\n\t\tconst pick = (maturity, implementation) => metric === \"maturity\" ? maturity : implementation ?? 0;\n\t\tif (view.item.kind === \"action\") {\n\t\t\tconst actionId = String(view.item.actionId);\n\t\t\tconst feature = coreFeature.features.find((f) => f.id === actionId);\n\t\t\treturn feature ? pick(feature.maturityPercentage, feature.implementationPercentage) : 0;\n\t\t}\n\t\treturn pick(coreFeature.maturityPercentage, coreFeature.implementationPercentage);\n\t}\n\t/**\n\t* Dismiss a suggestion: mark its Evolution `dismissed` (via the domain\n\t* transform + diff-aware mutateFeature use case) instead of deleting it. The\n\t* proposal stays in the spec as a tombstone so the assistant won't re-suggest\n\t* it and can propose something else, but it's hidden from the user's list. We\n\t* also drop it from the queue if present. Only the affected project is\n\t* re-read afterwards, not the whole dashboard.\n\t*/\n\tasync dismissSuggestion(featureId, actionId) {\n\t\tconst projectId = this.selectedProjectId;\n\t\tthis.setBusy(actionId, true);\n\t\ttry {\n\t\t\tconst container = await this.host.data.getContainer();\n\t\t\tif (projectId && this.isQueued(featureId, actionId)) {\n\t\t\t\tconst itemId = this.queueItemIdForAction(featureId, actionId);\n\t\t\t\tif (itemId) await container.useCases.dequeueQueueItem(asProjectId(projectId), itemId);\n\t\t\t}\n\t\t\tawait container.useCases.mutateFeature({\n\t\t\t\tfeatureId: asFeatureId(featureId),\n\t\t\t\ttransform: (feature) => dismissActionEvolution(feature, asActionId(actionId))\n\t\t\t});\n\t\t\tawait this.refreshSelectedProject();\n\t\t\tawait this.refreshQueue();\n\t\t} catch (e) {\n\t\t\tthis.error = e.message;\n\t\t} finally {\n\t\t\tthis.setBusy(actionId, false);\n\t\t}\n\t}\n\t/**\n\t* Queue a suggestion: accept the Evolution (clear its marker so it becomes a\n\t* committed feature) AND add it to the build queue. The proposal then leaves\n\t* the suggestions list and shows up as a real feature. Only the affected\n\t* project is re-read afterwards.\n\t*/\n\tasync acceptSuggestion(featureId, actionId) {\n\t\tconst projectId = this.selectedProjectId;\n\t\tthis.setBusy(actionId, true);\n\t\ttry {\n\t\t\tconst container = await this.host.data.getContainer();\n\t\t\tawait container.useCases.mutateFeature({\n\t\t\t\tfeatureId: asFeatureId(featureId),\n\t\t\t\ttransform: (feature) => clearActionEvolution(feature, asActionId(actionId))\n\t\t\t});\n\t\t\tif (projectId && !this.isQueued(featureId, actionId)) await container.useCases.enqueueQueueItem(asProjectId(projectId), {\n\t\t\t\tkind: \"action\",\n\t\t\t\tfeatureId: asFeatureId(featureId),\n\t\t\t\tactionId: asActionId(actionId)\n\t\t\t});\n\t\t\tawait this.refreshSelectedProject();\n\t\t\tawait this.refreshQueue();\n\t\t} catch (e) {\n\t\t\tthis.error = e.message;\n\t\t} finally {\n\t\t\tthis.setBusy(actionId, false);\n\t\t}\n\t}\n\t/**\n\t* Rebuild ONE project in place (scoped use case) instead of re-reading and\n\t* re-scoring every project. Keeps post-mutation refreshes O(features in one\n\t* project) rather than O(all features) — the difference between snappy and\n\t* multi-second on large hubs.\n\t*/\n\tasync refreshProject(projectId) {\n\t\tconst container = await this.host.data.getContainer();\n\t\tconst updated = await getBuilderModeProjectUseCase({\n\t\t\tprojects: container.projectRepository,\n\t\t\tfeatures: container.repository,\n\t\t\tstatuses: container.statusRepository\n\t\t})(asProjectId(projectId));\n\t\tif (!updated) return;\n\t\tthis.dashboard = {\n\t\t\t...this.dashboard,\n\t\t\tprojects: this.dashboard.projects.map((project) => project.id === updated.id ? updated : project)\n\t\t};\n\t}\n\tasync refreshSelectedProject() {\n\t\tif (this.selectedProjectId) await this.refreshProject(this.selectedProjectId);\n\t}\n\t/** Drag-and-drop reorder: drop `itemId` at absolute position `targetIndex`. */\n\tasync moveQueueTo(itemId, targetIndex) {\n\t\tconst projectId = this.selectedProjectId;\n\t\tif (!projectId) return;\n\t\tawait this.mutateQueue(async (container) => {\n\t\t\tawait container.useCases.moveQueueItem(asProjectId(projectId), itemId, {\n\t\t\t\tkind: \"to\",\n\t\t\t\ttargetIndex\n\t\t\t});\n\t\t});\n\t}\n\tasync mutateQueue(op) {\n\t\ttry {\n\t\t\tawait op(await this.host.data.getContainer());\n\t\t\tawait this.refreshQueue();\n\t\t} catch (e) {\n\t\t\tthis.queueError = e.message;\n\t\t}\n\t}\n};\nvar builderModeStore = new BuilderModeStore(defaultBuilderHost);\n//#endregion\nexport { builderModeStore as t };\n"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- import { V as noop, G as index_server_exports } from './index-server-7H0jzj0M.js';
2
- import './internal-BPKrFkK1.js';
3
-
4
- var is_legacy = noop.toString().includes("$$") || /function \w+\(\) \{\}/.test(noop.toString());
5
- var placeholder_url = "a:";
6
- if (is_legacy) {
7
- ({
8
- data: {},
9
- form: null,
10
- error: null,
11
- params: {},
12
- route: { id: null },
13
- state: {},
14
- status: -1,
15
- url: new URL(placeholder_url)
16
- });
17
- }
18
- //#endregion
19
- //#region node_modules/@sveltejs/kit/src/runtime/client/client.js
20
- /** @import { CacheEntry } from './remote-functions/cache.svelte.js' */
21
- /** @import { Query } from './remote-functions/query/instance.svelte.js' */
22
- /** @import { LiveQuery } from './remote-functions/query-live/instance.svelte.js' */
23
- var { onMount, tick } = index_server_exports;
24
- //# sourceMappingURL=client-DfpLcAZ9.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hooks.server-Rv301GTB.js","sources":["../../../.svelte-kit/adapter-node/chunks/auth.js","../../../.svelte-kit/adapter-node/entries/hooks.server.js"],"sourcesContent":["//#region src/lib/server/security/auth.ts\n/**\n* Optional shared-token auth for the dashboard's REST + WebSocket\n* surface, plus an Origin allowlist that complements it.\n*\n* Trust model (local-first by default):\n* - No env var set → no auth, no origin check. This is the right\n* stance for the default `unspa dashboard` install (loopback bind,\n* single human). Forcing auth here would be friction with zero\n* payoff.\n* - `UNSPA_AUTH_TOKEN` set → every API request and every WebSocket\n* upgrade must carry the token. REST honors `Authorization: Bearer\n* <token>`; the WebSocket carries it as a `?token=` query because\n* browsers can't set headers on WS upgrades. Server-to-server\n* callers (the MCP `notifySyncReload`) use the header.\n* - `UNSPA_ALLOWED_ORIGIN` set → cross-site browser requests are\n* rejected. Covers the \"malicious page in your other tab fetches\n* localhost:3000/api/projects from your logged-in browser\" CSRF\n* class. curl / server-to-server has no Origin header and passes\n* through (the threat model is browser-mediated, not arbitrary\n* HTTP).\n*\n* One env var, one check function per surface. No accounts, no roles,\n* no session store. The aim is \"an enterprise IT person can install\n* this on a VLAN without a heart attack\", not full enterprise IAM —\n* which is a separate tier on the roadmap.\n*\n* Constant-time comparison on the token check resists timing leaks\n* even though the realistic attack surface is small (loopback or LAN).\n*/\nvar tokenEnv = () => {\n\tconst raw = process.env.UNSPA_AUTH_TOKEN;\n\tif (typeof raw !== \"string\") return void 0;\n\tconst trimmed = raw.trim();\n\treturn trimmed.length > 0 ? trimmed : void 0;\n};\nvar originEnv = () => {\n\tconst raw = process.env.UNSPA_ALLOWED_ORIGIN;\n\tif (typeof raw !== \"string\") return void 0;\n\tconst trimmed = raw.trim().replace(/\\/$/, \"\");\n\treturn trimmed.length > 0 ? trimmed : void 0;\n};\nvar isAuthEnabled = () => tokenEnv() !== void 0;\nvar isOriginCheckEnabled = () => originEnv() !== void 0;\n/**\n* Length-independent constant-time compare. `crypto.timingSafeEqual`\n* requires equal-length buffers and an early `===` length check would\n* itself leak length; this normalises both inputs to the longer of the\n* two before comparing.\n*/\nvar constantTimeEqual = (a, b) => {\n\tconst len = Math.max(a.length, b.length);\n\tlet mismatch = a.length === b.length ? 0 : 1;\n\tfor (let i = 0; i < len; i += 1) {\n\t\tconst ai = i < a.length ? a.charCodeAt(i) : 0;\n\t\tconst bi = i < b.length ? b.charCodeAt(i) : 0;\n\t\tmismatch |= ai ^ bi;\n\t}\n\treturn mismatch === 0;\n};\nvar extractBearerToken = (headers) => {\n\tconst raw = headers.get(\"authorization\");\n\tif (!raw) return null;\n\tconst match = /^Bearer\\s+(.+)$/i.exec(raw);\n\treturn match ? match[1].trim() : null;\n};\n/**\n* Validate a Request's bearer token against UNSPA_AUTH_TOKEN. Returns\n* true when auth is disabled (env unset) so callers can wrap any\n* request without branching on `isAuthEnabled`.\n*/\nvar checkBearerAuth = (request) => {\n\tconst expected = tokenEnv();\n\tif (expected === void 0) return true;\n\tconst provided = extractBearerToken(request.headers);\n\tif (provided === null) return false;\n\treturn constantTimeEqual(provided, expected);\n};\n/**\n* Validate a token carried as `?token=...` on a URL. Used by the\n* WebSocket upgrade path (browsers can't set headers on WS) and by SSE\n* (EventSource can't set headers either).\n*/\nvar checkQueryAuth = (url) => {\n\tconst expected = tokenEnv();\n\tif (expected === void 0) return true;\n\tconst provided = (typeof url === \"string\" ? new URL(url, \"http://x\") : url).searchParams.get(\"token\");\n\tif (provided === null) return false;\n\treturn constantTimeEqual(provided, expected);\n};\n/**\n* Accepts either header OR query — the inclusive OR variant for\n* endpoints that need to serve both browsers (via header) and\n* EventSource (via query).\n*/\nvar checkRequestAuth = (request, url) => {\n\tif (!isAuthEnabled()) return true;\n\tif (checkBearerAuth(request)) return true;\n\tif (url && checkQueryAuth(url)) return true;\n\treturn false;\n};\n/**\n* Origin allowlist check. Returns true when:\n* - the check is disabled (env unset), OR\n* - the request has no Origin header (server-to-server callers like\n* curl / the MCP notify don't send Origin), OR\n* - the Origin matches the configured allowlist.\n* Callers should pair this with auth: a malicious server-to-server\n* caller would skip the origin check, which is fine because they're\n* still gated by the token.\n*/\nvar checkOrigin = (request) => {\n\tconst expected = originEnv();\n\tif (expected === void 0) return true;\n\tconst origin = request.headers.get(\"origin\");\n\tif (!origin) return true;\n\treturn origin.replace(/\\/$/, \"\") === expected;\n};\n//#endregion\nexport { isOriginCheckEnabled as i, checkRequestAuth as n, isAuthEnabled as r, checkOrigin as t };\n","import { i as isOriginCheckEnabled, n as checkRequestAuth, r as isAuthEnabled, t as checkOrigin } from \"../chunks/auth.js\";\n//#region src/hooks.server.ts\n/**\n* Global request gate for the dashboard. When `UNSPA_AUTH_TOKEN` is\n* set, every /api/* request must carry the token (header for fetch,\n* `?token=` for SSE). When `UNSPA_ALLOWED_ORIGIN` is set, cross-site\n* browser requests with a mismatching Origin are rejected.\n*\n* Why /api/* specifically: page navigations (HTML routes) are safe to\n* leave unauthenticated — they don't expose data on their own, and a\n* page that can't fetch its data renders empty + triggers the\n* client-side token prompt. Gating only the data plane means an\n* incorrectly-configured client surfaces the auth failure clearly\n* instead of getting a vague 401 on every navigation.\n*\n* Default install (neither env set) is unchanged from before: no\n* checks fire and the handle pass-through is essentially free.\n*/\nvar handle = async ({ event, resolve }) => {\n\tif (event.url.pathname.startsWith(\"/api/\")) {\n\t\tif (isOriginCheckEnabled() && !checkOrigin(event.request)) return new Response(\"Forbidden: origin not allowed\", { status: 403 });\n\t\tif (isAuthEnabled() && !checkRequestAuth(event.request, event.url)) return new Response(\"Unauthorized: missing or invalid token\", {\n\t\t\tstatus: 401,\n\t\t\theaders: { \"WWW-Authenticate\": \"Bearer realm=\\\"unspa-dashboard\\\"\" }\n\t\t});\n\t}\n\treturn resolve(event);\n};\n//#endregion\nexport { handle };\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"reconcile-Dv7jS3C8.js","sources":["../../../.svelte-kit/adapter-node/chunks/TransitionCatalog.js","../../../.svelte-kit/adapter-node/chunks/reconcile.js"],"sourcesContent":["import { nt as getContext } from \"./index-server.js\";\nimport \"./client.js\";\nimport { c as humanizeStatePath } from \"./browserContainer.js\";\n//#region node_modules/@sveltejs/kit/src/runtime/app/stores.js\n/**\n* A function that returns all of the contextual stores. On the server, this must be called during component initialization.\n* Only use this if you need to defer store subscription until after the component has mounted, for some reason.\n*\n* @deprecated Use `$app/state` instead (requires Svelte 5, [see docs for more info](https://svelte.dev/docs/kit/migrating-to-sveltekit-2#SvelteKit-2.12:-$app-stores-deprecated))\n*/\nvar getStores = () => {\n\tconst stores$1 = getContext(\"__svelte__\");\n\treturn {\n\t\t/** @type {typeof page} */\n\t\tpage: { subscribe: stores$1.page.subscribe },\n\t\t/** @type {typeof navigating} */\n\t\tnavigating: { subscribe: stores$1.navigating.subscribe },\n\t\t/** @type {typeof updated} */\n\t\tupdated: stores$1.updated\n\t};\n};\n/**\n* A readable store whose value contains page data.\n*\n* On the server, this store can only be subscribed to during component initialization. In the browser, it can be subscribed to at any time.\n*\n* @deprecated Use `page` from `$app/state` instead (requires Svelte 5, [see docs for more info](https://svelte.dev/docs/kit/migrating-to-sveltekit-2#SvelteKit-2.12:-$app-stores-deprecated))\n* @type {import('svelte/store').Readable<import('@sveltejs/kit').Page>}\n*/\nvar page = { subscribe(fn) {\n\treturn getStores().page.subscribe(fn);\n} };\n//#endregion\n//#region src/features/behavior-model/domain/services/EffectiveEntities.ts\nvar capitalize = (s) => s.length === 0 ? s : s.charAt(0).toUpperCase() + s.slice(1);\nvar fieldNameFromPath = (path) => {\n\tconst segments = path.split(\".\");\n\tif (segments.length <= 1) return path;\n\treturn segments[segments.length - 1];\n};\n/**\n* Produce the list of all Entity entities visible in the feature. Every\n* state-path namespace, enriched with metadata from any matching authored\n* `Entity` record. Authored entries with no matching state paths still appear\n* (so the user doesn't lose explicit work).\n*/\nvar getEffectiveEntities = (feature) => {\n\tconst deduced = /* @__PURE__ */ new Map();\n\tfor (const surface of feature.surfaces) for (const def of surface.stateDefinitions) {\n\t\tconst namespace = def.path.split(\".\")[0] ?? def.path;\n\t\tlet acc = deduced.get(namespace);\n\t\tif (!acc) {\n\t\t\tacc = {\n\t\t\t\tfields: /* @__PURE__ */ new Map(),\n\t\t\t\tsurfaces: /* @__PURE__ */ new Set()\n\t\t\t};\n\t\t\tdeduced.set(namespace, acc);\n\t\t}\n\t\tif (!acc.fields.has(def.path)) acc.fields.set(def.path, {\n\t\t\tname: fieldNameFromPath(def.path),\n\t\t\tpath: def.path,\n\t\t\ttype: def.type,\n\t\t\tsource: \"deduced\"\n\t\t});\n\t\tacc.surfaces.add(surface.name);\n\t}\n\tconst declaredByNamespace = /* @__PURE__ */ new Map();\n\tfor (const data of feature.entities) declaredByNamespace.set(data.namespace, data);\n\tconst namespaces = new Set([...deduced.keys(), ...declaredByNamespace.keys()]);\n\tconst results = [];\n\tfor (const namespace of namespaces) {\n\t\tconst declared = declaredByNamespace.get(namespace);\n\t\tconst acc = deduced.get(namespace);\n\t\tconst fieldByPath = /* @__PURE__ */ new Map();\n\t\tif (acc) for (const [path, f] of acc.fields) fieldByPath.set(path, f);\n\t\tif (declared) for (const f of declared.fields) {\n\t\t\tif (!f.path) continue;\n\t\t\tfieldByPath.set(String(f.path), {\n\t\t\t\tid: f.id,\n\t\t\t\tname: f.name,\n\t\t\t\tpath: f.path,\n\t\t\t\ttype: f.type,\n\t\t\t\tsource: \"declared\",\n\t\t\t\tfields: f.fields,\n\t\t\t\titems: f.items\n\t\t\t});\n\t\t}\n\t\tconst fields = Array.from(fieldByPath.values()).sort((a, b) => a.path.localeCompare(b.path));\n\t\tresults.push({\n\t\t\tid: declared?.id,\n\t\t\tname: capitalize(humanizeStatePath(namespace)),\n\t\t\tnamespace,\n\t\t\tdescription: declared?.description,\n\t\t\tresourceId: declared?.resourceId,\n\t\t\tfields,\n\t\t\tisMaterialized: declared !== void 0,\n\t\t\tusedBySurfaces: acc ? Array.from(acc.surfaces).sort() : []\n\t\t});\n\t}\n\tresults.sort((a, b) => a.namespace.localeCompare(b.namespace));\n\treturn results;\n};\n//#endregion\n//#region src/features/behavior-model/domain/services/EventCatalog.ts\nvar groupOf = (name) => {\n\tconst seg = name.split(\".\")[0];\n\treturn seg && seg.length > 0 ? seg : \"_root\";\n};\n/**\n* Walk the feature and collect every event emitted across:\n* - action.emittedEvents (intent-level declarations)\n* - action.effects (emit_event default effects)\n* - action.rules.effect (emit_event when a rule fires)\n* - surface.rules.effect (emit_event surface-level rules)\n*\n* Output is grouped by the event's namespace and sorted alphabetically. Each\n* unique event collapses every occurrence into a single entry with all its\n* emission sources, so the user sees \"order.placed (3 places)\" once instead\n* of three times.\n*/\nvar buildEventCatalog = (feature) => {\n\tconst byName = /* @__PURE__ */ new Map();\n\tconst push = (name, source) => {\n\t\tlet list = byName.get(name);\n\t\tif (!list) {\n\t\t\tlist = [];\n\t\t\tbyName.set(name, list);\n\t\t}\n\t\tlist.push(source);\n\t};\n\tfor (const surface of feature.surfaces) {\n\t\tfor (const cap of surface.actions) {\n\t\t\tfor (const evt of cap.emittedEvents) push(String(evt), {\n\t\t\t\tsurfaceId: surface.id,\n\t\t\t\tsurfaceName: surface.name,\n\t\t\t\tactionId: cap.id,\n\t\t\t\tactionName: cap.name,\n\t\t\t\torigin: \"action_default\"\n\t\t\t});\n\t\t\tfor (const effect of cap.effects) if (effect.type === \"emit_event\") push(String(effect.event), {\n\t\t\t\tsurfaceId: surface.id,\n\t\t\t\tsurfaceName: surface.name,\n\t\t\t\tactionId: cap.id,\n\t\t\t\tactionName: cap.name,\n\t\t\t\torigin: \"action_effect\",\n\t\t\t\tdescription: effect.description\n\t\t\t});\n\t\t\tfor (const rule of cap.rules) if (rule.effect.type === \"emit_event\") push(String(rule.effect.event), {\n\t\t\t\tsurfaceId: surface.id,\n\t\t\t\tsurfaceName: surface.name,\n\t\t\t\tactionId: cap.id,\n\t\t\t\tactionName: cap.name,\n\t\t\t\torigin: \"action_rule_effect\",\n\t\t\t\tdescription: rule.description\n\t\t\t});\n\t\t}\n\t\tfor (const rule of surface.rules) if (rule.effect.type === \"emit_event\") push(String(rule.effect.event), {\n\t\t\tsurfaceId: surface.id,\n\t\t\tsurfaceName: surface.name,\n\t\t\torigin: \"surface_rule_effect\",\n\t\t\tdescription: rule.description\n\t\t});\n\t}\n\tconst entries = [];\n\tfor (const [name, emissions] of byName) entries.push({\n\t\tname,\n\t\tgroup: groupOf(name),\n\t\temissions\n\t});\n\tentries.sort((a, b) => {\n\t\tif (a.group !== b.group) return a.group.localeCompare(b.group);\n\t\treturn String(a.name).localeCompare(String(b.name));\n\t});\n\treturn entries;\n};\nvar groupEventCatalog = (entries) => {\n\tconst map = /* @__PURE__ */ new Map();\n\tfor (const entry of entries) {\n\t\tlet list = map.get(entry.group);\n\t\tif (!list) {\n\t\t\tlist = [];\n\t\t\tmap.set(entry.group, list);\n\t\t}\n\t\tlist.push(entry);\n\t}\n\treturn Array.from(map.entries()).map(([group, events]) => ({\n\t\tgroup,\n\t\tevents\n\t})).sort((a, b) => a.group.localeCompare(b.group));\n};\n//#endregion\n//#region src/features/behavior-model/domain/services/TransitionCatalog.ts\n/**\n* Walk every surface and collect every authored transition between two\n* surfaces, regardless of where it lives in the model:\n* - `surface.transitions` (declared navigation hints)\n* - action default effects of type `transition_surface`\n* - action rule effects of type `transition_surface`\n* - surface-level rule effects of type `transition_surface`\n*\n* Edges with the same (from, to) pair collapse into one entry whose\n* `sources` lists every contribution. Output is sorted by source surface\n* order (matches the feature editor's surface list), then by target surface name.\n*/\nvar buildTransitionCatalog = (feature) => {\n\tconst surfaceById = /* @__PURE__ */ new Map();\n\tfeature.surfaces.forEach((s, index) => {\n\t\tsurfaceById.set(s.id, {\n\t\t\tname: s.name,\n\t\t\tindex\n\t\t});\n\t});\n\tconst byEdge = /* @__PURE__ */ new Map();\n\tconst targetExists = (id) => id !== void 0 && surfaceById.has(id);\n\tconst push = (fromId, toId, source) => {\n\t\tif (!targetExists(toId)) return;\n\t\tconst key = `${fromId}__${toId}`;\n\t\tlet acc = byEdge.get(key);\n\t\tif (!acc) {\n\t\t\tacc = {\n\t\t\t\tsources: [],\n\t\t\t\tfromIndex: surfaceById.get(fromId)?.index ?? 0\n\t\t\t};\n\t\t\tbyEdge.set(key, acc);\n\t\t}\n\t\tacc.sources.push(source);\n\t};\n\tfor (const surface of feature.surfaces) {\n\t\tconst fromId = surface.id;\n\t\tconst fromName = surface.name;\n\t\tfor (const transition of surface.transitions) push(fromId, transition.target, {\n\t\t\tsurfaceId: fromId,\n\t\t\tsurfaceName: fromName,\n\t\t\torigin: \"declared\",\n\t\t\tdescription: transition.label ?? transition.description\n\t\t});\n\t\tfor (const cap of surface.actions) {\n\t\t\tfor (const effect of cap.effects) if (effect.type === \"transition_surface\") push(fromId, effect.target, {\n\t\t\t\tsurfaceId: fromId,\n\t\t\t\tsurfaceName: fromName,\n\t\t\t\tactionId: cap.id,\n\t\t\t\tactionName: cap.name,\n\t\t\t\torigin: \"action_effect\",\n\t\t\t\tdescription: effect.description\n\t\t\t});\n\t\t\tfor (const rule of cap.rules) if (rule.effect.type === \"transition_surface\") push(fromId, rule.effect.target, {\n\t\t\t\tsurfaceId: fromId,\n\t\t\t\tsurfaceName: fromName,\n\t\t\t\tactionId: cap.id,\n\t\t\t\tactionName: cap.name,\n\t\t\t\torigin: \"action_rule_effect\",\n\t\t\t\tdescription: rule.description\n\t\t\t});\n\t\t}\n\t\tfor (const rule of surface.rules) if (rule.effect.type === \"transition_surface\") push(fromId, rule.effect.target, {\n\t\t\tsurfaceId: fromId,\n\t\t\tsurfaceName: fromName,\n\t\t\torigin: \"surface_rule_effect\",\n\t\t\tdescription: rule.description\n\t\t});\n\t}\n\tconst entries = [];\n\tfor (const [key, acc] of byEdge) {\n\t\tconst [fromId, toId] = key.split(\"__\");\n\t\tconst from = surfaceById.get(fromId);\n\t\tconst to = surfaceById.get(toId);\n\t\tif (!from || !to) continue;\n\t\tentries.push({\n\t\t\tfromSurfaceId: fromId,\n\t\t\tfromSurfaceName: from.name,\n\t\t\ttoSurfaceId: toId,\n\t\t\ttoSurfaceName: to.name,\n\t\t\tsources: acc.sources\n\t\t});\n\t}\n\tentries.sort((a, b) => {\n\t\tconst fa = surfaceById.get(a.fromSurfaceId)?.index ?? 0;\n\t\tconst fb = surfaceById.get(b.fromSurfaceId)?.index ?? 0;\n\t\tif (fa !== fb) return fa - fb;\n\t\treturn (surfaceById.get(a.toSurfaceId)?.index ?? 0) - (surfaceById.get(b.toSurfaceId)?.index ?? 0);\n\t});\n\treturn entries;\n};\nvar groupTransitionCatalog = (entries) => {\n\tconst map = /* @__PURE__ */ new Map();\n\tfor (const entry of entries) {\n\t\tlet group = map.get(entry.fromSurfaceId);\n\t\tif (!group) {\n\t\t\tgroup = {\n\t\t\t\tfromSurfaceId: entry.fromSurfaceId,\n\t\t\t\tfromSurfaceName: entry.fromSurfaceName,\n\t\t\t\ttransitions: []\n\t\t\t};\n\t\t\tmap.set(entry.fromSurfaceId, group);\n\t\t}\n\t\tgroup.transitions.push(entry);\n\t}\n\treturn Array.from(map.values());\n};\n//#endregion\nexport { getEffectiveEntities as a, groupEventCatalog as i, groupTransitionCatalog as n, page as o, buildEventCatalog as r, buildTransitionCatalog as t };\n","import { a as makeRoomId, i as ROOM_DOC_MAP, n as encode, r as ROOM_DOC_FIELD, t as decode } from \"./protocol.js\";\nimport { _ as authStore } from \"./browserContainer.js\";\nimport { t as identityStore } from \"./identityStore.svelte.js\";\nimport * as Y from \"yjs\";\n//#region src/lib/client/sync/YDocClient.ts\n/**\n* Browser-side per-room sync client. Lazy-connects a WebSocket to /sync/<roomId>,\n* keeps a local Y.Doc in step with the server, and exposes the snapshot value\n* + a typed mutate() helper.\n*\n* Reconnects with exponential backoff (1s → 8s, capped). Buffers local writes\n* during disconnects in the Y.Doc itself; on reconnect the sync_step1 / step2\n* handshake catches both sides up.\n*\n* Undo/redo and time travel are both served by the server-side shared\n* history: Ctrl+Z / Ctrl+Y / the toolbar buttons all route through jumpTo()\n* to step the shared cursor. Never replay an inverse Y.Map write locally,\n* because that would land back on the server as a fresh edit and produce a\n* duplicate history entry.\n*/\nvar WS_SCHEME = () => location.protocol === \"https:\" ? \"wss:\" : \"ws:\";\nvar WS_BASE = () => `${WS_SCHEME()}//${location.host}/sync`;\nvar BACKOFF_START_MS = 1e3;\nvar BACKOFF_MAX_MS = 8e3;\nvar YDocClient = class {\n\troomId;\n\tdoc = new Y.Doc();\n\tmap = this.doc.getMap(ROOM_DOC_MAP);\n\tws = null;\n\tlisteners = /* @__PURE__ */ new Set();\n\thistoryListeners = /* @__PURE__ */ new Set();\n\thistoryView = {\n\t\tentries: [],\n\t\tcursor: -1\n\t};\n\tconnected = false;\n\tclosed = false;\n\tbackoffMs = BACKOFF_START_MS;\n\treconnectTimer = null;\n\tbuffered = [];\n\tconstructor(roomId) {\n\t\tthis.roomId = roomId;\n\t\tthis.doc.on(\"update\", (update, origin) => {\n\t\t\tconst isRemote = origin === \"remote\";\n\t\t\tif (!isRemote) this.send(encode({\n\t\t\t\tkind: \"update\",\n\t\t\t\tupdate\n\t\t\t}));\n\t\t\tconst value = this.map.get(ROOM_DOC_FIELD);\n\t\t\tconst fanOrigin = isRemote ? \"remote\" : \"local\";\n\t\t\tfor (const l of this.listeners) l(value ?? null, fanOrigin);\n\t\t});\n\t}\n\tconnect() {\n\t\tif (this.ws || this.closed) return;\n\t\tconst author = identityStore.author;\n\t\tconst token = authStore.token;\n\t\tconst params = new URLSearchParams({ author });\n\t\tif (token.length > 0) params.set(\"token\", token);\n\t\tconst url = `${WS_BASE()}/${encodeURIComponent(this.roomId)}?${params.toString()}`;\n\t\tconst ws = new WebSocket(url);\n\t\tws.binaryType = \"arraybuffer\";\n\t\tthis.ws = ws;\n\t\tws.addEventListener(\"open\", () => {\n\t\t\tthis.connected = true;\n\t\t\tthis.backoffMs = BACKOFF_START_MS;\n\t\t\tfor (const u of this.buffered) ws.send(u);\n\t\t\tthis.buffered = [];\n\t\t\tws.send(encode({\n\t\t\t\tkind: \"sync_step1\",\n\t\t\t\tstateVector: Y.encodeStateVector(this.doc)\n\t\t\t}));\n\t\t});\n\t\tws.addEventListener(\"message\", (event) => {\n\t\t\tconst data = event.data instanceof ArrayBuffer ? new Uint8Array(event.data) : null;\n\t\t\tif (!data) return;\n\t\t\tconst msg = decode(data);\n\t\t\tif (!msg) return;\n\t\t\tif (msg.kind === \"sync_step1\") {\n\t\t\t\tconst diff = Y.encodeStateAsUpdate(this.doc, msg.stateVector);\n\t\t\t\tws.send(encode({\n\t\t\t\t\tkind: \"sync_step2\",\n\t\t\t\t\tupdate: diff\n\t\t\t\t}));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (msg.kind === \"sync_step2\" || msg.kind === \"update\") {\n\t\t\t\tY.applyUpdate(this.doc, msg.update, \"remote\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (msg.kind === \"history_snapshot\") {\n\t\t\t\tthis.historyView = msg.view;\n\t\t\t\tthis.fanHistoryChange();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (msg.kind === \"history_append\") {\n\t\t\t\tif (msg.cursor < this.historyView.entries.length) this.historyView = {\n\t\t\t\t\tentries: this.historyView.entries.slice(0, msg.cursor),\n\t\t\t\t\tcursor: msg.cursor\n\t\t\t\t};\n\t\t\t\tthis.historyView = {\n\t\t\t\t\tentries: [...this.historyView.entries, msg.entry],\n\t\t\t\t\tcursor: msg.cursor\n\t\t\t\t};\n\t\t\t\tthis.fanHistoryChange();\n\t\t\t\treturn;\n\t\t\t}\n\t\t});\n\t\tws.addEventListener(\"close\", () => {\n\t\t\tthis.ws = null;\n\t\t\tthis.connected = false;\n\t\t\tif (this.closed) return;\n\t\t\tthis.scheduleReconnect();\n\t\t});\n\t\tws.addEventListener(\"error\", () => {});\n\t}\n\tscheduleReconnect() {\n\t\tif (this.reconnectTimer) return;\n\t\tconst delay = this.backoffMs;\n\t\tthis.backoffMs = Math.min(this.backoffMs * 2, BACKOFF_MAX_MS);\n\t\tthis.reconnectTimer = setTimeout(() => {\n\t\t\tthis.reconnectTimer = null;\n\t\t\tthis.connect();\n\t\t}, delay);\n\t}\n\tsend(frame) {\n\t\tif (this.connected && this.ws && this.ws.readyState === WebSocket.OPEN) {\n\t\t\tthis.ws.send(frame);\n\t\t\treturn;\n\t\t}\n\t\tthis.buffered.push(frame);\n\t}\n\t/** Read the current snapshot from the Y.Map. */\n\tget snapshot() {\n\t\treturn this.map.get(\"data\") ?? null;\n\t}\n\t/** Set the whole snapshot. Yjs encodes the diff under the hood. */\n\tsetSnapshot(next) {\n\t\tthis.doc.transact(() => {\n\t\t\tthis.map.set(ROOM_DOC_FIELD, next);\n\t\t});\n\t}\n\t/** Subscribe to snapshot changes (both remote and local). */\n\tobserve(listener) {\n\t\tthis.listeners.add(listener);\n\t\treturn () => {\n\t\t\tthis.listeners.delete(listener);\n\t\t};\n\t}\n\t/** Current shared history view (entries + cursor). */\n\tget history() {\n\t\treturn this.historyView;\n\t}\n\t/** Look up an entry by id. Convenience for the panel. */\n\thistoryEntry(entryId) {\n\t\treturn this.historyView.entries.find((e) => e.id === entryId) ?? null;\n\t}\n\t/** Subscribe to shared history changes. */\n\tobserveHistory(listener) {\n\t\tthis.historyListeners.add(listener);\n\t\treturn () => {\n\t\t\tthis.historyListeners.delete(listener);\n\t\t};\n\t}\n\t/**\n\t* Step the shared cursor to the entry one before the current one. No-op if\n\t* the cursor is already at the oldest entry. This is what Ctrl+Z / the\n\t* toolbar undo button call into. Never a local Y.UndoManager replay.\n\t*/\n\tundo() {\n\t\tconst target = this.historyView.entries[this.historyView.cursor - 1];\n\t\tif (target) this.jumpTo(target.id);\n\t}\n\t/** Step the shared cursor forward by one entry. */\n\tredo() {\n\t\tconst target = this.historyView.entries[this.historyView.cursor + 1];\n\t\tif (target) this.jumpTo(target.id);\n\t}\n\t/** True when there's a previous entry to step back to. */\n\tget canUndo() {\n\t\treturn this.historyView.cursor > 0;\n\t}\n\t/** True when there's a forward entry to step to. */\n\tget canRedo() {\n\t\treturn this.historyView.cursor < this.historyView.entries.length - 1;\n\t}\n\t/**\n\t* Request the server to time-travel to the entry with id. The server applies\n\t* the snapshot to the Y.Doc and broadcasts a fresh history_snapshot, which\n\t* keeps cursors aligned across peers.\n\t*/\n\tjumpTo(entryId) {\n\t\tthis.send(encode({\n\t\t\tkind: \"history_jump\",\n\t\t\tentryId\n\t\t}));\n\t}\n\t/**\n\t* Wipe the shared history log for this room. The server replies with a\n\t* fresh history_snapshot containing a single \"Cleared history\" anchor\n\t* entry that points at the current snapshot, so time-travel still works\n\t* — there's just nothing prior to jump back to.\n\t*/\n\tclearHistory() {\n\t\tthis.send(encode({ kind: \"history_clear\" }));\n\t}\n\tfanHistoryChange() {\n\t\tfor (const l of this.historyListeners) l(this.historyView);\n\t}\n\tdestroy() {\n\t\tthis.closed = true;\n\t\tthis.listeners.clear();\n\t\tthis.historyListeners.clear();\n\t\tif (this.reconnectTimer) {\n\t\t\tclearTimeout(this.reconnectTimer);\n\t\t\tthis.reconnectTimer = null;\n\t\t}\n\t\tif (this.ws) {\n\t\t\ttry {\n\t\t\t\tthis.ws.close();\n\t\t\t} catch {}\n\t\t\tthis.ws = null;\n\t\t}\n\t\tthis.doc.destroy();\n\t}\n};\n//#endregion\n//#region src/lib/client/sync/index.ts\nvar registry = /* @__PURE__ */ new Map();\nvar ensureBrowser = () => {\n\tthrow new Error(\"Sync client is only available in the browser\");\n};\nvar getRoomClient = (kind, id) => {\n\tensureBrowser();\n\tconst room = makeRoomId(kind, id);\n\tconst existing = registry.get(room);\n\tif (existing) return existing;\n\tconst client = new YDocClient(room);\n\tregistry.set(room, client);\n\tclient.connect();\n\treturn client;\n};\n//#endregion\n//#region src/lib/client/reconcile.ts\n/**\n* In-place reconciliation of a `target` object/array to match `next`, with\n* **id-keyed array reordering**. Use this when you need Svelte's `{#each ... (id)}`\n* blocks to preserve DOM identity across a structural change. Naively applying\n* a JSON patch field-by-field briefly produces duplicate ids (Svelte throws\n* `each_key_duplicate` mid-flush) and rewrites every leaf bound to a moved row.\n*\n* Rules:\n* - Arrays whose every item has an `id` string are reconciled by id:\n* splice items into their new positions, then recurse into each pair.\n* - Other arrays are reconciled by index (length-first, then per-element).\n* - Plain objects recurse key-by-key; keys missing from `next` are deleted.\n* - Primitives or type mismatches are replaced via the parent's setter.\n*\n* Returns the mutated target for convenience.\n*/\nvar isPlainObject = (v) => !!v && typeof v === \"object\" && !Array.isArray(v);\nvar isIdItem = (v) => !!v && typeof v === \"object\" && typeof v.id === \"string\";\nvar reconcileObject = (target, next) => {\n\tfor (const key of Object.keys(target)) if (!(key in next)) delete target[key];\n\tfor (const key of Object.keys(next)) {\n\t\tconst nv = next[key];\n\t\tif (!(key in target)) {\n\t\t\ttarget[key] = nv;\n\t\t\tcontinue;\n\t\t}\n\t\tconst tv = target[key];\n\t\tif (Array.isArray(tv) && Array.isArray(nv)) reconcileArray(tv, nv);\n\t\telse if (isPlainObject(tv) && isPlainObject(nv)) reconcileObject(tv, nv);\n\t\telse if (tv !== nv) target[key] = nv;\n\t}\n};\nvar reconcileArray = (target, next) => {\n\tconst targetKeyed = target.every(isIdItem);\n\tconst nextKeyed = next.every(isIdItem);\n\tif (targetKeyed && nextKeyed) {\n\t\tconst targetItems = target;\n\t\tconst nextItems = next;\n\t\tconst byId = /* @__PURE__ */ new Map();\n\t\tfor (const it of targetItems) byId.set(it.id, it);\n\t\tfor (let i = 0; i < nextItems.length; i += 1) {\n\t\t\tconst desired = nextItems[i];\n\t\t\tconst existing = byId.get(desired.id);\n\t\t\tconst here = targetItems[i];\n\t\t\tif (existing && here && here.id === desired.id) {\n\t\t\t\treconcileObject(existing, desired);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (existing) {\n\t\t\t\tconst fromIdx = targetItems.indexOf(existing);\n\t\t\t\tif (fromIdx !== i) {\n\t\t\t\t\ttargetItems.splice(fromIdx, 1);\n\t\t\t\t\ttargetItems.splice(i, 0, existing);\n\t\t\t\t}\n\t\t\t\treconcileObject(existing, desired);\n\t\t\t} else {\n\t\t\t\ttargetItems.splice(i, 0, desired);\n\t\t\t\tbyId.set(desired.id, desired);\n\t\t\t}\n\t\t}\n\t\tif (targetItems.length > nextItems.length) targetItems.splice(nextItems.length, targetItems.length - nextItems.length);\n\t\treturn;\n\t}\n\tif (target.length > next.length) target.splice(next.length, target.length - next.length);\n\tfor (let i = 0; i < next.length; i += 1) {\n\t\tconst nv = next[i];\n\t\tif (i >= target.length) {\n\t\t\ttarget.push(nv);\n\t\t\tcontinue;\n\t\t}\n\t\tconst tv = target[i];\n\t\tif (Array.isArray(tv) && Array.isArray(nv)) reconcileArray(tv, nv);\n\t\telse if (isPlainObject(tv) && isPlainObject(nv)) reconcileObject(tv, nv);\n\t\telse if (tv !== nv) target[i] = nv;\n\t}\n};\nvar reconcileInPlace = (target, next) => {\n\tif (Array.isArray(target) && Array.isArray(next)) reconcileArray(target, next);\n\telse if (isPlainObject(target) && isPlainObject(next)) reconcileObject(target, next);\n\treturn target;\n};\n/**\n* Deep-clone an object built from a mix of Svelte $state proxies and plain\n* objects to a fully plain POJO tree. Cheap, safe, and breaks proxy identity\n* sharing. Critical before handing the value to in-place mutation or to a\n* Yjs setter (which serializes the value and would otherwise see the live,\n* shared proxy state).\n*/\nvar deepClonePlain = (value) => JSON.parse(JSON.stringify(value));\n//#endregion\nexport { reconcileInPlace as n, getRoomClient as r, deepClonePlain as t };\n"],"names":[],"mappings":";;;;;;AAgCA;AACA;AACA,IAAI,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACnF,IAAI,iBAAiB,GAAG,CAAC,IAAI,KAAK;AAClC,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AACjC,CAAC,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,OAAO,IAAI;AACtC,CAAC,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AACrC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACG,IAAC,oBAAoB,GAAG,CAAC,OAAO,KAAK;AACxC,CAAC,MAAM,OAAO,mBAAmB,IAAI,GAAG,EAAE;AAC1C,CAAC,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,gBAAgB,EAAE;AACrF,EAAE,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI;AACtD,EAAE,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;AAClC,EAAE,IAAI,CAAC,GAAG,EAAE;AACZ,GAAG,GAAG,GAAG;AACT,IAAI,MAAM,kBAAkB,IAAI,GAAG,EAAE;AACrC,IAAI,QAAQ,kBAAkB,IAAI,GAAG;AACrC,IAAI;AACJ,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC;AAC9B,EAAE;AACF,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE;AAC1D,GAAG,IAAI,EAAE,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;AACpC,GAAG,IAAI,EAAE,GAAG,CAAC,IAAI;AACjB,GAAG,IAAI,EAAE,GAAG,CAAC,IAAI;AACjB,GAAG,MAAM,EAAE;AACX,GAAG,CAAC;AACJ,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;AAChC,CAAC;AACD,CAAC,MAAM,mBAAmB,mBAAmB,IAAI,GAAG,EAAE;AACtD,CAAC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;AACnF,CAAC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/E,CAAC,MAAM,OAAO,GAAG,EAAE;AACnB,CAAC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;AACrC,EAAE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC;AACrD,EAAE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;AACpC,EAAE,MAAM,WAAW,mBAAmB,IAAI,GAAG,EAAE;AAC/C,EAAE,IAAI,GAAG,EAAE,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AACvE,EAAE,IAAI,QAAQ,EAAE,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE;AACjD,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;AAChB,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AACnC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE;AACZ,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI;AAChB,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI;AAChB,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI;AAChB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM;AACpB,IAAI,KAAK,EAAE,CAAC,CAAC;AACb,IAAI,CAAC;AACL,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC9F,EAAE,OAAO,CAAC,IAAI,CAAC;AACf,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE;AACnB,GAAG,IAAI,EAAE,UAAU,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;AACjD,GAAG,SAAS;AACZ,GAAG,WAAW,EAAE,QAAQ,EAAE,WAAW;AACrC,GAAG,UAAU,EAAE,QAAQ,EAAE,UAAU;AACnC,GAAG,MAAM;AACT,GAAG,cAAc,EAAE,QAAQ,KAAK,MAAM;AACtC,GAAG,cAAc,EAAE,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,GAAG;AAC3D,GAAG,CAAC;AACJ,CAAC;AACD,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAC/D,CAAC,OAAO,OAAO;AACf;AACA;AACA;AACA,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK;AACxB,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,OAAO;AAC7C,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACG,IAAC,iBAAiB,GAAG,CAAC,OAAO,KAAK;AACrC,CAAC,MAAM,MAAM,mBAAmB,IAAI,GAAG,EAAE;AACzC,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK;AAChC,EAAE,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7B,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,GAAG,IAAI,GAAG,EAAE;AACZ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;AACzB,EAAE;AACF,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACnB,CAAC,CAAC;AACF,CAAC,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE;AACzC,EAAE,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE;AACrC,GAAG,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AAC1D,IAAI,SAAS,EAAE,OAAO,CAAC,EAAE;AACzB,IAAI,WAAW,EAAE,OAAO,CAAC,IAAI;AAC7B,IAAI,QAAQ,EAAE,GAAG,CAAC,EAAE;AACpB,IAAI,UAAU,EAAE,GAAG,CAAC,IAAI;AACxB,IAAI,MAAM,EAAE;AACZ,IAAI,CAAC;AACL,GAAG,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAClG,IAAI,SAAS,EAAE,OAAO,CAAC,EAAE;AACzB,IAAI,WAAW,EAAE,OAAO,CAAC,IAAI;AAC7B,IAAI,QAAQ,EAAE,GAAG,CAAC,EAAE;AACpB,IAAI,UAAU,EAAE,GAAG,CAAC,IAAI;AACxB,IAAI,MAAM,EAAE,eAAe;AAC3B,IAAI,WAAW,EAAE,MAAM,CAAC;AACxB,IAAI,CAAC;AACL,GAAG,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AACxG,IAAI,SAAS,EAAE,OAAO,CAAC,EAAE;AACzB,IAAI,WAAW,EAAE,OAAO,CAAC,IAAI;AAC7B,IAAI,QAAQ,EAAE,GAAG,CAAC,EAAE;AACpB,IAAI,UAAU,EAAE,GAAG,CAAC,IAAI;AACxB,IAAI,MAAM,EAAE,oBAAoB;AAChC,IAAI,WAAW,EAAE,IAAI,CAAC;AACtB,IAAI,CAAC;AACL,EAAE;AACF,EAAE,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAC3G,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE;AACxB,GAAG,WAAW,EAAE,OAAO,CAAC,IAAI;AAC5B,GAAG,MAAM,EAAE,qBAAqB;AAChC,GAAG,WAAW,EAAE,IAAI,CAAC;AACrB,GAAG,CAAC;AACJ,CAAC;AACD,CAAC,MAAM,OAAO,GAAG,EAAE;AACnB,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC;AACtD,EAAE,IAAI;AACN,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC;AACtB,EAAE;AACF,EAAE,CAAC;AACH,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AACxB,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC;AAChE,EAAE,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC;AACH,CAAC,OAAO,OAAO;AACf;AACG,IAAC,iBAAiB,GAAG,CAAC,OAAO,KAAK;AACrC,CAAC,MAAM,GAAG,mBAAmB,IAAI,GAAG,EAAE;AACtC,CAAC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AAC9B,EAAE,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;AACjC,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,GAAG,IAAI,GAAG,EAAE;AACZ,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC;AAC7B,EAAE;AACF,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAClB,CAAC;AACD,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM;AAC5D,EAAE,KAAK;AACP,EAAE;AACF,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACG,IAAC,sBAAsB,GAAG,CAAC,OAAO,KAAK;AAC1C,CAAC,MAAM,WAAW,mBAAmB,IAAI,GAAG,EAAE;AAC9C,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK;AACxC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;AACxB,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI;AACf,GAAG;AACH,GAAG,CAAC;AACJ,CAAC,CAAC,CAAC;AACH,CAAC,MAAM,MAAM,mBAAmB,IAAI,GAAG,EAAE;AACzC,CAAC,MAAM,YAAY,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,MAAM,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;AAClE,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK;AACxC,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;AAC3B,EAAE,MAAM,GAAG,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAClC,EAAE,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;AAC3B,EAAE,IAAI,CAAC,GAAG,EAAE;AACZ,GAAG,GAAG,GAAG;AACT,IAAI,OAAO,EAAE,EAAE;AACf,IAAI,SAAS,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI;AACjD,IAAI;AACJ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;AACvB,EAAE;AACF,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1B,CAAC,CAAC;AACF,CAAC,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE;AACzC,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE;AAC3B,EAAE,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI;AAC/B,EAAE,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE;AAChF,GAAG,SAAS,EAAE,MAAM;AACpB,GAAG,WAAW,EAAE,QAAQ;AACxB,GAAG,MAAM,EAAE,UAAU;AACrB,GAAG,WAAW,EAAE,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC;AAC/C,GAAG,CAAC;AACJ,EAAE,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE;AACrC,GAAG,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,MAAM,CAAC,IAAI,KAAK,oBAAoB,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;AAC3G,IAAI,SAAS,EAAE,MAAM;AACrB,IAAI,WAAW,EAAE,QAAQ;AACzB,IAAI,QAAQ,EAAE,GAAG,CAAC,EAAE;AACpB,IAAI,UAAU,EAAE,GAAG,CAAC,IAAI;AACxB,IAAI,MAAM,EAAE,eAAe;AAC3B,IAAI,WAAW,EAAE,MAAM,CAAC;AACxB,IAAI,CAAC;AACL,GAAG,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,oBAAoB,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACjH,IAAI,SAAS,EAAE,MAAM;AACrB,IAAI,WAAW,EAAE,QAAQ;AACzB,IAAI,QAAQ,EAAE,GAAG,CAAC,EAAE;AACpB,IAAI,UAAU,EAAE,GAAG,CAAC,IAAI;AACxB,IAAI,MAAM,EAAE,oBAAoB;AAChC,IAAI,WAAW,EAAE,IAAI,CAAC;AACtB,IAAI,CAAC;AACL,EAAE;AACF,EAAE,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,oBAAoB,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACpH,GAAG,SAAS,EAAE,MAAM;AACpB,GAAG,WAAW,EAAE,QAAQ;AACxB,GAAG,MAAM,EAAE,qBAAqB;AAChC,GAAG,WAAW,EAAE,IAAI,CAAC;AACrB,GAAG,CAAC;AACJ,CAAC;AACD,CAAC,MAAM,OAAO,GAAG,EAAE;AACnB,CAAC,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,EAAE;AAClC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;AACxC,EAAE,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;AACtC,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAClC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE;AACpB,EAAE,OAAO,CAAC,IAAI,CAAC;AACf,GAAG,aAAa,EAAE,MAAM;AACxB,GAAG,eAAe,EAAE,IAAI,CAAC,IAAI;AAC7B,GAAG,WAAW,EAAE,IAAI;AACpB,GAAG,aAAa,EAAE,EAAE,CAAC,IAAI;AACzB,GAAG,OAAO,EAAE,GAAG,CAAC;AAChB,GAAG,CAAC;AACJ,CAAC;AACD,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AACxB,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,KAAK,IAAI,CAAC;AACzD,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,KAAK,IAAI,CAAC;AACzD,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;AAC/B,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;AACpG,CAAC,CAAC,CAAC;AACH,CAAC,OAAO,OAAO;AACf;AACG,IAAC,sBAAsB,GAAG,CAAC,OAAO,KAAK;AAC1C,CAAC,MAAM,GAAG,mBAAmB,IAAI,GAAG,EAAE;AACtC,CAAC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AAC9B,EAAE,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC;AAC1C,EAAE,IAAI,CAAC,KAAK,EAAE;AACd,GAAG,KAAK,GAAG;AACX,IAAI,aAAa,EAAE,KAAK,CAAC,aAAa;AACtC,IAAI,eAAe,EAAE,KAAK,CAAC,eAAe;AAC1C,IAAI,WAAW,EAAE;AACjB,IAAI;AACJ,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC;AACtC,EAAE;AACF,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,CAAC;AACD,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;AAChC;;ACtSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,GAAG,MAAM,QAAQ,CAAC,QAAQ,KAAK,QAAQ,GAAG,MAAM,GAAG,KAAK;AACrE,IAAI,OAAO,GAAG,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3D,IAAI,gBAAgB,GAAG,GAAG;AAC1B,IAAI,cAAc,GAAG,GAAG;AACxB,IAAI,UAAU,GAAG,MAAM;AACvB,CAAC,MAAM;AACP,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE;AAClB,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;AACpC,CAAC,EAAE,GAAG,IAAI;AACV,CAAC,SAAS,mBAAmB,IAAI,GAAG,EAAE;AACtC,CAAC,gBAAgB,mBAAmB,IAAI,GAAG,EAAE;AAC7C,CAAC,WAAW,GAAG;AACf,EAAE,OAAO,EAAE,EAAE;AACb,EAAE,MAAM,EAAE;AACV,EAAE;AACF,CAAC,SAAS,GAAG,KAAK;AAClB,CAAC,MAAM,GAAG,KAAK;AACf,CAAC,SAAS,GAAG,gBAAgB;AAC7B,CAAC,cAAc,GAAG,IAAI;AACtB,CAAC,QAAQ,GAAG,EAAE;AACd,CAAC,WAAW,CAAC,MAAM,EAAE;AACrB,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM;AACtB,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK;AAC5C,GAAG,MAAM,QAAQ,GAAG,MAAM,KAAK,QAAQ;AACvC,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACnC,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI;AACJ,IAAI,CAAC,CAAC;AACN,GAAG,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC;AAC7C,GAAG,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO;AAClD,GAAG,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,EAAE,SAAS,CAAC;AAC9D,EAAE,CAAC,CAAC;AACJ,CAAC;AACD,CAAC,OAAO,GAAG;AACX,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;AAC9B,EAAE,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM;AACrC,EAAE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK;AAC/B,EAAE,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;AAChD,EAAE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC;AAClD,EAAE,MAAM,GAAG,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpF,EAAE,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC;AAC/B,EAAE,EAAE,CAAC,UAAU,GAAG,aAAa;AAC/B,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE;AACd,EAAE,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM;AACpC,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI;AACxB,GAAG,IAAI,CAAC,SAAS,GAAG,gBAAgB;AACpC,GAAG,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE;AACrB,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;AAClB,IAAI,IAAI,EAAE,YAAY;AACtB,IAAI,WAAW,EAAE,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG;AAC7C,IAAI,CAAC,CAAC;AACN,EAAE,CAAC,CAAC;AACJ,EAAE,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,KAAK;AAC5C,GAAG,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,YAAY,WAAW,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI;AACrF,GAAG,IAAI,CAAC,IAAI,EAAE;AACd,GAAG,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC;AAC3B,GAAG,IAAI,CAAC,GAAG,EAAE;AACb,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE;AAClC,IAAI,MAAM,IAAI,GAAG,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,WAAW,CAAC;AACjE,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;AACnB,KAAK,IAAI,EAAE,YAAY;AACvB,KAAK,MAAM,EAAE;AACb,KAAK,CAAC,CAAC;AACP,IAAI;AACJ,GAAG;AACH,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC3D,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;AACjD,IAAI;AACJ,GAAG;AACH,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,kBAAkB,EAAE;AACxC,IAAI,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,IAAI;AAC/B,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC3B,IAAI;AACJ,GAAG;AACH,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,EAAE;AACtC,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,GAAG;AACzE,KAAK,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;AAC3D,KAAK,MAAM,EAAE,GAAG,CAAC;AACjB,KAAK;AACL,IAAI,IAAI,CAAC,WAAW,GAAG;AACvB,KAAK,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC;AACtD,KAAK,MAAM,EAAE,GAAG,CAAC;AACjB,KAAK;AACL,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC3B,IAAI;AACJ,GAAG;AACH,EAAE,CAAC,CAAC;AACJ,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM;AACrC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI;AACjB,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK;AACzB,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE;AACpB,GAAG,IAAI,CAAC,iBAAiB,EAAE;AAC3B,EAAE,CAAC,CAAC;AACJ,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AACxC,CAAC;AACD,CAAC,iBAAiB,GAAG;AACrB,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE;AAC3B,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS;AAC9B,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,cAAc,CAAC;AAC/D,EAAE,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,MAAM;AACzC,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI;AAC7B,GAAG,IAAI,CAAC,OAAO,EAAE;AACjB,EAAE,CAAC,EAAE,KAAK,CAAC;AACX,CAAC;AACD,CAAC,IAAI,CAAC,KAAK,EAAE;AACb,EAAE,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE;AAC1E,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;AACtB,GAAG;AACH,EAAE;AACF,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3B,CAAC;AACD;AACA,CAAC,IAAI,QAAQ,GAAG;AAChB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI;AACrC,CAAC;AACD;AACA,CAAC,WAAW,CAAC,IAAI,EAAE;AACnB,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM;AAC1B,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC;AACrC,EAAE,CAAC,CAAC;AACJ,CAAC;AACD;AACA,CAAC,OAAO,CAAC,QAAQ,EAAE;AACnB,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC9B,EAAE,OAAO,MAAM;AACf,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;AAClC,EAAE,CAAC;AACH,CAAC;AACD;AACA,CAAC,IAAI,OAAO,GAAG;AACf,EAAE,OAAO,IAAI,CAAC,WAAW;AACzB,CAAC;AACD;AACA,CAAC,YAAY,CAAC,OAAO,EAAE;AACvB,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI,IAAI;AACvE,CAAC;AACD;AACA,CAAC,cAAc,CAAC,QAAQ,EAAE;AAC1B,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC;AACrC,EAAE,OAAO,MAAM;AACf,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC;AACzC,EAAE,CAAC;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC,IAAI,GAAG;AACR,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;AACtE,EAAE,IAAI,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;AACpC,CAAC;AACD;AACA,CAAC,IAAI,GAAG;AACR,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;AACtE,EAAE,IAAI,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;AACpC,CAAC;AACD;AACA,CAAC,IAAI,OAAO,GAAG;AACf,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;AACpC,CAAC;AACD;AACA,CAAC,IAAI,OAAO,GAAG;AACf,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;AACtE,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC,MAAM,CAAC,OAAO,EAAE;AACjB,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACnB,GAAG,IAAI,EAAE,cAAc;AACvB,GAAG;AACH,GAAG,CAAC,CAAC;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,YAAY,GAAG;AAChB,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;AAC9C,CAAC;AACD,CAAC,gBAAgB,GAAG;AACpB,EAAE,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;AAC5D,CAAC;AACD,CAAC,OAAO,GAAG;AACX,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI;AACpB,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACxB,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;AAC/B,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE;AAC3B,GAAG,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;AACpC,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI;AAC7B,EAAE;AACF,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE;AACf,GAAG,IAAI;AACP,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;AACnB,GAAG,CAAC,CAAC,MAAM,CAAC;AACZ,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI;AACjB,EAAE;AACF,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;AACpB,CAAC;AACD,CAAC;AACD;AACA;AACA,IAAI,QAAQ,mBAAmB,IAAI,GAAG,EAAE;AACxC,IAAI,aAAa,GAAG,MAAM;AAC1B,CAAC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC;AAChE,CAAC;AACE,IAAC,aAAa,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK;AAClC,CAAC,aAAa,EAAE;AAChB,CAAC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;AAClC,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACpC,CAAC,IAAI,QAAQ,EAAE,OAAO,QAAQ;AAC9B,CAAC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC;AACpC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AAC3B,CAAC,MAAM,CAAC,OAAO,EAAE;AACjB,CAAC,OAAO,MAAM;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5E,IAAI,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ;AAC9E,IAAI,eAAe,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK;AACxC,CAAC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,EAAE,OAAO,MAAM,CAAC,GAAG,CAAC;AAC9E,CAAC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACtC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;AACtB,EAAE,IAAI,EAAE,GAAG,IAAI,MAAM,CAAC,EAAE;AACxB,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;AACnB,GAAG;AACH,EAAE;AACF,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC;AACxB,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC;AACpE,OAAO,IAAI,aAAa,CAAC,EAAE,CAAC,IAAI,aAAa,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC;AAC1E,OAAO,IAAI,EAAE,KAAK,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;AACtC,CAAC;AACD,CAAC;AACD,IAAI,cAAc,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK;AACvC,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;AAC3C,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AACvC,CAAC,IAAI,WAAW,IAAI,SAAS,EAAE;AAC/B,EAAE,MAAM,WAAW,GAAG,MAAM;AAC5B,EAAE,MAAM,SAAS,GAAG,IAAI;AACxB,EAAE,MAAM,IAAI,mBAAmB,IAAI,GAAG,EAAE;AACxC,EAAE,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACnD,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAChD,GAAG,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC;AAC/B,GAAG,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;AACxC,GAAG,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC;AAC9B,GAAG,IAAI,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,EAAE;AACnD,IAAI,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC;AACtC,IAAI;AACJ,GAAG;AACH,GAAG,IAAI,QAAQ,EAAE;AACjB,IAAI,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC;AACjD,IAAI,IAAI,OAAO,KAAK,CAAC,EAAE;AACvB,KAAK,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AACnC,KAAK,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC;AACvC,IAAI;AACJ,IAAI,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC;AACtC,GAAG,CAAC,MAAM;AACV,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;AACrC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC;AACjC,GAAG;AACH,EAAE;AACF,EAAE,IAAI,WAAW,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AACxH,EAAE;AACF,CAAC;AACD,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACzF,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC1C,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE;AAC1B,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AAClB,GAAG;AACH,EAAE;AACF,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;AACtB,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC;AACpE,OAAO,IAAI,aAAa,CAAC,EAAE,CAAC,IAAI,aAAa,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC;AAC1E,OAAO,IAAI,EAAE,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE;AACpC,CAAC;AACD,CAAC;AACE,IAAC,gBAAgB,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK;AACzC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC;AAC/E,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC;AACrF,CAAC,OAAO,MAAM;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACG,IAAC,cAAc,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;;;;"}