unspaghettit 0.1.1 → 0.1.3

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 (201) hide show
  1. package/build/client/_app/immutable/chunks/{DBv9bGAW.js → BfY4mTb9.js} +1 -1
  2. package/build/client/_app/immutable/chunks/BfY4mTb9.js.br +0 -0
  3. package/build/client/_app/immutable/chunks/BfY4mTb9.js.gz +0 -0
  4. package/build/client/_app/immutable/chunks/{D1HLO01M.js → BnwBuOjI.js} +1 -1
  5. package/build/client/_app/immutable/chunks/BnwBuOjI.js.br +0 -0
  6. package/build/client/_app/immutable/chunks/BnwBuOjI.js.gz +0 -0
  7. package/build/client/_app/immutable/chunks/{B6PktD7d.js → BrrMecpF.js} +1 -1
  8. package/build/client/_app/immutable/chunks/BrrMecpF.js.br +0 -0
  9. package/build/client/_app/immutable/chunks/{B6PktD7d.js.gz → BrrMecpF.js.gz} +0 -0
  10. package/build/client/_app/immutable/chunks/Bz49HRmq.js +1 -0
  11. package/build/client/_app/immutable/chunks/Bz49HRmq.js.br +2 -0
  12. package/build/client/_app/immutable/chunks/Bz49HRmq.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/{CguRSd-5.js → C1m9NAMJ.js} +1 -1
  14. package/build/client/_app/immutable/chunks/C1m9NAMJ.js.br +0 -0
  15. package/build/client/_app/immutable/chunks/C1m9NAMJ.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/{NCHnxCls.js → Cn34c_jV.js} +1 -1
  17. package/build/client/_app/immutable/chunks/Cn34c_jV.js.br +0 -0
  18. package/build/client/_app/immutable/chunks/Cn34c_jV.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/DOr12b1e.js +1 -0
  20. package/build/client/_app/immutable/chunks/DOr12b1e.js.br +0 -0
  21. package/build/client/_app/immutable/chunks/DOr12b1e.js.gz +0 -0
  22. package/build/client/_app/immutable/chunks/{DcwZSy0_.js → DaYHlWy4.js} +1 -1
  23. package/build/client/_app/immutable/chunks/DaYHlWy4.js.br +0 -0
  24. package/build/client/_app/immutable/chunks/DaYHlWy4.js.gz +0 -0
  25. package/build/client/_app/immutable/chunks/{B0pXxvJ_.js → Hjc8wOqN.js} +1 -1
  26. package/build/client/_app/immutable/chunks/Hjc8wOqN.js.br +0 -0
  27. package/build/client/_app/immutable/chunks/Hjc8wOqN.js.gz +0 -0
  28. package/build/client/_app/immutable/chunks/{BWyAKTdb.js → xHPLuR82.js} +1 -1
  29. package/build/client/_app/immutable/chunks/xHPLuR82.js.br +0 -0
  30. package/build/client/_app/immutable/chunks/xHPLuR82.js.gz +0 -0
  31. package/build/client/_app/immutable/entry/{app.ByYY2fra.js → app.5pKSuZvm.js} +2 -2
  32. package/build/client/_app/immutable/entry/app.5pKSuZvm.js.br +0 -0
  33. package/build/client/_app/immutable/entry/app.5pKSuZvm.js.gz +0 -0
  34. package/build/client/_app/immutable/entry/start.BkagI65o.js +1 -0
  35. package/build/client/_app/immutable/entry/start.BkagI65o.js.br +1 -0
  36. package/build/client/_app/immutable/entry/start.BkagI65o.js.gz +0 -0
  37. package/build/client/_app/immutable/nodes/{0.D0WPAGlz.js → 0.CZX5zc0Q.js} +1 -1
  38. package/build/client/_app/immutable/nodes/0.CZX5zc0Q.js.br +0 -0
  39. package/build/client/_app/immutable/nodes/0.CZX5zc0Q.js.gz +0 -0
  40. package/build/client/_app/immutable/nodes/{1.D5WaXw6D.js → 1.DaKK4NEP.js} +1 -1
  41. package/build/client/_app/immutable/nodes/1.DaKK4NEP.js.br +0 -0
  42. package/build/client/_app/immutable/nodes/1.DaKK4NEP.js.gz +0 -0
  43. package/build/client/_app/immutable/nodes/{2.BFpBzITO.js → 2.Jg1A4D_a.js} +1 -1
  44. package/build/client/_app/immutable/nodes/2.Jg1A4D_a.js.br +0 -0
  45. package/build/client/_app/immutable/nodes/2.Jg1A4D_a.js.gz +0 -0
  46. package/build/client/_app/immutable/nodes/{3.CxjWJwcN.js → 3.Clh7og2x.js} +1 -1
  47. package/build/client/_app/immutable/nodes/3.Clh7og2x.js.br +0 -0
  48. package/build/client/_app/immutable/nodes/3.Clh7og2x.js.gz +0 -0
  49. package/build/client/_app/immutable/nodes/{4.CewrRsmy.js → 4.CshRM2Lr.js} +1 -1
  50. package/build/client/_app/immutable/nodes/4.CshRM2Lr.js.br +0 -0
  51. package/build/client/_app/immutable/nodes/4.CshRM2Lr.js.gz +0 -0
  52. package/build/client/_app/immutable/nodes/{5.sRbPcO4Q.js → 5.CnSV-xrW.js} +1 -1
  53. package/build/client/_app/immutable/nodes/5.CnSV-xrW.js.br +0 -0
  54. package/build/client/_app/immutable/nodes/5.CnSV-xrW.js.gz +0 -0
  55. package/build/client/_app/immutable/nodes/{6.CfR2Y2GG.js → 6.DxXwzsJE.js} +1 -1
  56. package/build/client/_app/immutable/nodes/6.DxXwzsJE.js.br +0 -0
  57. package/build/client/_app/immutable/nodes/6.DxXwzsJE.js.gz +0 -0
  58. package/build/client/_app/immutable/nodes/{7.BTXfUVeB.js → 7.BCnP5haR.js} +1 -1
  59. package/build/client/_app/immutable/nodes/7.BCnP5haR.js.br +0 -0
  60. package/build/client/_app/immutable/nodes/7.BCnP5haR.js.gz +0 -0
  61. package/build/client/_app/immutable/nodes/{8.2rWOh-Qs.js → 8.CLTeB2GB.js} +1 -1
  62. package/build/client/_app/immutable/nodes/8.CLTeB2GB.js.br +0 -0
  63. package/build/client/_app/immutable/nodes/8.CLTeB2GB.js.gz +0 -0
  64. package/build/client/_app/version.json +1 -1
  65. package/build/client/_app/version.json.br +0 -0
  66. package/build/client/_app/version.json.gz +0 -0
  67. package/build/server/chunks/{0-D5JsaU3E.js → 0-BTfz0Of-.js} +3 -3
  68. package/build/server/chunks/{0-D5JsaU3E.js.map → 0-BTfz0Of-.js.map} +1 -1
  69. package/build/server/chunks/1-DVxapqz_.js +9 -0
  70. package/build/server/chunks/{1-HfMv8lKr.js.map → 1-DVxapqz_.js.map} +1 -1
  71. package/build/server/chunks/2-o8NqwRPK.js +9 -0
  72. package/build/server/chunks/{2-DDsdfo9q.js.map → 2-o8NqwRPK.js.map} +1 -1
  73. package/build/server/chunks/{3-C7w_wPmm.js → 3-aQ6wpPZ0.js} +3 -3
  74. package/build/server/chunks/{3-C7w_wPmm.js.map → 3-aQ6wpPZ0.js.map} +1 -1
  75. package/build/server/chunks/4-CKnb6g4Z.js +9 -0
  76. package/build/server/chunks/{4-DRJPKVow.js.map → 4-CKnb6g4Z.js.map} +1 -1
  77. package/build/server/chunks/5-CX_P8-ZF.js +9 -0
  78. package/build/server/chunks/{5-B-Ymnm4j.js.map → 5-CX_P8-ZF.js.map} +1 -1
  79. package/build/server/chunks/6-DFW5VxTR.js +9 -0
  80. package/build/server/chunks/{6-DU93GcHy.js.map → 6-DFW5VxTR.js.map} +1 -1
  81. package/build/server/chunks/7-DnFULUMV.js +9 -0
  82. package/build/server/chunks/{7-Cm_ReRiH.js.map → 7-DnFULUMV.js.map} +1 -1
  83. package/build/server/chunks/8-Dj4_9bJf.js +9 -0
  84. package/build/server/chunks/{8-CVXLl5A5.js.map → 8-Dj4_9bJf.js.map} +1 -1
  85. package/build/server/chunks/{ProjectsIndex-CUZP9o0d.js → ProjectsIndex-D7CC73Zl.js} +4 -4
  86. package/build/server/chunks/{ProjectsIndex-CUZP9o0d.js.map → ProjectsIndex-D7CC73Zl.js.map} +1 -1
  87. package/build/server/chunks/{TransitionCatalog-CoZZTgtm.js → TransitionCatalog-DTyPpzOx.js} +3 -3
  88. package/build/server/chunks/{TransitionCatalog-CoZZTgtm.js.map → TransitionCatalog-DTyPpzOx.js.map} +1 -1
  89. package/build/server/chunks/{_layout.svelte-D4HPV7Sg.js → _layout.svelte-CR-mpOXI.js} +5 -5
  90. package/build/server/chunks/{_layout.svelte-D4HPV7Sg.js.map → _layout.svelte-CR-mpOXI.js.map} +1 -1
  91. package/build/server/chunks/{_page.svelte-B9wsRBQI.js → _page.svelte-B_6O8qHc.js} +4 -4
  92. package/build/server/chunks/{_page.svelte-B9wsRBQI.js.map → _page.svelte-B_6O8qHc.js.map} +1 -1
  93. package/build/server/chunks/{_page.svelte-DCxXGHjK.js → _page.svelte-BjCe8wYk.js} +4 -4
  94. package/build/server/chunks/{_page.svelte-DCxXGHjK.js.map → _page.svelte-BjCe8wYk.js.map} +1 -1
  95. package/build/server/chunks/{_page.svelte-MkoticD5.js → _page.svelte-BuQko4_m.js} +6 -6
  96. package/build/server/chunks/{_page.svelte-MkoticD5.js.map → _page.svelte-BuQko4_m.js.map} +1 -1
  97. package/build/server/chunks/{_page.svelte-CgJt00DJ.js → _page.svelte-D-84Efmk.js} +5 -5
  98. package/build/server/chunks/{_page.svelte-CgJt00DJ.js.map → _page.svelte-D-84Efmk.js.map} +1 -1
  99. package/build/server/chunks/{_page.svelte-BJhHWJmc.js → _page.svelte-DA9VMgMJ.js} +7 -7
  100. package/build/server/chunks/{_page.svelte-BJhHWJmc.js.map → _page.svelte-DA9VMgMJ.js.map} +1 -1
  101. package/build/server/chunks/{_page.svelte-B3pNkbHi.js → _page.svelte-DjNTmr8E.js} +6 -6
  102. package/build/server/chunks/{_page.svelte-B3pNkbHi.js.map → _page.svelte-DjNTmr8E.js.map} +1 -1
  103. package/build/server/chunks/{_page.svelte-B7Lx87jQ.js → _page.svelte-Du7_3UFZ.js} +6 -6
  104. package/build/server/chunks/{_page.svelte-B7Lx87jQ.js.map → _page.svelte-Du7_3UFZ.js.map} +1 -1
  105. package/build/server/chunks/{_server.ts-CGJ42j3N.js → _server.ts-BdzcoJIT.js} +3 -3
  106. package/build/server/chunks/{_server.ts-CGJ42j3N.js.map → _server.ts-BdzcoJIT.js.map} +1 -1
  107. package/build/server/chunks/{_server.ts-DRvbHDT7.js → _server.ts-DIaoNLgr.js} +2 -2
  108. package/build/server/chunks/{_server.ts-DRvbHDT7.js.map → _server.ts-DIaoNLgr.js.map} +1 -1
  109. package/build/server/chunks/{_server.ts-DutpjHA8.js → _server.ts-DT_ZhUmN.js} +3 -3
  110. package/build/server/chunks/{_server.ts-DutpjHA8.js.map → _server.ts-DT_ZhUmN.js.map} +1 -1
  111. package/build/server/chunks/{client-BzsV9Fwm.js → client-DFaYCXb6.js} +2 -2
  112. package/build/server/chunks/{client-BzsV9Fwm.js.map → client-DFaYCXb6.js.map} +1 -1
  113. package/build/server/chunks/{error.svelte-CmPavwov.js → error.svelte-DPMelZ0J.js} +4 -4
  114. package/build/server/chunks/{error.svelte-CmPavwov.js.map → error.svelte-DPMelZ0J.js.map} +1 -1
  115. package/build/server/chunks/{eventBus-CyUH4XrO.js → eventBus-DZTuqSUY.js} +20 -17
  116. package/build/server/chunks/{eventBus-CyUH4XrO.js.map → eventBus-DZTuqSUY.js.map} +1 -1
  117. package/build/server/chunks/{featuresStore.svelte-CVXY1PM9.js → featuresStore.svelte-BdKAxi8s.js} +3 -3
  118. package/build/server/chunks/{featuresStore.svelte-CVXY1PM9.js.map → featuresStore.svelte-BdKAxi8s.js.map} +1 -1
  119. package/build/server/chunks/{internal-pRy4ChhS.js → internal-BV4UVS3J.js} +2 -2
  120. package/build/server/chunks/{internal-pRy4ChhS.js.map → internal-BV4UVS3J.js.map} +1 -1
  121. package/build/server/chunks/{projectsStore.svelte-C48zsx8A.js → projectsStore.svelte-CDoQNAf3.js} +2 -2
  122. package/build/server/chunks/{projectsStore.svelte-C48zsx8A.js.map → projectsStore.svelte-CDoQNAf3.js.map} +1 -1
  123. package/build/server/chunks/{state-BWsD5sNs.js → state-BjtUAD4j.js} +2 -2
  124. package/build/server/chunks/{state-BWsD5sNs.js.map → state-BjtUAD4j.js.map} +1 -1
  125. package/build/server/chunks/{sync-Bwmi4hjA.js → sync-U3QbuF89.js} +4 -4
  126. package/build/server/chunks/{sync-Bwmi4hjA.js.map → sync-U3QbuF89.js.map} +1 -1
  127. package/build/server/chunks/syncBridge-DD-m8huD.js +33 -0
  128. package/build/server/chunks/syncBridge-DD-m8huD.js.map +1 -0
  129. package/build/server/index.js +1 -1
  130. package/build/server/index.js.map +1 -1
  131. package/build/server/manifest.js +13 -13
  132. package/build/server/manifest.js.map +1 -1
  133. package/cli/README.md +68 -14
  134. package/cli/clients/claude-code.ts +18 -5
  135. package/cli/commands/dashboard.ts +12 -6
  136. package/cli/commands/init.ts +33 -47
  137. package/cli/commands/serve.ts +7 -5
  138. package/cli/dashboard-server.cjs +10 -0
  139. package/cli/dashboard-server.ts +84 -0
  140. package/cli/unspa.ts +7 -1
  141. package/mcp-server/bin.ts +27 -4
  142. package/mcp-server/server.ts +1 -1
  143. package/mcp-server/sync-notifier.ts +11 -6
  144. package/package.json +1 -2
  145. package/src/features/maturity/domain/MaturityScorer.test.ts +26 -0
  146. package/src/features/maturity/domain/MaturityScorer.ts +32 -18
  147. package/src/lib/server/syncBridge.ts +19 -4
  148. package/build/client/_app/immutable/chunks/B0pXxvJ_.js.br +0 -0
  149. package/build/client/_app/immutable/chunks/B0pXxvJ_.js.gz +0 -0
  150. package/build/client/_app/immutable/chunks/B6PktD7d.js.br +0 -0
  151. package/build/client/_app/immutable/chunks/BWyAKTdb.js.br +0 -0
  152. package/build/client/_app/immutable/chunks/BWyAKTdb.js.gz +0 -0
  153. package/build/client/_app/immutable/chunks/BXB1O8xT.js +0 -1
  154. package/build/client/_app/immutable/chunks/BXB1O8xT.js.br +0 -0
  155. package/build/client/_app/immutable/chunks/BXB1O8xT.js.gz +0 -0
  156. package/build/client/_app/immutable/chunks/CguRSd-5.js.br +0 -0
  157. package/build/client/_app/immutable/chunks/CguRSd-5.js.gz +0 -0
  158. package/build/client/_app/immutable/chunks/D1HLO01M.js.br +0 -0
  159. package/build/client/_app/immutable/chunks/D1HLO01M.js.gz +0 -0
  160. package/build/client/_app/immutable/chunks/DBv9bGAW.js.br +0 -0
  161. package/build/client/_app/immutable/chunks/DBv9bGAW.js.gz +0 -0
  162. package/build/client/_app/immutable/chunks/DcwZSy0_.js.br +0 -0
  163. package/build/client/_app/immutable/chunks/DcwZSy0_.js.gz +0 -0
  164. package/build/client/_app/immutable/chunks/NCHnxCls.js.br +0 -0
  165. package/build/client/_app/immutable/chunks/NCHnxCls.js.gz +0 -0
  166. package/build/client/_app/immutable/chunks/xXptR8LW.js +0 -1
  167. package/build/client/_app/immutable/chunks/xXptR8LW.js.br +0 -2
  168. package/build/client/_app/immutable/chunks/xXptR8LW.js.gz +0 -0
  169. package/build/client/_app/immutable/entry/app.ByYY2fra.js.br +0 -0
  170. package/build/client/_app/immutable/entry/app.ByYY2fra.js.gz +0 -0
  171. package/build/client/_app/immutable/entry/start.De_6coOa.js +0 -1
  172. package/build/client/_app/immutable/entry/start.De_6coOa.js.br +0 -0
  173. package/build/client/_app/immutable/entry/start.De_6coOa.js.gz +0 -0
  174. package/build/client/_app/immutable/nodes/0.D0WPAGlz.js.br +0 -0
  175. package/build/client/_app/immutable/nodes/0.D0WPAGlz.js.gz +0 -0
  176. package/build/client/_app/immutable/nodes/1.D5WaXw6D.js.br +0 -1
  177. package/build/client/_app/immutable/nodes/1.D5WaXw6D.js.gz +0 -0
  178. package/build/client/_app/immutable/nodes/2.BFpBzITO.js.br +0 -0
  179. package/build/client/_app/immutable/nodes/2.BFpBzITO.js.gz +0 -0
  180. package/build/client/_app/immutable/nodes/3.CxjWJwcN.js.br +0 -0
  181. package/build/client/_app/immutable/nodes/3.CxjWJwcN.js.gz +0 -0
  182. package/build/client/_app/immutable/nodes/4.CewrRsmy.js.br +0 -0
  183. package/build/client/_app/immutable/nodes/4.CewrRsmy.js.gz +0 -0
  184. package/build/client/_app/immutable/nodes/5.sRbPcO4Q.js.br +0 -0
  185. package/build/client/_app/immutable/nodes/5.sRbPcO4Q.js.gz +0 -0
  186. package/build/client/_app/immutable/nodes/6.CfR2Y2GG.js.br +0 -0
  187. package/build/client/_app/immutable/nodes/6.CfR2Y2GG.js.gz +0 -0
  188. package/build/client/_app/immutable/nodes/7.BTXfUVeB.js.br +0 -0
  189. package/build/client/_app/immutable/nodes/7.BTXfUVeB.js.gz +0 -0
  190. package/build/client/_app/immutable/nodes/8.2rWOh-Qs.js.br +0 -0
  191. package/build/client/_app/immutable/nodes/8.2rWOh-Qs.js.gz +0 -0
  192. package/build/server/chunks/1-HfMv8lKr.js +0 -9
  193. package/build/server/chunks/2-DDsdfo9q.js +0 -9
  194. package/build/server/chunks/4-DRJPKVow.js +0 -9
  195. package/build/server/chunks/5-B-Ymnm4j.js +0 -9
  196. package/build/server/chunks/6-DU93GcHy.js +0 -9
  197. package/build/server/chunks/7-Cm_ReRiH.js +0 -9
  198. package/build/server/chunks/8-CVXLl5A5.js +0 -9
  199. package/build/server/chunks/syncBridge-CleGV_0k.js +0 -19
  200. package/build/server/chunks/syncBridge-CleGV_0k.js.map +0 -1
  201. package/tsconfig.json +0 -16
@@ -1 +1 @@
1
- import{I as e,Q as t,X as n,Z as r}from"./Gkn8_Gwp.js";import{n as i,t as a}from"./B6PktD7d.js";var o=`Unknown`,s=new class{#e=t(!0);get loading(){return e(this.#e)}set loading(e){r(this.#e,e,!0)}#t=t(n([]));get summaries(){return e(this.#t)}set summaries(e){r(this.#t,e,!0)}#n=t(``);get search(){return e(this.#n)}set search(e){r(this.#n,e,!0)}#r=t(null);get pendingDeleteId(){return e(this.#r)}set pendingDeleteId(e){r(this.#r,e,!0)}#i=t(``);get selectedProjectId(){return e(this.#i)}set selectedProjectId(e){r(this.#i,e,!0)}#a=t(null);get error(){return e(this.#a)}set error(e){r(this.#a,e,!0)}async refresh(){try{this.loading=!0,this.error=null;let e=await i();this.summaries=[...await e.useCases.listProjects()]}catch(e){this.error=e.message}finally{this.loading=!1}}async refreshSilent(){try{let e=await i();this.summaries=[...await e.useCases.listProjects()],this.error=null}catch(e){this.error=e.message}}setSearch(e){this.search=e,a(`project.search_updated`,{query:e})}setSelectedProject(e){this.selectedProjectId=e,e&&a(`project.opened`,{id:e})}openProject(e){return this.setSelectedProject(e),`/projects/${e}`}stagePendingDelete(e){this.pendingDeleteId=e,a(`project.delete_requested`,{id:e})}clearPendingDelete(){this.pendingDeleteId=null}async create(e,t){let n=await(await i()).useCases.createProject({name:e,description:t});return await this.refreshSilent(),a(`project.created`,{id:String(n.id),name:n.name}),n.id}async remove(e){this.summaries=this.summaries.filter(t=>String(t.id)!==String(e)),this.clearPendingDelete(),await(await i()).useCases.deleteProject(e),a(`project.deleted`,{id:String(e)})}async reconcileOrphanFeatures(){let e=await i(),t=await e.useCases.listFeatures();if(t.length===0)return;let n=await e.useCases.listProjects(),r=new Set;for(let t of n){let n=await e.useCases.getProject(t.id);if(n)for(let e of n.featureIds)r.add(String(e))}let a=t.filter(e=>!r.has(String(e.id)));if(a.length===0)return;let s=n.find(e=>e.name===o);if(!s){let t=await e.useCases.createProject({name:o,description:`Auto-created bucket. Holds features that are not assigned to any other project. Rename or reassign to clean it up.`});s={id:t.id,name:t.name,description:t.description,featureCount:0,createdAt:t.createdAt,updatedAt:t.updatedAt}}for(let t of a)await e.useCases.addFeatureToProject(s.id,t.id);await this.refreshSilent()}};export{s as t};
1
+ import{I as e,Q as t,X as n,Z as r}from"./Gkn8_Gwp.js";import{n as i,t as a}from"./BrrMecpF.js";var o=`Unknown`,s=new class{#e=t(!0);get loading(){return e(this.#e)}set loading(e){r(this.#e,e,!0)}#t=t(n([]));get summaries(){return e(this.#t)}set summaries(e){r(this.#t,e,!0)}#n=t(``);get search(){return e(this.#n)}set search(e){r(this.#n,e,!0)}#r=t(null);get pendingDeleteId(){return e(this.#r)}set pendingDeleteId(e){r(this.#r,e,!0)}#i=t(``);get selectedProjectId(){return e(this.#i)}set selectedProjectId(e){r(this.#i,e,!0)}#a=t(null);get error(){return e(this.#a)}set error(e){r(this.#a,e,!0)}async refresh(){try{this.loading=!0,this.error=null;let e=await i();this.summaries=[...await e.useCases.listProjects()]}catch(e){this.error=e.message}finally{this.loading=!1}}async refreshSilent(){try{let e=await i();this.summaries=[...await e.useCases.listProjects()],this.error=null}catch(e){this.error=e.message}}setSearch(e){this.search=e,a(`project.search_updated`,{query:e})}setSelectedProject(e){this.selectedProjectId=e,e&&a(`project.opened`,{id:e})}openProject(e){return this.setSelectedProject(e),`/projects/${e}`}stagePendingDelete(e){this.pendingDeleteId=e,a(`project.delete_requested`,{id:e})}clearPendingDelete(){this.pendingDeleteId=null}async create(e,t){let n=await(await i()).useCases.createProject({name:e,description:t});return await this.refreshSilent(),a(`project.created`,{id:String(n.id),name:n.name}),n.id}async remove(e){this.summaries=this.summaries.filter(t=>String(t.id)!==String(e)),this.clearPendingDelete(),await(await i()).useCases.deleteProject(e),a(`project.deleted`,{id:String(e)})}async reconcileOrphanFeatures(){let e=await i(),t=await e.useCases.listFeatures();if(t.length===0)return;let n=await e.useCases.listProjects(),r=new Set;for(let t of n){let n=await e.useCases.getProject(t.id);if(n)for(let e of n.featureIds)r.add(String(e))}let a=t.filter(e=>!r.has(String(e.id)));if(a.length===0)return;let s=n.find(e=>e.name===o);if(!s){let t=await e.useCases.createProject({name:o,description:`Auto-created bucket. Holds features that are not assigned to any other project. Rename or reassign to clean it up.`});s={id:t.id,name:t.name,description:t.description,featureCount:0,createdAt:t.createdAt,updatedAt:t.updatedAt}}for(let t of a)await e.useCases.addFeatureToProject(s.id,t.id);await this.refreshSilent()}};export{s as t};
@@ -1 +1 @@
1
- import{Y as e,g as t,h as n,m as r,p as i}from"./B6PktD7d.js";var a=e=>JSON.stringify({format:`unspaghettit`,version:1,feature:e},null,2),o=e=>{if(`actions`in e)return e;if(`capabilities`in e){let{capabilities:t,...n}=e;return{...n,actions:t}}return e},s=a=>{let s;try{s=JSON.parse(a)}catch(e){throw Error(`Invalid JSON: ${e.message}`)}if(!s||typeof s!=`object`)throw Error(`Expected a feature export object`);let c=s;if(c.format!==`unspaghettit`)throw Error(`Not an Unspaghettit export (missing format field)`);if(c.version!==1)throw Error(`Unsupported export version: ${c.version}`);let l=c.feature??c.experience;if(!l)throw Error(`Export envelope is missing a feature`);let u=(l.surfaces??[]).map(e=>o(e)),d=l,f=d.entities??d.data??[];return i(t(n(r({...l,tags:e(l.tags),surfaces:u,personas:l.personas??[],resources:l.resources??[],entities:f}))))};export{s as n,a as t};
1
+ import{Y as e,g as t,h as n,m as r,p as i}from"./BrrMecpF.js";var a=e=>JSON.stringify({format:`unspaghettit`,version:1,feature:e},null,2),o=e=>{if(`actions`in e)return e;if(`capabilities`in e){let{capabilities:t,...n}=e;return{...n,actions:t}}return e},s=a=>{let s;try{s=JSON.parse(a)}catch(e){throw Error(`Invalid JSON: ${e.message}`)}if(!s||typeof s!=`object`)throw Error(`Expected a feature export object`);let c=s;if(c.format!==`unspaghettit`)throw Error(`Not an Unspaghettit export (missing format field)`);if(c.version!==1)throw Error(`Unsupported export version: ${c.version}`);let l=c.feature??c.experience;if(!l)throw Error(`Export envelope is missing a feature`);let u=(l.surfaces??[]).map(e=>o(e)),d=l,f=d.entities??d.data??[];return i(t(n(r({...l,tags:e(l.tags),surfaces:u,personas:l.personas??[],resources:l.resources??[],entities:f}))))};export{s as n,a as t};