@shepai/cli 1.72.6 → 1.72.7-pr187.0bb1028

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 (488) 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/application/use-cases/tools/list-tools.use-case.d.ts +3 -0
  8. package/dist/packages/core/src/application/use-cases/tools/list-tools.use-case.d.ts.map +1 -1
  9. package/dist/packages/core/src/application/use-cases/tools/list-tools.use-case.js +3 -0
  10. package/dist/packages/core/src/infrastructure/repositories/sqlite-feature.repository.js +1 -1
  11. package/dist/packages/core/src/infrastructure/services/tool-installer/tool-installer.service.d.ts.map +1 -1
  12. package/dist/packages/core/src/infrastructure/services/tool-installer/tool-installer.service.js +9 -1
  13. package/dist/packages/core/src/infrastructure/services/tool-installer/tool-metadata.d.ts +6 -0
  14. package/dist/packages/core/src/infrastructure/services/tool-installer/tool-metadata.d.ts.map +1 -1
  15. package/dist/packages/core/src/infrastructure/services/tool-installer/tool-metadata.js +5 -0
  16. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/alacritty.json +5 -2
  17. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/antigravity.json +3 -0
  18. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/claude-code.json +4 -1
  19. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/cursor-cli.json +3 -0
  20. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/cursor.json +3 -0
  21. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/gemini-cli.json +3 -0
  22. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/gh.json +3 -0
  23. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/git.json +3 -0
  24. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/iterm2.json +3 -0
  25. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/kitty.json +5 -2
  26. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/tmux.json +4 -1
  27. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/vscode.json +4 -1
  28. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/warp.json +3 -0
  29. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/windsurf.json +4 -1
  30. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/zed.json +3 -0
  31. package/dist/src/presentation/web/app/(dashboard)/get-graph-data.d.ts.map +1 -1
  32. package/dist/src/presentation/web/app/(dashboard)/get-graph-data.js +2 -6
  33. package/dist/src/presentation/web/app/api/tools/[id]/install/route.d.ts.map +1 -1
  34. package/dist/src/presentation/web/app/api/tools/[id]/install/route.js +9 -4
  35. package/dist/src/presentation/web/app/api/tools/[id]/install/stream/route.d.ts +7 -0
  36. package/dist/src/presentation/web/app/api/tools/[id]/install/stream/route.d.ts.map +1 -0
  37. package/dist/src/presentation/web/app/api/tools/[id]/install/stream/route.js +32 -0
  38. package/dist/src/presentation/web/app/build-graph-nodes.js +11 -1
  39. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.d.ts +4 -1
  40. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.d.ts.map +1 -1
  41. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.js +10 -6
  42. package/dist/src/presentation/web/components/common/control-center-drawer/create-drawer-client.d.ts.map +1 -1
  43. package/dist/src/presentation/web/components/common/control-center-drawer/create-drawer-client.js +12 -3
  44. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.d.ts.map +1 -1
  45. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.js +6 -2
  46. package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.d.ts.map +1 -1
  47. package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.js +1 -1
  48. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
  49. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +1 -1
  50. package/dist/src/presentation/web/components/common/feature-node/feature-node.d.ts.map +1 -1
  51. package/dist/src/presentation/web/components/common/feature-node/feature-node.js +7 -2
  52. package/dist/src/presentation/web/components/common/repository-node/repository-node.d.ts.map +1 -1
  53. package/dist/src/presentation/web/components/common/repository-node/repository-node.js +6 -2
  54. package/dist/src/presentation/web/components/features/control-center/control-center-inner.d.ts.map +1 -1
  55. package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +14 -2
  56. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts +3 -5
  57. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts.map +1 -1
  58. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.js +131 -196
  59. package/dist/src/presentation/web/components/features/index.d.ts +1 -1
  60. package/dist/src/presentation/web/components/features/index.d.ts.map +1 -1
  61. package/dist/src/presentation/web/components/features/index.js +1 -1
  62. package/dist/src/presentation/web/components/features/tools/index.d.ts +1 -1
  63. package/dist/src/presentation/web/components/features/tools/index.d.ts.map +1 -1
  64. package/dist/src/presentation/web/components/features/tools/index.js +1 -1
  65. package/dist/src/presentation/web/components/features/tools/tool-card.d.ts.map +1 -1
  66. package/dist/src/presentation/web/components/features/tools/tool-card.js +18 -14
  67. package/dist/src/presentation/web/components/features/tools/tool-card.stories.d.ts.map +1 -1
  68. package/dist/src/presentation/web/components/features/tools/tool-card.stories.js +18 -0
  69. package/dist/src/presentation/web/components/features/tools/tool-detail-drawer.d.ts +10 -0
  70. package/dist/src/presentation/web/components/features/tools/tool-detail-drawer.d.ts.map +1 -0
  71. package/dist/src/presentation/web/components/features/tools/tool-detail-drawer.js +95 -0
  72. package/dist/src/presentation/web/components/features/tools/tool-detail-drawer.stories.d.ts +12 -0
  73. package/dist/src/presentation/web/components/features/tools/tool-detail-drawer.stories.d.ts.map +1 -0
  74. package/dist/src/presentation/web/components/features/tools/tool-detail-drawer.stories.js +119 -0
  75. package/dist/src/presentation/web/components/features/tools/tools-page-client.js +3 -3
  76. package/dist/src/presentation/web/components/features/tools/tools-page-client.stories.d.ts.map +1 -1
  77. package/dist/src/presentation/web/components/features/tools/tools-page-client.stories.js +15 -0
  78. package/dist/src/presentation/web/components/ui/alert-dialog.d.ts +1 -1
  79. package/dist/src/presentation/web/components/ui/alert-dialog.d.ts.map +1 -1
  80. package/dist/src/presentation/web/components/ui/alert-dialog.js +7 -2
  81. package/dist/src/presentation/web/components/ui/dialog.d.ts.map +1 -1
  82. package/dist/src/presentation/web/components/ui/dialog.js +6 -1
  83. package/dist/src/presentation/web/hooks/use-tool-install-stream.d.ts +10 -0
  84. package/dist/src/presentation/web/hooks/use-tool-install-stream.d.ts.map +1 -0
  85. package/dist/src/presentation/web/hooks/use-tool-install-stream.js +38 -0
  86. package/dist/src/presentation/web/lib/layout-with-dagre.d.ts +2 -0
  87. package/dist/src/presentation/web/lib/layout-with-dagre.d.ts.map +1 -1
  88. package/dist/src/presentation/web/lib/layout-with-dagre.js +86 -4
  89. package/dist/tsconfig.build.tsbuildinfo +1 -1
  90. package/package.json +1 -1
  91. package/web/.next/BUILD_ID +1 -1
  92. package/web/.next/app-path-routes-manifest.json +1 -0
  93. package/web/.next/build-manifest.json +7 -7
  94. package/web/.next/cache/.previewinfo +1 -1
  95. package/web/.next/cache/.rscinfo +1 -1
  96. package/web/.next/cache/.tsbuildinfo +1 -1
  97. package/web/.next/cache/config.json +3 -3
  98. package/web/.next/fallback-build-manifest.json +2 -2
  99. package/web/.next/prerender-manifest.json +3 -3
  100. package/web/.next/required-server-files.js +1 -1
  101. package/web/.next/required-server-files.json +1 -1
  102. package/web/.next/routes-manifest.json +8 -0
  103. package/web/.next/server/app/(dashboard)/@drawer/create/page/build-manifest.json +5 -5
  104. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +14 -14
  105. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
  106. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  107. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  108. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/build-manifest.json +5 -5
  109. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +17 -17
  110. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -1
  111. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  112. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  113. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/build-manifest.json +5 -5
  114. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +12 -12
  115. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
  116. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  117. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  118. package/web/.next/server/app/(dashboard)/create/page/build-manifest.json +5 -5
  119. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +14 -14
  120. package/web/.next/server/app/(dashboard)/create/page.js +1 -1
  121. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  122. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  123. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/build-manifest.json +5 -5
  124. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +17 -17
  125. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -1
  126. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  127. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  128. package/web/.next/server/app/(dashboard)/page/build-manifest.json +5 -5
  129. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +12 -12
  130. package/web/.next/server/app/(dashboard)/page.js +1 -1
  131. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  132. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  133. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/build-manifest.json +5 -5
  134. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +12 -12
  135. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
  136. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  137. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  138. package/web/.next/server/app/_global-error/page/build-manifest.json +5 -5
  139. package/web/.next/server/app/_global-error.html +2 -2
  140. package/web/.next/server/app/_global-error.rsc +1 -1
  141. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  142. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  143. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  144. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  145. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  146. package/web/.next/server/app/_not-found/page/build-manifest.json +5 -5
  147. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  148. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  149. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  150. package/web/.next/server/app/api/tools/[id]/install/route.js +1 -1
  151. package/web/.next/server/app/api/tools/[id]/install/route.js.nft.json +1 -1
  152. package/web/.next/server/app/api/tools/[id]/install/stream/route/app-paths-manifest.json +3 -0
  153. package/web/.next/server/app/api/tools/[id]/install/stream/route/build-manifest.json +11 -0
  154. package/web/.next/server/app/api/tools/[id]/install/stream/route/server-reference-manifest.json +4 -0
  155. package/web/.next/server/app/api/tools/[id]/install/stream/route.js +6 -0
  156. package/web/.next/server/app/api/tools/[id]/install/stream/route.js.map +5 -0
  157. package/web/.next/server/app/api/tools/[id]/install/stream/route.js.nft.json +1 -0
  158. package/web/.next/server/app/api/tools/[id]/install/stream/route_client-reference-manifest.js +2 -0
  159. package/web/.next/server/app/skills/page/build-manifest.json +5 -5
  160. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  161. package/web/.next/server/app/skills/page.js +1 -1
  162. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  163. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  164. package/web/.next/server/app/tools/page/build-manifest.json +5 -5
  165. package/web/.next/server/app/tools/page/server-reference-manifest.json +77 -2
  166. package/web/.next/server/app/tools/page.js +2 -2
  167. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  168. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  169. package/web/.next/server/app/version/page/build-manifest.json +5 -5
  170. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  171. package/web/.next/server/app/version/page.js.nft.json +1 -1
  172. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  173. package/web/.next/server/app-paths-manifest.json +1 -0
  174. package/web/.next/server/chunks/[root-of-the-server]__0866d2b5._.js +3 -0
  175. package/web/.next/server/chunks/[root-of-the-server]__0866d2b5._.js.map +1 -0
  176. package/web/.next/server/chunks/[root-of-the-server]__e247a485._.js +11 -0
  177. package/web/.next/server/chunks/[root-of-the-server]__e247a485._.js.map +1 -0
  178. package/web/.next/server/chunks/f3a1f__next-internal_server_app_api_tools_[id]_install_stream_route_actions_1fe5bd5d.js +3 -0
  179. package/web/.next/server/chunks/f3a1f__next-internal_server_app_api_tools_[id]_install_stream_route_actions_1fe5bd5d.js.map +1 -0
  180. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  181. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  182. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_2b7834f6.js +1 -1
  183. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_2b7834f6.js.map +1 -1
  184. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_6923c575.js +1 -1
  185. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_6923c575.js.map +1 -1
  186. package/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js +4 -0
  187. package/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js.map +1 -0
  188. package/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +1 -1
  189. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__07385073._.js → server/chunks/ssr/[root-of-the-server]__45dbf93d._.js} +3 -3
  190. package/web/.next/server/chunks/ssr/{[root-of-the-server]__07385073._.js.map → [root-of-the-server]__45dbf93d._.js.map} +1 -1
  191. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  192. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js.map +1 -1
  193. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__8fcb9132._.js → server/chunks/ssr/[root-of-the-server]__6cbc1149._.js} +3 -3
  194. package/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js.map +1 -0
  195. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  196. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js.map +1 -1
  197. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +3 -0
  198. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -0
  199. package/web/.next/server/chunks/ssr/[root-of-the-server]__c18f84a4._.js +3 -0
  200. package/web/.next/server/chunks/ssr/[root-of-the-server]__c18f84a4._.js.map +1 -0
  201. package/web/.next/server/chunks/ssr/[root-of-the-server]__cbae9863._.js +3 -0
  202. package/web/.next/server/chunks/ssr/[root-of-the-server]__cbae9863._.js.map +1 -0
  203. package/web/.next/server/chunks/ssr/[root-of-the-server]__e062a6de._.js +3 -0
  204. package/web/.next/server/chunks/ssr/[root-of-the-server]__e062a6de._.js.map +1 -0
  205. package/web/.next/server/chunks/ssr/[root-of-the-server]__e5e09f72._.js +3 -0
  206. package/web/.next/server/chunks/ssr/[root-of-the-server]__e5e09f72._.js.map +1 -0
  207. package/web/.next/server/chunks/ssr/_07c2a32a._.js +1 -1
  208. package/web/.next/server/chunks/ssr/_07c2a32a._.js.map +1 -1
  209. package/web/.next/server/chunks/ssr/_0e9d6bf7._.js +3 -0
  210. package/web/.next/server/chunks/ssr/_0e9d6bf7._.js.map +1 -0
  211. package/web/.next/server/chunks/ssr/_1978f325._.js +7 -0
  212. package/web/.next/server/chunks/ssr/_1978f325._.js.map +1 -0
  213. package/web/.next/server/chunks/ssr/_3197d5cb._.js +3 -0
  214. package/web/.next/server/chunks/ssr/_3197d5cb._.js.map +1 -0
  215. package/web/.next/server/chunks/ssr/_61351ed3._.js +3 -0
  216. package/web/.next/server/chunks/ssr/_61351ed3._.js.map +1 -0
  217. package/web/.next/server/chunks/ssr/_8400c8bb._.js +3 -0
  218. package/web/.next/server/chunks/ssr/_8400c8bb._.js.map +1 -0
  219. package/web/.next/server/chunks/ssr/_9f940437._.js +3 -0
  220. package/web/.next/server/chunks/ssr/_9f940437._.js.map +1 -0
  221. package/web/.next/server/chunks/ssr/_a29296f0._.js +3 -0
  222. package/web/.next/server/chunks/ssr/_a29296f0._.js.map +1 -0
  223. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/_e50484ec._.js → server/chunks/ssr/_c03d5043._.js} +2 -2
  224. package/web/.next/server/chunks/ssr/{_e50484ec._.js.map → _c03d5043._.js.map} +1 -1
  225. package/web/.next/server/chunks/ssr/_e806976d._.js +3 -0
  226. package/web/.next/server/chunks/ssr/_e806976d._.js.map +1 -0
  227. package/web/.next/server/chunks/ssr/src_presentation_web_1a32dbcb._.js +2 -2
  228. package/web/.next/server/chunks/ssr/src_presentation_web_1a32dbcb._.js.map +1 -1
  229. package/web/.next/server/chunks/ssr/src_presentation_web_398553b0._.js +1 -1
  230. package/web/.next/server/chunks/ssr/src_presentation_web_398553b0._.js.map +1 -1
  231. package/web/.next/server/chunks/ssr/src_presentation_web_5c87e8e4._.js +1 -1
  232. package/web/.next/server/chunks/ssr/src_presentation_web_5c87e8e4._.js.map +1 -1
  233. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_f4952172.js +1 -1
  234. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_f4952172.js.map +1 -1
  235. package/web/.next/server/chunks/ssr/src_presentation_web_c1bc6240._.js +2 -2
  236. package/web/.next/server/chunks/ssr/src_presentation_web_c1bc6240._.js.map +1 -1
  237. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
  238. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js.map +1 -1
  239. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  240. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  241. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_tools_tools-page-client_tsx_3d0aa70c._.js +3 -0
  242. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_tools_tools-page-client_tsx_3d0aa70c._.js.map +1 -0
  243. package/web/.next/server/middleware-build-manifest.js +5 -5
  244. package/web/.next/server/pages/500.html +2 -2
  245. package/web/.next/server/server-reference-manifest.js +1 -1
  246. package/web/.next/server/server-reference-manifest.json +61 -26
  247. package/web/.next/standalone/src/presentation/web/.next/BUILD_ID +1 -1
  248. package/web/.next/standalone/src/presentation/web/.next/app-path-routes-manifest.json +1 -0
  249. package/web/.next/standalone/src/presentation/web/.next/build-manifest.json +7 -7
  250. package/web/.next/standalone/src/presentation/web/.next/prerender-manifest.json +3 -3
  251. package/web/.next/standalone/src/presentation/web/.next/required-server-files.json +1 -1
  252. package/web/.next/standalone/src/presentation/web/.next/routes-manifest.json +8 -0
  253. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page/build-manifest.json +5 -5
  254. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +14 -14
  255. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
  256. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  257. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  258. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/build-manifest.json +5 -5
  259. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +17 -17
  260. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -1
  261. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  262. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  263. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/build-manifest.json +5 -5
  264. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +12 -12
  265. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
  266. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  267. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  268. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page/build-manifest.json +5 -5
  269. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +14 -14
  270. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page.js +1 -1
  271. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  272. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  273. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page/build-manifest.json +5 -5
  274. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +17 -17
  275. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -1
  276. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  277. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  278. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page/build-manifest.json +5 -5
  279. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +12 -12
  280. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page.js +1 -1
  281. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  282. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  283. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/build-manifest.json +5 -5
  284. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +12 -12
  285. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
  286. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  287. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  288. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error/page/build-manifest.json +5 -5
  289. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.html +2 -2
  290. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.rsc +1 -1
  291. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  292. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  293. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  294. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  295. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  296. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/build-manifest.json +5 -5
  297. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  298. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  299. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  300. package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/route.js +1 -1
  301. package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/route.js.nft.json +1 -1
  302. package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/stream/route/app-paths-manifest.json +3 -0
  303. package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/stream/route/build-manifest.json +11 -0
  304. package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/stream/route/server-reference-manifest.json +4 -0
  305. package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/stream/route.js +6 -0
  306. package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/stream/route.js.map +5 -0
  307. package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/stream/route.js.nft.json +1 -0
  308. package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/stream/route_client-reference-manifest.js +2 -0
  309. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/build-manifest.json +5 -5
  310. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  311. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js +1 -1
  312. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js.nft.json +1 -1
  313. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  314. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/build-manifest.json +5 -5
  315. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/server-reference-manifest.json +77 -2
  316. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page.js +2 -2
  317. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page.js.nft.json +1 -1
  318. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  319. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/build-manifest.json +5 -5
  320. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  321. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page.js.nft.json +1 -1
  322. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  323. package/web/.next/standalone/src/presentation/web/.next/server/app-paths-manifest.json +1 -0
  324. package/web/.next/standalone/src/presentation/web/.next/server/chunks/[root-of-the-server]__0866d2b5._.js +3 -0
  325. package/web/.next/standalone/src/presentation/web/.next/server/chunks/[root-of-the-server]__e247a485._.js +11 -0
  326. package/web/.next/standalone/src/presentation/web/.next/server/chunks/f3a1f__next-internal_server_app_api_tools_[id]_install_stream_route_actions_1fe5bd5d.js +3 -0
  327. 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
  328. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_2b7834f6.js +1 -1
  329. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_6923c575.js +1 -1
  330. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js +4 -0
  331. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +1 -1
  332. package/web/.next/{server/chunks/ssr/[root-of-the-server]__07385073._.js → standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js} +3 -3
  333. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  334. package/web/.next/{server/chunks/ssr/[root-of-the-server]__8fcb9132._.js → standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js} +3 -3
  335. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  336. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +3 -0
  337. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__c18f84a4._.js +3 -0
  338. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__cbae9863._.js +3 -0
  339. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__e062a6de._.js +3 -0
  340. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__e5e09f72._.js +3 -0
  341. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_07c2a32a._.js +1 -1
  342. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_0e9d6bf7._.js +3 -0
  343. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_1978f325._.js +7 -0
  344. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_3197d5cb._.js +3 -0
  345. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_61351ed3._.js +3 -0
  346. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_8400c8bb._.js +3 -0
  347. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_9f940437._.js +3 -0
  348. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_a29296f0._.js +3 -0
  349. package/web/.next/{server/chunks/ssr/_e50484ec._.js → standalone/src/presentation/web/.next/server/chunks/ssr/_c03d5043._.js} +2 -2
  350. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_e806976d._.js +3 -0
  351. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_1a32dbcb._.js +2 -2
  352. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_398553b0._.js +1 -1
  353. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_5c87e8e4._.js +1 -1
  354. 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
  355. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_c1bc6240._.js +2 -2
  356. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
  357. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  358. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_features_tools_tools-page-client_tsx_3d0aa70c._.js +3 -0
  359. package/web/.next/standalone/src/presentation/web/.next/server/middleware-build-manifest.js +5 -5
  360. package/web/.next/standalone/src/presentation/web/.next/server/pages/500.html +2 -2
  361. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.js +1 -1
  362. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.json +61 -26
  363. package/web/.next/standalone/src/presentation/web/app/(dashboard)/get-graph-data.ts +2 -6
  364. package/web/.next/standalone/src/presentation/web/app/api/tools/[id]/install/route.ts +14 -6
  365. package/web/.next/standalone/src/presentation/web/app/api/tools/[id]/install/stream/route.ts +42 -0
  366. package/web/.next/standalone/src/presentation/web/app/build-graph-nodes.ts +14 -1
  367. package/web/.next/standalone/src/presentation/web/components/common/base-drawer/base-drawer.tsx +23 -9
  368. package/web/.next/standalone/src/presentation/web/components/common/control-center-drawer/create-drawer-client.tsx +13 -3
  369. package/web/.next/standalone/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.tsx +6 -2
  370. package/web/.next/standalone/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.tsx +2 -0
  371. package/web/.next/standalone/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.tsx +8 -5
  372. package/web/.next/standalone/src/presentation/web/components/common/feature-node/feature-node.tsx +30 -24
  373. package/web/.next/standalone/src/presentation/web/components/common/repository-node/repository-node.tsx +33 -25
  374. package/web/.next/standalone/src/presentation/web/components/features/control-center/control-center-inner.tsx +25 -3
  375. package/web/.next/standalone/src/presentation/web/components/features/control-center/use-control-center-state.ts +184 -230
  376. package/web/.next/standalone/src/presentation/web/components/features/index.ts +1 -1
  377. package/web/.next/standalone/src/presentation/web/components/features/tools/index.ts +1 -1
  378. package/web/.next/standalone/src/presentation/web/components/features/tools/tool-card.stories.tsx +18 -0
  379. package/web/.next/standalone/src/presentation/web/components/features/tools/tool-card.tsx +75 -67
  380. package/web/.next/standalone/src/presentation/web/components/features/tools/tool-detail-drawer.stories.tsx +132 -0
  381. package/web/.next/standalone/src/presentation/web/components/features/tools/tool-detail-drawer.tsx +313 -0
  382. package/web/.next/standalone/src/presentation/web/components/features/tools/tools-page-client.stories.tsx +15 -0
  383. package/web/.next/standalone/src/presentation/web/components/features/tools/tools-page-client.tsx +3 -3
  384. package/web/.next/standalone/src/presentation/web/components/ui/alert-dialog.tsx +7 -0
  385. package/web/.next/standalone/src/presentation/web/components/ui/dialog.tsx +7 -1
  386. package/web/.next/standalone/src/presentation/web/hooks/use-tool-install-stream.ts +58 -0
  387. package/web/.next/standalone/src/presentation/web/lib/layout-with-dagre.ts +93 -4
  388. package/web/.next/standalone/src/presentation/web/server.js +1 -1
  389. package/web/.next/static/chunks/0c54314c8c9c9739.js +7 -0
  390. package/web/.next/static/chunks/18b181b038b76ba9.js +1 -0
  391. package/web/.next/static/chunks/{fc07834e422b1caa.js → 24d21945d0ad2f91.js} +1 -1
  392. package/web/.next/static/chunks/3b46dd43cf4b2b0c.js +1 -0
  393. package/web/.next/static/chunks/{d4ecce2ac7795bd9.js → 4332c12bfb4386b1.js} +1 -1
  394. package/web/.next/static/chunks/4a3b3cfcc85e7254.js +1 -0
  395. package/web/.next/static/chunks/5294480588feb18d.js +1 -0
  396. package/web/.next/static/chunks/5d0a6417c4e4e545.js +1 -0
  397. package/web/.next/static/chunks/67f2a7a5e8dc358a.css +2 -0
  398. package/web/.next/static/chunks/762fc4cf58e29489.js +1 -0
  399. package/web/.next/static/chunks/84a181ff3270fd9f.js +1 -0
  400. package/web/.next/static/chunks/9215b6fb973482c5.js +1 -0
  401. package/web/.next/static/chunks/9455c97db983fb26.js +1 -0
  402. package/web/.next/static/chunks/c92e1360ada8ca94.js +5 -0
  403. package/web/.next/static/chunks/{8b36e07129a1471f.js → d1257b6f5da57064.js} +1 -1
  404. package/web/.next/static/chunks/e4f4eaa9769bcadb.js +1 -0
  405. package/web/.next/static/chunks/edbd674102e897b4.js +1 -0
  406. package/web/.next/static/chunks/{turbopack-3a8fe0e18e69b0ab.js → turbopack-05820f781f3ffc22.js} +1 -1
  407. package/web/.next/trace +1 -1
  408. package/web/.next/trace-build +1 -1
  409. package/web/.next/types/link.d.ts +1 -0
  410. package/web/.next/types/routes.d.ts +2 -1
  411. package/web/.next/types/validator.ts +9 -0
  412. package/dist/src/presentation/web/components/features/tools/install-instructions.d.ts +0 -9
  413. package/dist/src/presentation/web/components/features/tools/install-instructions.d.ts.map +0 -1
  414. package/dist/src/presentation/web/components/features/tools/install-instructions.js +0 -19
  415. package/dist/src/presentation/web/components/features/tools/install-instructions.stories.d.ts +0 -12
  416. package/dist/src/presentation/web/components/features/tools/install-instructions.stories.d.ts.map +0 -1
  417. package/dist/src/presentation/web/components/features/tools/install-instructions.stories.js +0 -77
  418. package/web/.next/server/chunks/[root-of-the-server]__b1f03347._.js +0 -3
  419. package/web/.next/server/chunks/[root-of-the-server]__b1f03347._.js.map +0 -1
  420. package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +0 -4
  421. package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js.map +0 -1
  422. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js +0 -3
  423. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js.map +0 -1
  424. package/web/.next/server/chunks/ssr/[root-of-the-server]__6db85a66._.js +0 -4
  425. package/web/.next/server/chunks/ssr/[root-of-the-server]__6db85a66._.js.map +0 -1
  426. package/web/.next/server/chunks/ssr/[root-of-the-server]__8c1a3d66._.js +0 -3
  427. package/web/.next/server/chunks/ssr/[root-of-the-server]__8c1a3d66._.js.map +0 -1
  428. package/web/.next/server/chunks/ssr/[root-of-the-server]__8fcb9132._.js.map +0 -1
  429. package/web/.next/server/chunks/ssr/[root-of-the-server]__9d14479b._.js +0 -3
  430. package/web/.next/server/chunks/ssr/[root-of-the-server]__9d14479b._.js.map +0 -1
  431. package/web/.next/server/chunks/ssr/[root-of-the-server]__d4e51258._.js +0 -3
  432. package/web/.next/server/chunks/ssr/[root-of-the-server]__d4e51258._.js.map +0 -1
  433. package/web/.next/server/chunks/ssr/[root-of-the-server]__fe2a7deb._.js +0 -3
  434. package/web/.next/server/chunks/ssr/[root-of-the-server]__fe2a7deb._.js.map +0 -1
  435. package/web/.next/server/chunks/ssr/_00e6c698._.js +0 -3
  436. package/web/.next/server/chunks/ssr/_00e6c698._.js.map +0 -1
  437. package/web/.next/server/chunks/ssr/_13566ff3._.js +0 -3
  438. package/web/.next/server/chunks/ssr/_13566ff3._.js.map +0 -1
  439. package/web/.next/server/chunks/ssr/_26129e04._.js +0 -3
  440. package/web/.next/server/chunks/ssr/_26129e04._.js.map +0 -1
  441. package/web/.next/server/chunks/ssr/_34a58db8._.js +0 -3
  442. package/web/.next/server/chunks/ssr/_34a58db8._.js.map +0 -1
  443. package/web/.next/server/chunks/ssr/_37259405._.js +0 -3
  444. package/web/.next/server/chunks/ssr/_37259405._.js.map +0 -1
  445. package/web/.next/server/chunks/ssr/_85d0351b._.js +0 -3
  446. package/web/.next/server/chunks/ssr/_85d0351b._.js.map +0 -1
  447. package/web/.next/server/chunks/ssr/_cb5b3951._.js +0 -3
  448. package/web/.next/server/chunks/ssr/_cb5b3951._.js.map +0 -1
  449. package/web/.next/server/chunks/ssr/_fc3a6895._.js +0 -3
  450. package/web/.next/server/chunks/ssr/_fc3a6895._.js.map +0 -1
  451. package/web/.next/server/chunks/ssr/node_modules__pnpm_3288606c._.js +0 -7
  452. package/web/.next/server/chunks/ssr/node_modules__pnpm_3288606c._.js.map +0 -1
  453. package/web/.next/standalone/src/presentation/web/.next/server/chunks/[root-of-the-server]__b1f03347._.js +0 -3
  454. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +0 -4
  455. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js +0 -3
  456. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6db85a66._.js +0 -4
  457. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__8c1a3d66._.js +0 -3
  458. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__9d14479b._.js +0 -3
  459. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__d4e51258._.js +0 -3
  460. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__fe2a7deb._.js +0 -3
  461. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_00e6c698._.js +0 -3
  462. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_13566ff3._.js +0 -3
  463. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_26129e04._.js +0 -3
  464. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_34a58db8._.js +0 -3
  465. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_37259405._.js +0 -3
  466. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_85d0351b._.js +0 -3
  467. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_cb5b3951._.js +0 -3
  468. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_fc3a6895._.js +0 -3
  469. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/node_modules__pnpm_3288606c._.js +0 -7
  470. package/web/.next/standalone/src/presentation/web/components/features/tools/install-instructions.stories.tsx +0 -89
  471. package/web/.next/standalone/src/presentation/web/components/features/tools/install-instructions.tsx +0 -109
  472. package/web/.next/static/chunks/06b6b02bab76aee7.js +0 -1
  473. package/web/.next/static/chunks/06dfd668334ffb4e.js +0 -7
  474. package/web/.next/static/chunks/07fcc6d17357e905.js +0 -1
  475. package/web/.next/static/chunks/224ed5f5dbd33154.css +0 -2
  476. package/web/.next/static/chunks/32957ff277daec59.js +0 -1
  477. package/web/.next/static/chunks/3e1227e02ef8bcc6.js +0 -5
  478. package/web/.next/static/chunks/412a3ac70c529c5b.js +0 -1
  479. package/web/.next/static/chunks/550bf3cb8220cbf0.js +0 -1
  480. package/web/.next/static/chunks/5f5c607ffae8b918.js +0 -1
  481. package/web/.next/static/chunks/64d73952a0291431.js +0 -1
  482. package/web/.next/static/chunks/938c21b0cefb2b1d.js +0 -1
  483. package/web/.next/static/chunks/c7e793951b20a67f.js +0 -1
  484. package/web/.next/static/chunks/e44849eb58a3335f.js +0 -1
  485. package/web/.next/static/chunks/ecb2130572a7fbe7.js +0 -1
  486. /package/web/.next/static/{7K6dTYQIJ7__PLUYLLfZV → hqNYYoVPGek0YVNAAv6P-}/_buildManifest.js +0 -0
  487. /package/web/.next/static/{7K6dTYQIJ7__PLUYLLfZV → hqNYYoVPGek0YVNAAv6P-}/_clientMiddlewareManifest.json +0 -0
  488. /package/web/.next/static/{7K6dTYQIJ7__PLUYLLfZV → hqNYYoVPGek0YVNAAv6P-}/_ssgManifest.js +0 -0
@@ -0,0 +1,42 @@
1
+ import { resolve } from '@/lib/server-container';
2
+ import type { InstallToolUseCase } from '@shepai/core/application/use-cases/tools/install-tool.use-case';
3
+
4
+ // Force dynamic — SSE streams must never be statically optimized or cached
5
+ export const dynamic = 'force-dynamic';
6
+
7
+ export async function GET(
8
+ _request: Request,
9
+ { params }: { params: Promise<{ id: string }> }
10
+ ): Promise<Response> {
11
+ const { id } = await params;
12
+ const useCase = resolve<InstallToolUseCase>('InstallToolUseCase');
13
+
14
+ const encoder = new TextEncoder();
15
+ const stream = new ReadableStream({
16
+ async start(controller) {
17
+ try {
18
+ const status = await useCase.execute(id, (chunk: string) => {
19
+ controller.enqueue(encoder.encode(`data: ${chunk.replace(/\n/g, '\ndata: ')}\n\n`));
20
+ });
21
+ controller.enqueue(encoder.encode(`event: done\ndata: ${JSON.stringify(status)}\n\n`));
22
+ } catch (error) {
23
+ const message = error instanceof Error ? error.message : 'Installation failed';
24
+ controller.enqueue(
25
+ encoder.encode(
26
+ `event: done\ndata: ${JSON.stringify({ status: 'error', toolName: id, errorMessage: message })}\n\n`
27
+ )
28
+ );
29
+ } finally {
30
+ controller.close();
31
+ }
32
+ },
33
+ });
34
+
35
+ return new Response(stream, {
36
+ headers: {
37
+ 'Content-Type': 'text/event-stream',
38
+ 'Cache-Control': 'no-cache',
39
+ Connection: 'keep-alive',
40
+ },
41
+ });
42
+ }
@@ -117,7 +117,20 @@ function appendFeatureNodes(
117
117
  nodes: CanvasNodeType[],
118
118
  edges: Edge[]
119
119
  ): void {
120
- repoFeatures.forEach(({ feature, run }) => {
120
+ // Sort by createdAt so newest features appear last (bottom) in the layout
121
+ const sorted = [...repoFeatures].sort((a, b) => {
122
+ const aTime =
123
+ a.feature.createdAt instanceof Date
124
+ ? a.feature.createdAt.getTime()
125
+ : Number(a.feature.createdAt);
126
+ const bTime =
127
+ b.feature.createdAt instanceof Date
128
+ ? b.feature.createdAt.getTime()
129
+ : Number(b.feature.createdAt);
130
+ return aTime - bTime;
131
+ });
132
+
133
+ sorted.forEach(({ feature, run }) => {
121
134
  const agentNode = run?.result?.startsWith('node:') ? run.result.slice(5) : undefined;
122
135
  const lifecycle: FeatureLifecyclePhase =
123
136
  run?.status === 'completed'
@@ -12,6 +12,8 @@ import {
12
12
  DrawerHeader,
13
13
  DrawerFooter,
14
14
  DrawerOverlay,
15
+ DrawerTitle,
16
+ DrawerDescription,
15
17
  } from '@/components/ui/drawer';
16
18
  import { Separator } from '@/components/ui/separator';
17
19
  import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';
@@ -34,6 +36,9 @@ export interface BaseDrawerProps extends VariantProps<typeof drawerVariants> {
34
36
  open: boolean;
35
37
  onClose: () => void;
36
38
  modal?: boolean;
39
+ /** When true, clicking anywhere outside the drawer closes it, ignoring `data-no-drawer-close` guards. */
40
+ dismissOnOutsideClick?: boolean;
41
+ title?: string;
37
42
  header?: React.ReactNode;
38
43
  children: React.ReactNode;
39
44
  footer?: React.ReactNode;
@@ -46,6 +51,8 @@ export function BaseDrawer({
46
51
  open,
47
52
  onClose,
48
53
  modal = false,
54
+ dismissOnOutsideClick = false,
55
+ title = 'Drawer',
49
56
  size,
50
57
  header,
51
58
  children,
@@ -68,19 +75,18 @@ export function BaseDrawer({
68
75
  // longer in the DOM tree — treat it as an internal click, not an outside one.
69
76
  if (!document.body.contains(target)) return;
70
77
  if (contentRef.current?.contains(target)) return;
71
- // Don't close when clicking inside the canvas or other Radix overlays
72
- if (
73
- target.closest(
74
- '[data-no-drawer-close], [role="alertdialog"], [role="menu"], [role="listbox"], [data-radix-popper-content-wrapper]'
75
- )
76
- )
77
- return;
78
+ // Don't close when clicking inside Radix overlays.
79
+ // When dismissOnOutsideClick is false (default), also respect data-no-drawer-close guards.
80
+ const ignoreSelector = dismissOnOutsideClick
81
+ ? '[role="alertdialog"], [role="dialog"], [role="menu"], [role="listbox"], [data-radix-popper-content-wrapper]'
82
+ : '[data-no-drawer-close], [role="alertdialog"], [role="dialog"], [role="menu"], [role="listbox"], [data-radix-popper-content-wrapper]';
83
+ if (target.closest(ignoreSelector)) return;
78
84
  onClose();
79
85
  };
80
86
 
81
87
  document.addEventListener('click', handleClick);
82
88
  return () => document.removeEventListener('click', handleClick);
83
- }, [open, modal, onClose]);
89
+ }, [open, modal, onClose, dismissOnOutsideClick]);
84
90
 
85
91
  return (
86
92
  <Drawer
@@ -99,8 +105,16 @@ export function BaseDrawer({
99
105
  showCloseButton={false}
100
106
  className={cn(drawerVariants({ size }), className)}
101
107
  data-testid={testId}
102
- onInteractOutside={(e) => e.preventDefault()}
108
+ onInteractOutside={modal ? undefined : (e) => e.preventDefault()}
103
109
  >
110
+ {/* Visually hidden title & description required by Radix Dialog for accessibility */}
111
+ <DrawerTitle asChild>
112
+ <span className="sr-only">{title}</span>
113
+ </DrawerTitle>
114
+ <DrawerDescription asChild>
115
+ <span className="sr-only">{title}</span>
116
+ </DrawerDescription>
117
+
104
118
  {/* Close button */}
105
119
  <button
106
120
  type="button"
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
 
3
- import { useState, useCallback } from 'react';
3
+ import { useState, useCallback, useEffect } from 'react';
4
4
  import { useRouter, usePathname } from 'next/navigation';
5
5
  import { toast } from 'sonner';
6
6
  import { createFeature } from '@/app/actions/create-feature';
@@ -31,8 +31,18 @@ export function CreateDrawerClient({
31
31
  // content during soft navigation, so this component is NOT unmounted when
32
32
  // navigating to `/`. We watch the pathname and let Vaul handle the close
33
33
  // animation when the path no longer matches the create route.
34
+ // When submitting, force the drawer closed immediately — router.push('/')
35
+ // is async and the pathname may not update before the next render.
34
36
  const pathname = usePathname();
35
- const isOpen = pathname.startsWith('/create');
37
+ const isOpen = !isSubmitting && pathname.startsWith('/create');
38
+
39
+ // Safety net: if the drawer is closed (e.g. via form submit + isSubmitting)
40
+ // but router.push('/') hasn't taken effect yet, force-clear the route.
41
+ useEffect(() => {
42
+ if (!isOpen && pathname.startsWith('/create')) {
43
+ router.replace('/');
44
+ }
45
+ }, [isOpen, pathname, router]);
36
46
 
37
47
  const onClose = useCallback(() => {
38
48
  router.push('/');
@@ -49,6 +59,7 @@ export function CreateDrawerClient({
49
59
  name: data.name,
50
60
  description: data.description,
51
61
  repositoryPath: data.repositoryPath,
62
+ parentId: data.parentId,
52
63
  },
53
64
  })
54
65
  );
@@ -66,7 +77,6 @@ export function CreateDrawerClient({
66
77
  return;
67
78
  }
68
79
  createSound.play();
69
- router.refresh();
70
80
  })
71
81
  .catch(() => {
72
82
  toast.error('Failed to create feature');
@@ -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) =>