@shepai/cli 1.72.6-pr187.fb842c5 → 1.72.7

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 (282) hide show
  1. package/dist/packages/core/src/application/use-cases/features/delete-feature.use-case.d.ts +4 -0
  2. package/dist/packages/core/src/application/use-cases/features/delete-feature.use-case.d.ts.map +1 -1
  3. package/dist/packages/core/src/application/use-cases/features/delete-feature.use-case.js +20 -12
  4. package/dist/packages/core/src/application/use-cases/repositories/delete-repository.use-case.d.ts +8 -3
  5. package/dist/packages/core/src/application/use-cases/repositories/delete-repository.use-case.d.ts.map +1 -1
  6. package/dist/packages/core/src/application/use-cases/repositories/delete-repository.use-case.js +17 -4
  7. package/dist/packages/core/src/infrastructure/repositories/sqlite-feature.repository.js +1 -1
  8. package/dist/packages/core/src/infrastructure/services/tool-installer/tool-metadata.d.ts.map +1 -1
  9. package/dist/packages/core/src/infrastructure/services/tool-installer/tool-metadata.js +0 -5
  10. package/dist/src/presentation/web/app/(dashboard)/get-graph-data.d.ts.map +1 -1
  11. package/dist/src/presentation/web/app/(dashboard)/get-graph-data.js +2 -6
  12. package/dist/src/presentation/web/app/api/tools/[id]/install/route.d.ts.map +1 -1
  13. package/dist/src/presentation/web/app/api/tools/[id]/install/route.js +4 -9
  14. package/dist/src/presentation/web/app/build-graph-nodes.js +11 -1
  15. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.d.ts +3 -1
  16. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.d.ts.map +1 -1
  17. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.js +8 -4
  18. package/dist/src/presentation/web/components/common/control-center-drawer/create-drawer-client.d.ts.map +1 -1
  19. package/dist/src/presentation/web/components/common/control-center-drawer/create-drawer-client.js +12 -3
  20. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.d.ts.map +1 -1
  21. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.js +6 -2
  22. package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.d.ts.map +1 -1
  23. package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.js +1 -1
  24. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
  25. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +1 -1
  26. package/dist/src/presentation/web/components/common/feature-node/feature-node.d.ts.map +1 -1
  27. package/dist/src/presentation/web/components/common/feature-node/feature-node.js +7 -2
  28. package/dist/src/presentation/web/components/common/repository-node/repository-node.d.ts.map +1 -1
  29. package/dist/src/presentation/web/components/common/repository-node/repository-node.js +6 -2
  30. package/dist/src/presentation/web/components/features/control-center/control-center-inner.d.ts.map +1 -1
  31. package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +14 -2
  32. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts +3 -5
  33. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts.map +1 -1
  34. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.js +131 -196
  35. package/dist/src/presentation/web/components/ui/alert-dialog.d.ts +1 -1
  36. package/dist/src/presentation/web/components/ui/alert-dialog.d.ts.map +1 -1
  37. package/dist/src/presentation/web/components/ui/alert-dialog.js +7 -2
  38. package/dist/src/presentation/web/components/ui/dialog.d.ts.map +1 -1
  39. package/dist/src/presentation/web/components/ui/dialog.js +6 -1
  40. package/dist/src/presentation/web/lib/layout-with-dagre.d.ts +2 -0
  41. package/dist/src/presentation/web/lib/layout-with-dagre.d.ts.map +1 -1
  42. package/dist/src/presentation/web/lib/layout-with-dagre.js +86 -4
  43. package/dist/tsconfig.build.tsbuildinfo +1 -1
  44. package/package.json +1 -1
  45. package/web/.next/BUILD_ID +1 -1
  46. package/web/.next/build-manifest.json +2 -2
  47. package/web/.next/cache/.previewinfo +1 -1
  48. package/web/.next/cache/.rscinfo +1 -1
  49. package/web/.next/cache/.tsbuildinfo +1 -1
  50. package/web/.next/cache/config.json +3 -3
  51. package/web/.next/fallback-build-manifest.json +2 -2
  52. package/web/.next/prerender-manifest.json +3 -3
  53. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +14 -14
  54. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
  55. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  56. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  57. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +17 -17
  58. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -1
  59. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  60. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  61. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +12 -12
  62. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
  63. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  64. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  65. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +14 -14
  66. package/web/.next/server/app/(dashboard)/create/page.js +1 -1
  67. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  68. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  69. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +17 -17
  70. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -1
  71. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  72. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  73. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +12 -12
  74. package/web/.next/server/app/(dashboard)/page.js +1 -1
  75. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  76. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  77. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +12 -12
  78. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
  79. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  80. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  81. package/web/.next/server/app/_global-error.html +2 -2
  82. package/web/.next/server/app/_global-error.rsc +1 -1
  83. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  84. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  85. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  86. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  87. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  88. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  89. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  90. package/web/.next/server/app/api/tools/[id]/install/route.js +1 -1
  91. package/web/.next/server/app/api/tools/[id]/install/route.js.nft.json +1 -1
  92. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  93. package/web/.next/server/app/skills/page.js +1 -1
  94. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  95. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  96. package/web/.next/server/app/tools/page/server-reference-manifest.json +1 -1
  97. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  98. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  99. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  100. package/web/.next/server/chunks/[root-of-the-server]__b1f03347._.js +3 -0
  101. package/web/.next/server/chunks/[root-of-the-server]__b1f03347._.js.map +1 -0
  102. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  103. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  104. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_2b7834f6.js +1 -1
  105. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_2b7834f6.js.map +1 -1
  106. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_6923c575.js +1 -1
  107. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_6923c575.js.map +1 -1
  108. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js → server/chunks/ssr/[root-of-the-server]__07385073._.js} +3 -3
  109. package/web/.next/server/chunks/ssr/{[root-of-the-server]__45dbf93d._.js.map → [root-of-the-server]__07385073._.js.map} +1 -1
  110. package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +1 -1
  111. package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js.map +1 -1
  112. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  113. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js.map +1 -1
  114. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js +3 -0
  115. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js.map +1 -0
  116. package/web/.next/server/chunks/ssr/[root-of-the-server]__6db85a66._.js +4 -0
  117. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  118. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js.map +1 -1
  119. package/web/.next/server/chunks/ssr/[root-of-the-server]__8c1a3d66._.js +3 -0
  120. package/web/.next/server/chunks/ssr/{[root-of-the-server]__aef6b3cd._.js.map → [root-of-the-server]__8c1a3d66._.js.map} +1 -1
  121. package/web/.next/server/chunks/ssr/{[root-of-the-server]__f182fa1e._.js → [root-of-the-server]__8fcb9132._.js} +3 -3
  122. package/web/.next/server/chunks/ssr/[root-of-the-server]__8fcb9132._.js.map +1 -0
  123. package/web/.next/server/chunks/ssr/_00e6c698._.js +1 -1
  124. package/web/.next/server/chunks/ssr/_00e6c698._.js.map +1 -1
  125. package/web/.next/server/chunks/ssr/_07c2a32a._.js +1 -1
  126. package/web/.next/server/chunks/ssr/_07c2a32a._.js.map +1 -1
  127. package/web/.next/server/chunks/ssr/_34a58db8._.js +1 -1
  128. package/web/.next/server/chunks/ssr/_34a58db8._.js.map +1 -1
  129. package/web/.next/server/chunks/ssr/_37259405._.js +1 -1
  130. package/web/.next/server/chunks/ssr/_37259405._.js.map +1 -1
  131. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/_85d0351b._.js → server/chunks/ssr/_63bfa7dd._.js} +2 -2
  132. package/web/.next/server/chunks/ssr/_63bfa7dd._.js.map +1 -0
  133. package/web/.next/server/chunks/ssr/{_7a259f2c._.js → _7215bb0f._.js} +2 -2
  134. package/web/.next/server/chunks/ssr/{_7a259f2c._.js.map → _7215bb0f._.js.map} +1 -1
  135. package/web/.next/server/chunks/ssr/_cb5b3951._.js +1 -1
  136. package/web/.next/server/chunks/ssr/_cb5b3951._.js.map +1 -1
  137. package/web/.next/server/chunks/ssr/_fc3a6895._.js +1 -1
  138. package/web/.next/server/chunks/ssr/_fc3a6895._.js.map +1 -1
  139. package/web/.next/server/chunks/ssr/src_presentation_web_1a32dbcb._.js +2 -2
  140. package/web/.next/server/chunks/ssr/src_presentation_web_1a32dbcb._.js.map +1 -1
  141. package/web/.next/server/chunks/ssr/src_presentation_web_398553b0._.js +1 -1
  142. package/web/.next/server/chunks/ssr/src_presentation_web_398553b0._.js.map +1 -1
  143. package/web/.next/server/chunks/ssr/src_presentation_web_5c87e8e4._.js +1 -1
  144. package/web/.next/server/chunks/ssr/src_presentation_web_5c87e8e4._.js.map +1 -1
  145. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_f4952172.js +1 -1
  146. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_f4952172.js.map +1 -1
  147. package/web/.next/server/chunks/ssr/src_presentation_web_c1bc6240._.js +2 -2
  148. package/web/.next/server/chunks/ssr/src_presentation_web_c1bc6240._.js.map +1 -1
  149. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
  150. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js.map +1 -1
  151. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  152. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  153. package/web/.next/server/pages/500.html +2 -2
  154. package/web/.next/server/server-reference-manifest.js +1 -1
  155. package/web/.next/server/server-reference-manifest.json +20 -20
  156. package/web/.next/standalone/src/presentation/web/.next/BUILD_ID +1 -1
  157. package/web/.next/standalone/src/presentation/web/.next/build-manifest.json +2 -2
  158. package/web/.next/standalone/src/presentation/web/.next/prerender-manifest.json +3 -3
  159. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +14 -14
  160. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
  161. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  162. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  163. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +17 -17
  164. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -1
  165. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  166. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  167. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +12 -12
  168. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
  169. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  170. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  171. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +14 -14
  172. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page.js +1 -1
  173. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  174. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  175. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +17 -17
  176. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -1
  177. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  178. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  179. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +12 -12
  180. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page.js +1 -1
  181. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  182. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  183. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +12 -12
  184. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
  185. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  186. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  187. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.html +2 -2
  188. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.rsc +1 -1
  189. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  190. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  191. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  192. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  193. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  194. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  195. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  196. package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/route.js +1 -1
  197. package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/route.js.nft.json +1 -1
  198. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  199. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js +1 -1
  200. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js.nft.json +1 -1
  201. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  202. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/server-reference-manifest.json +1 -1
  203. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  204. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  205. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  206. package/web/.next/standalone/src/presentation/web/.next/server/chunks/[root-of-the-server]__b1f03347._.js +3 -0
  207. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  208. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_2b7834f6.js +1 -1
  209. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_6923c575.js +1 -1
  210. package/web/.next/{server/chunks/ssr/[root-of-the-server]__45dbf93d._.js → standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__07385073._.js} +3 -3
  211. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +1 -1
  212. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  213. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js +3 -0
  214. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6db85a66._.js +4 -0
  215. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  216. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__8c1a3d66._.js +3 -0
  217. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{[root-of-the-server]__f182fa1e._.js → [root-of-the-server]__8fcb9132._.js} +3 -3
  218. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_00e6c698._.js +1 -1
  219. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_07c2a32a._.js +1 -1
  220. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_34a58db8._.js +1 -1
  221. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_37259405._.js +1 -1
  222. package/web/.next/{server/chunks/ssr/_85d0351b._.js → standalone/src/presentation/web/.next/server/chunks/ssr/_63bfa7dd._.js} +2 -2
  223. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{_7a259f2c._.js → _7215bb0f._.js} +2 -2
  224. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_cb5b3951._.js +1 -1
  225. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_fc3a6895._.js +1 -1
  226. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_1a32dbcb._.js +2 -2
  227. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_398553b0._.js +1 -1
  228. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_5c87e8e4._.js +1 -1
  229. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_f4952172.js +1 -1
  230. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_c1bc6240._.js +2 -2
  231. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
  232. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  233. package/web/.next/standalone/src/presentation/web/.next/server/pages/500.html +2 -2
  234. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.js +1 -1
  235. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.json +20 -20
  236. package/web/.next/standalone/src/presentation/web/app/(dashboard)/get-graph-data.ts +2 -6
  237. package/web/.next/standalone/src/presentation/web/app/api/tools/[id]/install/route.ts +6 -14
  238. package/web/.next/standalone/src/presentation/web/app/build-graph-nodes.ts +14 -1
  239. package/web/.next/standalone/src/presentation/web/components/common/base-drawer/base-drawer.tsx +10 -8
  240. package/web/.next/standalone/src/presentation/web/components/common/control-center-drawer/create-drawer-client.tsx +13 -3
  241. package/web/.next/standalone/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.tsx +6 -2
  242. package/web/.next/standalone/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.tsx +2 -0
  243. package/web/.next/standalone/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.tsx +8 -5
  244. package/web/.next/standalone/src/presentation/web/components/common/feature-node/feature-node.tsx +30 -24
  245. package/web/.next/standalone/src/presentation/web/components/common/repository-node/repository-node.tsx +33 -25
  246. package/web/.next/standalone/src/presentation/web/components/features/control-center/control-center-inner.tsx +25 -3
  247. package/web/.next/standalone/src/presentation/web/components/features/control-center/use-control-center-state.ts +184 -230
  248. package/web/.next/standalone/src/presentation/web/components/ui/alert-dialog.tsx +7 -0
  249. package/web/.next/standalone/src/presentation/web/components/ui/dialog.tsx +7 -1
  250. package/web/.next/standalone/src/presentation/web/lib/layout-with-dagre.ts +93 -4
  251. package/web/.next/static/chunks/0c54314c8c9c9739.js +7 -0
  252. package/web/.next/static/chunks/{5f5c607ffae8b918.js → 304c8593d0a6525d.js} +1 -1
  253. package/web/.next/static/chunks/4558d1663c6f4d2c.js +1 -0
  254. package/web/.next/static/chunks/{c132a0a46d27747c.js → 4df07e765b233622.js} +1 -1
  255. package/web/.next/static/chunks/{fcdedd892adde5ec.js → 585ae19c520e8b72.js} +1 -1
  256. package/web/.next/static/chunks/{49dc58443f686e6f.js → 6e14d8bd5c005e6e.js} +1 -1
  257. package/web/.next/static/chunks/{81fe6a4ff82e2424.js → 8a1eb93510e54db0.js} +1 -1
  258. package/web/.next/static/chunks/b143c7d78a6888e9.js +1 -0
  259. package/web/.next/static/chunks/{69a1d86331a90aee.js → b45344579a43cbb8.js} +1 -1
  260. package/web/.next/static/chunks/dec13bccb136ef7c.css +2 -0
  261. package/web/.next/static/chunks/e4522f7d3134eefe.js +1 -0
  262. package/web/.next/static/chunks/{c59059bb396f7d27.js → fe83a799663fd3cc.js} +1 -1
  263. package/web/.next/trace +1 -1
  264. package/web/.next/trace-build +1 -1
  265. package/web/.next/server/chunks/[root-of-the-server]__0866d2b5._.js +0 -3
  266. package/web/.next/server/chunks/[root-of-the-server]__0866d2b5._.js.map +0 -1
  267. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +0 -3
  268. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +0 -1
  269. package/web/.next/server/chunks/ssr/[root-of-the-server]__aef6b3cd._.js +0 -3
  270. package/web/.next/server/chunks/ssr/_85d0351b._.js.map +0 -1
  271. package/web/.next/standalone/src/presentation/web/.next/server/chunks/[root-of-the-server]__0866d2b5._.js +0 -3
  272. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +0 -3
  273. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__aef6b3cd._.js +0 -3
  274. package/web/.next/static/chunks/06dfd668334ffb4e.js +0 -7
  275. package/web/.next/static/chunks/224ed5f5dbd33154.css +0 -2
  276. package/web/.next/static/chunks/570802c159d4f3c0.js +0 -1
  277. package/web/.next/static/chunks/577fb9c5d5c1c99f.js +0 -1
  278. package/web/.next/static/chunks/e44849eb58a3335f.js +0 -1
  279. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__f182fa1e._.js.map → [root-of-the-server]__6db85a66._.js.map} +0 -0
  280. /package/web/.next/static/{8XK3vr1tAio-lA1vztJt6 → 9bO_bJBssG0NRxEG03iM5}/_buildManifest.js +0 -0
  281. /package/web/.next/static/{8XK3vr1tAio-lA1vztJt6 → 9bO_bJBssG0NRxEG03iM5}/_clientMiddlewareManifest.json +0 -0
  282. /package/web/.next/static/{8XK3vr1tAio-lA1vztJt6 → 9bO_bJBssG0NRxEG03iM5}/_ssgManifest.js +0 -0
@@ -100,8 +100,9 @@ export function FeatureDrawerClient({ view: initialView }: FeatureDrawerClientPr
100
100
  const newLifecycle = mapPhaseNameToLifecycle(event.phaseName);
101
101
 
102
102
  // Trigger a server refresh to get the latest drawer view,
103
- // but skip when the user has unsaved changes to avoid losing form state.
104
- if (!isDirtyRef.current) router.refresh();
103
+ // but skip when the user has unsaved changes or a rejection is in-flight
104
+ // to avoid the refresh interfering with the reject handler's navigation.
105
+ if (!isDirtyRef.current && !isRejectingRef.current) router.refresh();
105
106
 
106
107
  // Optimistically update the node data for immediate UI feedback
107
108
  setView((prev) => {
@@ -163,6 +164,7 @@ export function FeatureDrawerClient({ view: initialView }: FeatureDrawerClientPr
163
164
 
164
165
  // ── Shared reject state ────────────────────────────────────────────────
165
166
  const [isRejecting, setIsRejecting] = useState(false);
167
+ const isRejectingRef = useRef(false);
166
168
 
167
169
  // Reset chat input whenever the view type changes
168
170
  const viewType = view.type;
@@ -317,6 +319,7 @@ export function FeatureDrawerClient({ view: initialView }: FeatureDrawerClientPr
317
319
  const handleReject = useCallback(
318
320
  async (feedback: string, label: string, onDone?: () => void) => {
319
321
  if (!reviewNode?.featureId) return;
322
+ isRejectingRef.current = true;
320
323
  setIsRejecting(true);
321
324
  try {
322
325
  const result = await rejectFeature(reviewNode.featureId, feedback);
@@ -335,6 +338,7 @@ export function FeatureDrawerClient({ view: initialView }: FeatureDrawerClientPr
335
338
  onClose();
336
339
  onDone?.();
337
340
  } finally {
341
+ isRejectingRef.current = false;
338
342
  setIsRejecting(false);
339
343
  }
340
344
  },
@@ -46,6 +46,7 @@ export function DrawerActionBar({
46
46
  value={chatInput}
47
47
  onChange={(e) => setChatInput(e.target.value)}
48
48
  className="flex-1"
49
+ data-testid="drawer-chat-input"
49
50
  />
50
51
  <Button
51
52
  type="submit"
@@ -53,6 +54,7 @@ export function DrawerActionBar({
53
54
  size="icon"
54
55
  aria-label="Send"
55
56
  disabled={disabled}
57
+ data-testid="drawer-chat-send"
56
58
  >
57
59
  <Send />
58
60
  </Button>
@@ -192,6 +192,7 @@ export function FeatureCreateDrawer({
192
192
  onClose={attemptClose}
193
193
  size="md"
194
194
  modal={false}
195
+ dismissOnOutsideClick
195
196
  data-testid="feature-create-drawer"
196
197
  header={
197
198
  <>
@@ -199,11 +200,13 @@ export function FeatureCreateDrawer({
199
200
  <div className="h-2.5 w-2.5 shrink-0 rounded-full bg-blue-500" />
200
201
  <DrawerTitle>NEW FEATURE</DrawerTitle>
201
202
  </div>
202
- <DrawerDescription asChild>
203
- <div>
204
- <Badge variant="secondary">Creating...</Badge>
205
- </div>
206
- </DrawerDescription>
203
+ {isSubmitting ? (
204
+ <DrawerDescription asChild>
205
+ <div>
206
+ <Badge variant="secondary">Creating...</Badge>
207
+ </div>
208
+ </DrawerDescription>
209
+ ) : null}
207
210
  </>
208
211
  }
209
212
  footer={
@@ -5,15 +5,15 @@ import { Handle, Position } from '@xyflow/react';
5
5
  import { Settings, Plus, FileText, Wrench, GitMerge, Trash2, type LucideIcon } from 'lucide-react';
6
6
  import { cn } from '@/lib/utils';
7
7
  import {
8
- AlertDialog,
9
- AlertDialogAction,
10
- AlertDialogCancel,
11
- AlertDialogContent,
12
- AlertDialogDescription,
13
- AlertDialogFooter,
14
- AlertDialogHeader,
15
- AlertDialogTitle,
16
- } from '@/components/ui/alert-dialog';
8
+ Dialog,
9
+ DialogClose,
10
+ DialogContent,
11
+ DialogDescription,
12
+ DialogFooter,
13
+ DialogHeader,
14
+ DialogTitle,
15
+ } from '@/components/ui/dialog';
16
+ import { Button } from '@/components/ui/button';
17
17
  import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';
18
18
  import {
19
19
  featureNodeStateConfig,
@@ -123,26 +123,32 @@ export function FeatureNode({
123
123
  </TooltipProvider>
124
124
  </div>
125
125
 
126
- <AlertDialog open={confirmOpen} onOpenChange={setConfirmOpen}>
127
- <AlertDialogContent size="sm">
128
- <AlertDialogHeader>
129
- <AlertDialogTitle>Delete feature?</AlertDialogTitle>
130
- <AlertDialogDescription>
126
+ <Dialog open={confirmOpen} onOpenChange={setConfirmOpen}>
127
+ <DialogContent className="max-w-xs">
128
+ <DialogHeader>
129
+ <DialogTitle>Delete feature?</DialogTitle>
130
+ <DialogDescription>
131
131
  This will permanently delete <strong>{data.name}</strong> and all associated data
132
132
  including specs, branches, and progress.
133
- </AlertDialogDescription>
134
- </AlertDialogHeader>
135
- <AlertDialogFooter>
136
- <AlertDialogCancel>Cancel</AlertDialogCancel>
137
- <AlertDialogAction
133
+ </DialogDescription>
134
+ </DialogHeader>
135
+ <DialogFooter className="grid grid-cols-2 gap-2 sm:flex-none">
136
+ <DialogClose asChild>
137
+ <Button variant="outline">Cancel</Button>
138
+ </DialogClose>
139
+ <Button
138
140
  variant="destructive"
139
- onClick={() => data.onDelete?.(data.featureId)}
141
+ onClick={(e) => {
142
+ e.stopPropagation();
143
+ setConfirmOpen(false);
144
+ data.onDelete?.(data.featureId);
145
+ }}
140
146
  >
141
147
  Delete
142
- </AlertDialogAction>
143
- </AlertDialogFooter>
144
- </AlertDialogContent>
145
- </AlertDialog>
148
+ </Button>
149
+ </DialogFooter>
150
+ </DialogContent>
151
+ </Dialog>
146
152
  </>
147
153
  ) : null}
148
154
 
@@ -6,15 +6,15 @@ import { Github, Plus, Code2, Terminal, FolderOpen, Trash2, Play, Square } from
6
6
  import { cn } from '@/lib/utils';
7
7
  import { ActionButton } from '@/components/common/action-button';
8
8
  import {
9
- AlertDialog,
10
- AlertDialogAction,
11
- AlertDialogCancel,
12
- AlertDialogContent,
13
- AlertDialogDescription,
14
- AlertDialogFooter,
15
- AlertDialogHeader,
16
- AlertDialogTitle,
17
- } from '@/components/ui/alert-dialog';
9
+ Dialog,
10
+ DialogClose,
11
+ DialogContent,
12
+ DialogDescription,
13
+ DialogFooter,
14
+ DialogHeader,
15
+ DialogTitle,
16
+ } from '@/components/ui/dialog';
17
+ import { Button } from '@/components/ui/button';
18
18
  import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';
19
19
  import { DeploymentStatusBadge } from '@/components/common/deployment-status-badge';
20
20
  import { useDeployAction } from '@/hooks/use-deploy-action';
@@ -73,23 +73,31 @@ export function RepositoryNode({ data }: { data: RepositoryNodeData; [key: strin
73
73
  </TooltipProvider>
74
74
  </div>
75
75
 
76
- <AlertDialog open={confirmOpen} onOpenChange={setConfirmOpen}>
77
- <AlertDialogContent size="sm">
78
- <AlertDialogHeader>
79
- <AlertDialogTitle>Remove repository?</AlertDialogTitle>
80
- <AlertDialogDescription>
81
- This will remove <strong>{data.name}</strong> from your workspace. The repository
82
- files on disk won&apos;t be affected.
83
- </AlertDialogDescription>
84
- </AlertDialogHeader>
85
- <AlertDialogFooter>
86
- <AlertDialogCancel>Cancel</AlertDialogCancel>
87
- <AlertDialogAction variant="destructive" onClick={() => data.onDelete?.(data.id!)}>
76
+ <Dialog open={confirmOpen} onOpenChange={setConfirmOpen}>
77
+ <DialogContent className="max-w-xs">
78
+ <DialogHeader>
79
+ <DialogTitle>Remove repository?</DialogTitle>
80
+ <DialogDescription>
81
+ This will remove <strong>{data.name}</strong> and all its features from your
82
+ workspace. The repository files on disk won&apos;t be affected.
83
+ </DialogDescription>
84
+ </DialogHeader>
85
+ <DialogFooter className="grid grid-cols-2 gap-2 sm:flex-none">
86
+ <DialogClose asChild>
87
+ <Button variant="outline">Cancel</Button>
88
+ </DialogClose>
89
+ <Button
90
+ variant="destructive"
91
+ onClick={() => {
92
+ setConfirmOpen(false);
93
+ data.onDelete?.(data.id!);
94
+ }}
95
+ >
88
96
  Remove
89
- </AlertDialogAction>
90
- </AlertDialogFooter>
91
- </AlertDialogContent>
92
- </AlertDialog>
97
+ </Button>
98
+ </DialogFooter>
99
+ </DialogContent>
100
+ </Dialog>
93
101
  </>
94
102
  ) : null}
95
103
 
@@ -28,7 +28,7 @@ export function ControlCenterInner({ initialNodes, initialEdges }: ControlCenter
28
28
  const pathname = usePathname();
29
29
  const selectedFeatureId = useSelectedFeatureId();
30
30
  const clickSound = useSoundAction('click');
31
- const { guardedNavigate, getIsDirty } = useDrawerCloseGuard();
31
+ const { guardedNavigate } = useDrawerCloseGuard();
32
32
 
33
33
  const {
34
34
  nodes,
@@ -39,7 +39,7 @@ export function ControlCenterInner({ initialNodes, initialEdges }: ControlCenter
39
39
  handleDeleteFeature,
40
40
  handleDeleteRepository,
41
41
  createFeatureNode,
42
- } = useControlCenterState(initialNodes, initialEdges, getIsDirty);
42
+ } = useControlCenterState(initialNodes, initialEdges);
43
43
 
44
44
  // Publish sidebar features to context whenever feature node data changes
45
45
  const { setFeatures: setSidebarFeatures } = useSidebarFeaturesContext();
@@ -167,9 +167,31 @@ export function ControlCenterInner({ initialNodes, initialEdges }: ControlCenter
167
167
  useEffect(() => {
168
168
  const handler = (e: Event) => {
169
169
  const detail = (
170
- e as CustomEvent<{ name: string; description?: string; repositoryPath: string }>
170
+ e as CustomEvent<{
171
+ name: string;
172
+ description?: string;
173
+ repositoryPath: string;
174
+ parentId?: string;
175
+ }>
171
176
  ).detail;
172
177
 
178
+ // When a parentId is provided, connect to the parent feature node
179
+ // via a dependency edge instead of the repo node.
180
+ if (detail.parentId) {
181
+ const parentNodeId = `feat-${detail.parentId}`;
182
+ createFeatureNode(
183
+ parentNodeId,
184
+ {
185
+ state: 'creating',
186
+ name: detail.name,
187
+ description: detail.description,
188
+ repositoryPath: detail.repositoryPath,
189
+ },
190
+ 'dependencyEdge'
191
+ );
192
+ return;
193
+ }
194
+
173
195
  // Find the repo node to connect to
174
196
  const repoNode = nodes.find(
175
197
  (n) =>