@shepai/cli 1.178.1-pr542.7543cde → 1.178.1-pr543.c29c347

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 (321) hide show
  1. package/dist/packages/core/src/application/ports/output/services/deployment-service.interface.d.ts +0 -17
  2. package/dist/packages/core/src/application/ports/output/services/deployment-service.interface.d.ts.map +1 -1
  3. package/dist/packages/core/src/application/ports/output/services/file-system-service.interface.d.ts +0 -7
  4. package/dist/packages/core/src/application/ports/output/services/file-system-service.interface.d.ts.map +1 -1
  5. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  6. package/dist/packages/core/src/infrastructure/di/container.js +0 -29
  7. package/dist/packages/core/src/infrastructure/services/deployment/deployment.service.d.ts +1 -9
  8. package/dist/packages/core/src/infrastructure/services/deployment/deployment.service.d.ts.map +1 -1
  9. package/dist/packages/core/src/infrastructure/services/deployment/deployment.service.js +0 -66
  10. package/dist/packages/core/src/infrastructure/services/file-system.service.d.ts +0 -1
  11. package/dist/packages/core/src/infrastructure/services/file-system.service.d.ts.map +1 -1
  12. package/dist/packages/core/src/infrastructure/services/file-system.service.js +0 -4
  13. package/dist/packages/core/src/infrastructure/services/git/pr-branding.d.ts +1 -1
  14. package/dist/packages/core/src/infrastructure/services/git/pr-branding.d.ts.map +1 -1
  15. package/dist/packages/core/src/infrastructure/services/git/pr-branding.js +1 -1
  16. package/dist/src/presentation/web/app/(dashboard)/get-graph-data.d.ts +0 -2
  17. package/dist/src/presentation/web/app/(dashboard)/get-graph-data.d.ts.map +1 -1
  18. package/dist/src/presentation/web/app/(dashboard)/get-graph-data.js +19 -9
  19. package/dist/src/presentation/web/app/(dashboard)/layout.d.ts.map +1 -1
  20. package/dist/src/presentation/web/app/(dashboard)/layout.js +2 -3
  21. package/dist/src/presentation/web/app/actions/deploy-feature.d.ts +1 -1
  22. package/dist/src/presentation/web/app/actions/deploy-feature.d.ts.map +1 -1
  23. package/dist/src/presentation/web/app/actions/deploy-feature.js +33 -4
  24. package/dist/src/presentation/web/app/actions/deploy-repository.d.ts +1 -1
  25. package/dist/src/presentation/web/app/actions/deploy-repository.d.ts.map +1 -1
  26. package/dist/src/presentation/web/app/actions/deploy-repository.js +24 -4
  27. package/dist/src/presentation/web/app/actions/get-deployment-status.d.ts.map +1 -1
  28. package/dist/src/presentation/web/app/actions/get-deployment-status.js +5 -2
  29. package/dist/src/presentation/web/app/actions/stop-deployment.d.ts.map +1 -1
  30. package/dist/src/presentation/web/app/actions/stop-deployment.js +5 -2
  31. package/dist/src/presentation/web/app/api/graph-data/route.d.ts +0 -1
  32. package/dist/src/presentation/web/app/api/graph-data/route.d.ts.map +1 -1
  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 +2 -7
  35. package/dist/src/presentation/web/hooks/use-deploy-action.d.ts +6 -2
  36. package/dist/src/presentation/web/hooks/use-deploy-action.d.ts.map +1 -1
  37. package/dist/src/presentation/web/hooks/use-deploy-action.js +159 -42
  38. package/dist/src/presentation/web/lib/is-same-shep-instance.d.ts +7 -0
  39. package/dist/src/presentation/web/lib/is-same-shep-instance.d.ts.map +1 -0
  40. package/dist/src/presentation/web/lib/is-same-shep-instance.js +18 -0
  41. package/dist/tsconfig.build.tsbuildinfo +1 -1
  42. package/package.json +1 -1
  43. package/web/.next/BUILD_ID +1 -1
  44. package/web/.next/build-manifest.json +2 -2
  45. package/web/.next/fallback-build-manifest.json +2 -2
  46. package/web/.next/prerender-manifest.json +3 -3
  47. package/web/.next/required-server-files.js +1 -1
  48. package/web/.next/required-server-files.json +1 -1
  49. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +30 -30
  50. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +4 -4
  51. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  52. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  53. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +28 -28
  54. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js +4 -4
  55. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  56. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  57. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +31 -31
  58. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +4 -4
  59. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  60. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  61. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +39 -39
  62. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +4 -4
  63. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  64. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  65. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +39 -39
  66. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +4 -4
  67. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  68. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  69. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +29 -29
  70. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js +4 -4
  71. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  72. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  73. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +29 -29
  74. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +4 -4
  75. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  76. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  77. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +28 -28
  78. package/web/.next/server/app/(dashboard)/chat/page.js +4 -4
  79. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  80. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  81. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +31 -31
  82. package/web/.next/server/app/(dashboard)/create/page.js +4 -4
  83. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  84. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  85. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +39 -39
  86. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +4 -4
  87. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  88. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  89. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +39 -39
  90. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +4 -4
  91. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  92. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  93. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +28 -28
  94. package/web/.next/server/app/(dashboard)/page.js +4 -4
  95. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  96. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  97. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +29 -29
  98. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js +4 -4
  99. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  100. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  101. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +29 -29
  102. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +4 -4
  103. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  104. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  105. package/web/.next/server/app/_global-error.html +2 -2
  106. package/web/.next/server/app/_global-error.rsc +1 -1
  107. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  108. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  109. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  110. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  111. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  112. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
  113. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  114. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  115. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  116. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  117. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  118. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -1
  119. package/web/.next/server/app/features/page/server-reference-manifest.json +6 -6
  120. package/web/.next/server/app/features/page.js.nft.json +1 -1
  121. package/web/.next/server/app/features/page_client-reference-manifest.js +1 -1
  122. package/web/.next/server/app/settings/page/server-reference-manifest.json +9 -9
  123. package/web/.next/server/app/settings/page.js +1 -1
  124. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  125. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  126. package/web/.next/server/app/skills/page/server-reference-manifest.json +13 -13
  127. package/web/.next/server/app/skills/page.js +3 -2
  128. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  129. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  130. package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
  131. package/web/.next/server/app/tools/page.js +2 -1
  132. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  133. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  134. package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
  135. package/web/.next/server/app/version/page.js.nft.json +1 -1
  136. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  137. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js +1 -1
  138. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js.map +1 -1
  139. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  140. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  141. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  142. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
  143. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
  144. package/web/.next/server/chunks/ssr/{[root-of-the-server]__8f02b364._.js → [root-of-the-server]__1cd4327c._.js} +3 -3
  145. package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js.map +1 -0
  146. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js +1 -1
  147. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js.map +1 -1
  148. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  149. package/web/.next/server/chunks/ssr/[root-of-the-server]__46b10380._.js +3 -0
  150. package/web/.next/server/chunks/ssr/[root-of-the-server]__46b10380._.js.map +1 -0
  151. package/web/.next/server/chunks/ssr/[root-of-the-server]__4ed9b909._.js +3 -0
  152. package/web/.next/server/chunks/ssr/{[root-of-the-server]__e0592c69._.js.map → [root-of-the-server]__4ed9b909._.js.map} +1 -1
  153. package/web/.next/server/chunks/ssr/[root-of-the-server]__540c615f._.js +4 -0
  154. package/web/.next/server/chunks/ssr/[root-of-the-server]__540c615f._.js.map +1 -0
  155. package/web/.next/server/chunks/ssr/{[root-of-the-server]__16c1388b._.js → [root-of-the-server]__69dd3217._.js} +2 -2
  156. package/web/.next/server/chunks/ssr/{[root-of-the-server]__16c1388b._.js.map → [root-of-the-server]__69dd3217._.js.map} +1 -1
  157. package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js +1 -1
  158. package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js.map +1 -1
  159. package/web/.next/server/chunks/ssr/[root-of-the-server]__8b512877._.js +3 -0
  160. package/web/.next/server/chunks/ssr/[root-of-the-server]__8b512877._.js.map +1 -0
  161. package/web/.next/server/chunks/ssr/[root-of-the-server]__990dba2d._.js +3 -0
  162. package/web/.next/server/chunks/ssr/[root-of-the-server]__990dba2d._.js.map +1 -0
  163. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js +1 -1
  164. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js.map +1 -1
  165. package/web/.next/server/chunks/ssr/[root-of-the-server]__cc9c7bbb._.js +3 -0
  166. package/web/.next/server/chunks/ssr/[root-of-the-server]__cc9c7bbb._.js.map +1 -0
  167. package/web/.next/server/chunks/ssr/_05c23ad9._.js +3 -0
  168. package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +1 -0
  169. package/web/.next/server/chunks/ssr/{_396a6887._.js → _16eb4fec._.js} +2 -2
  170. package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -0
  171. package/web/.next/server/chunks/ssr/_45496654._.js +1 -1
  172. package/web/.next/server/chunks/ssr/_45496654._.js.map +1 -1
  173. package/web/.next/server/chunks/ssr/_496c9117._.js +1 -1
  174. package/web/.next/server/chunks/ssr/_496c9117._.js.map +1 -1
  175. package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
  176. package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
  177. package/web/.next/server/chunks/ssr/{_24491e82._.js → _62abfd43._.js} +2 -2
  178. package/web/.next/server/chunks/ssr/{_24491e82._.js.map → _62abfd43._.js.map} +1 -1
  179. package/web/.next/server/chunks/ssr/_6abfa39e._.js +1 -1
  180. package/web/.next/server/chunks/ssr/{_16ca9a4e._.js → _829a7df3._.js} +2 -2
  181. package/web/.next/server/chunks/ssr/{_16ca9a4e._.js.map → _829a7df3._.js.map} +1 -1
  182. package/web/.next/server/chunks/ssr/{_186d1bba._.js → _c9f3713e._.js} +2 -2
  183. package/web/.next/server/chunks/ssr/{_186d1bba._.js.map → _c9f3713e._.js.map} +1 -1
  184. package/web/.next/server/chunks/ssr/{_74a1a173._.js → _d9c0a97a._.js} +2 -2
  185. package/web/.next/server/chunks/ssr/{_74a1a173._.js.map → _d9c0a97a._.js.map} +1 -1
  186. package/web/.next/server/chunks/ssr/{[root-of-the-server]__7c634c0f._.js → _f8c55130._.js} +3 -3
  187. package/web/.next/server/chunks/ssr/_f8c55130._.js.map +1 -0
  188. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  189. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  190. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
  191. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +1 -1
  192. package/web/.next/server/chunks/ssr/src_presentation_web_06109d28._.js +5 -0
  193. package/web/.next/server/chunks/ssr/src_presentation_web_06109d28._.js.map +1 -0
  194. package/web/.next/server/chunks/ssr/src_presentation_web_0bca70f8._.js +3 -0
  195. package/web/.next/server/chunks/ssr/src_presentation_web_0bca70f8._.js.map +1 -0
  196. package/web/.next/server/chunks/ssr/src_presentation_web_367cdbe0._.js +3 -0
  197. package/web/.next/server/chunks/ssr/src_presentation_web_367cdbe0._.js.map +1 -0
  198. package/web/.next/server/chunks/ssr/src_presentation_web_57fed7fd._.js +3 -0
  199. package/web/.next/server/chunks/ssr/src_presentation_web_57fed7fd._.js.map +1 -0
  200. package/web/.next/server/chunks/ssr/src_presentation_web_7f567f6d._.js +3 -0
  201. package/web/.next/server/chunks/ssr/src_presentation_web_7f567f6d._.js.map +1 -0
  202. package/web/.next/server/chunks/ssr/src_presentation_web_972f58d5._.js +3 -0
  203. package/web/.next/server/chunks/ssr/src_presentation_web_972f58d5._.js.map +1 -0
  204. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_4ce30db7.js +3 -0
  205. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_4ce30db7.js.map +1 -0
  206. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_e4032193.js +3 -0
  207. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_e4032193.js.map +1 -0
  208. package/web/.next/server/chunks/ssr/src_presentation_web_a71b18a2._.js +3 -0
  209. package/web/.next/server/chunks/ssr/src_presentation_web_a71b18a2._.js.map +1 -0
  210. package/web/.next/server/chunks/ssr/src_presentation_web_bebe675e._.js +3 -0
  211. package/web/.next/server/chunks/ssr/src_presentation_web_bebe675e._.js.map +1 -0
  212. package/web/.next/server/chunks/ssr/src_presentation_web_c93e8bc6._.js +3 -0
  213. package/web/.next/server/chunks/ssr/src_presentation_web_c93e8bc6._.js.map +1 -0
  214. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +3 -0
  215. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js.map +1 -0
  216. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
  217. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -1
  218. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +3 -0
  219. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -0
  220. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js +1 -1
  221. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js.map +1 -1
  222. package/web/.next/server/chunks/ssr/src_presentation_web_e729f44a._.js +5 -0
  223. package/web/.next/server/chunks/ssr/src_presentation_web_e729f44a._.js.map +1 -0
  224. package/web/.next/server/pages/500.html +2 -2
  225. package/web/.next/server/server-reference-manifest.js +1 -1
  226. package/web/.next/server/server-reference-manifest.json +51 -51
  227. package/web/.next/static/chunks/{786b27ee990d3b34.js → 162b229150b5ce2b.js} +1 -1
  228. package/web/.next/static/chunks/{d147896313762096.js → 179cdda8ec07e634.js} +1 -1
  229. package/web/.next/static/chunks/{61abd1e06da2f8ef.js → 35f4cb6136073cef.js} +2 -2
  230. package/web/.next/static/chunks/{c94a6a3d54dd4997.js → 46e2693dbc9262fd.js} +2 -2
  231. package/web/.next/static/chunks/{2c4cb7480376b6ed.js → 50feaf9c264518e1.js} +1 -1
  232. package/web/.next/static/chunks/{c6e2c16af9877995.js → 6fdf12de32a452a7.js} +3 -3
  233. package/web/.next/static/chunks/8cfae6208618f774.js +3 -0
  234. package/web/.next/static/chunks/8ea3e4464d031e64.js +1 -0
  235. package/web/.next/static/chunks/a1a23a0b44b9fac3.js +1 -0
  236. package/web/.next/static/chunks/{6480e8223619d07d.js → a2af62c62217ad85.js} +1 -1
  237. package/web/.next/static/chunks/{cc869353e7f21530.js → a8f64867bba21ee1.js} +1 -1
  238. package/web/.next/static/chunks/{0cae714c7b13c462.js → ab55dcf336f01e53.js} +1 -1
  239. package/web/.next/static/chunks/{7c4e4e9c3dcb3917.js → b813480c811d0dd2.js} +1 -1
  240. package/web/.next/static/chunks/e18d20a60fb0162b.js +1 -0
  241. package/web/.next/static/chunks/e945ca6e9a1cfb5a.js +1 -0
  242. package/dist/packages/core/src/application/ports/output/services/shep-instance-service.interface.d.ts +0 -22
  243. package/dist/packages/core/src/application/ports/output/services/shep-instance-service.interface.d.ts.map +0 -1
  244. package/dist/packages/core/src/application/ports/output/services/shep-instance-service.interface.js +0 -11
  245. package/dist/packages/core/src/application/use-cases/deployments/get-deployment-status.use-case.d.ts +0 -13
  246. package/dist/packages/core/src/application/use-cases/deployments/get-deployment-status.use-case.d.ts.map +0 -1
  247. package/dist/packages/core/src/application/use-cases/deployments/get-deployment-status.use-case.js +0 -37
  248. package/dist/packages/core/src/application/use-cases/deployments/list-deployments.use-case.d.ts +0 -14
  249. package/dist/packages/core/src/application/use-cases/deployments/list-deployments.use-case.d.ts.map +0 -1
  250. package/dist/packages/core/src/application/use-cases/deployments/list-deployments.use-case.js +0 -35
  251. package/dist/packages/core/src/application/use-cases/deployments/start-feature-deployment.use-case.d.ts +0 -27
  252. package/dist/packages/core/src/application/use-cases/deployments/start-feature-deployment.use-case.d.ts.map +0 -1
  253. package/dist/packages/core/src/application/use-cases/deployments/start-feature-deployment.use-case.js +0 -68
  254. package/dist/packages/core/src/application/use-cases/deployments/start-repository-deployment.use-case.d.ts +0 -23
  255. package/dist/packages/core/src/application/use-cases/deployments/start-repository-deployment.use-case.d.ts.map +0 -1
  256. package/dist/packages/core/src/application/use-cases/deployments/start-repository-deployment.use-case.js +0 -58
  257. package/dist/packages/core/src/application/use-cases/deployments/stop-deployment.use-case.d.ts +0 -13
  258. package/dist/packages/core/src/application/use-cases/deployments/stop-deployment.use-case.d.ts.map +0 -1
  259. package/dist/packages/core/src/application/use-cases/deployments/stop-deployment.use-case.js +0 -37
  260. package/dist/packages/core/src/infrastructure/services/shep-instance.service.d.ts +0 -16
  261. package/dist/packages/core/src/infrastructure/services/shep-instance.service.d.ts.map +0 -1
  262. package/dist/packages/core/src/infrastructure/services/shep-instance.service.js +0 -39
  263. package/dist/src/presentation/web/app/actions/list-deployments.d.ts +0 -3
  264. package/dist/src/presentation/web/app/actions/list-deployments.d.ts.map +0 -1
  265. package/dist/src/presentation/web/app/actions/list-deployments.js +0 -6
  266. package/dist/src/presentation/web/hooks/deployment-status-provider.d.ts +0 -41
  267. package/dist/src/presentation/web/hooks/deployment-status-provider.d.ts.map +0 -1
  268. package/dist/src/presentation/web/hooks/deployment-status-provider.js +0 -205
  269. package/dist/src/presentation/web/hooks/deployment-status-store.d.ts +0 -42
  270. package/dist/src/presentation/web/hooks/deployment-status-store.d.ts.map +0 -1
  271. package/dist/src/presentation/web/hooks/deployment-status-store.js +0 -99
  272. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_bdff55d6.js +0 -3
  273. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_bdff55d6.js.map +0 -1
  274. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_6aa77d75.js +0 -3
  275. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_6aa77d75.js.map +0 -1
  276. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_24adb073.js +0 -3
  277. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_24adb073.js.map +0 -1
  278. package/web/.next/server/chunks/ssr/[root-of-the-server]__75070d2e._.js +0 -3
  279. package/web/.next/server/chunks/ssr/[root-of-the-server]__75070d2e._.js.map +0 -1
  280. package/web/.next/server/chunks/ssr/[root-of-the-server]__7c634c0f._.js.map +0 -1
  281. package/web/.next/server/chunks/ssr/[root-of-the-server]__8f02b364._.js.map +0 -1
  282. package/web/.next/server/chunks/ssr/[root-of-the-server]__9dde817e._.js +0 -3
  283. package/web/.next/server/chunks/ssr/[root-of-the-server]__9dde817e._.js.map +0 -1
  284. package/web/.next/server/chunks/ssr/[root-of-the-server]__a00db173._.js +0 -3
  285. package/web/.next/server/chunks/ssr/[root-of-the-server]__a00db173._.js.map +0 -1
  286. package/web/.next/server/chunks/ssr/[root-of-the-server]__cf751517._.js +0 -4
  287. package/web/.next/server/chunks/ssr/[root-of-the-server]__cf751517._.js.map +0 -1
  288. package/web/.next/server/chunks/ssr/[root-of-the-server]__e0592c69._.js +0 -3
  289. package/web/.next/server/chunks/ssr/[root-of-the-server]__e5f31e9a._.js +0 -3
  290. package/web/.next/server/chunks/ssr/[root-of-the-server]__e5f31e9a._.js.map +0 -1
  291. package/web/.next/server/chunks/ssr/_396a6887._.js.map +0 -1
  292. package/web/.next/server/chunks/ssr/_9bbdd461._.js +0 -4
  293. package/web/.next/server/chunks/ssr/_9bbdd461._.js.map +0 -1
  294. package/web/.next/server/chunks/ssr/_bcd239dd._.js +0 -3
  295. package/web/.next/server/chunks/ssr/_bcd239dd._.js.map +0 -1
  296. package/web/.next/server/chunks/ssr/src_presentation_web_0338c789._.js +0 -3
  297. package/web/.next/server/chunks/ssr/src_presentation_web_0338c789._.js.map +0 -1
  298. package/web/.next/server/chunks/ssr/src_presentation_web_071f1e80._.js +0 -5
  299. package/web/.next/server/chunks/ssr/src_presentation_web_071f1e80._.js.map +0 -1
  300. package/web/.next/server/chunks/ssr/src_presentation_web_55c1ff7d._.js +0 -3
  301. package/web/.next/server/chunks/ssr/src_presentation_web_55c1ff7d._.js.map +0 -1
  302. package/web/.next/server/chunks/ssr/src_presentation_web_9a543843._.js +0 -3
  303. package/web/.next/server/chunks/ssr/src_presentation_web_9a543843._.js.map +0 -1
  304. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_ad14a90f.js +0 -3
  305. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_ad14a90f.js.map +0 -1
  306. package/web/.next/server/chunks/ssr/src_presentation_web_bade80bd._.js +0 -3
  307. package/web/.next/server/chunks/ssr/src_presentation_web_bade80bd._.js.map +0 -1
  308. package/web/.next/server/chunks/ssr/src_presentation_web_d5838156._.js +0 -3
  309. package/web/.next/server/chunks/ssr/src_presentation_web_d5838156._.js.map +0 -1
  310. package/web/.next/server/chunks/ssr/src_presentation_web_dc28bc60._.js +0 -5
  311. package/web/.next/server/chunks/ssr/src_presentation_web_dc28bc60._.js.map +0 -1
  312. package/web/.next/server/chunks/ssr/src_presentation_web_dcb020e3._.js +0 -3
  313. package/web/.next/server/chunks/ssr/src_presentation_web_dcb020e3._.js.map +0 -1
  314. package/web/.next/static/chunks/06ffddbe2d7ca821.js +0 -3
  315. package/web/.next/static/chunks/336b53c6fef86538.js +0 -1
  316. package/web/.next/static/chunks/49a1a8d70187f252.js +0 -1
  317. package/web/.next/static/chunks/73072d513a3afa05.js +0 -1
  318. package/web/.next/static/chunks/ca8e7194d99f3f66.js +0 -1
  319. /package/web/.next/static/{JP6EyDXfaUYl1GK2EVop6 → FA2X6f8O7_-CTGtiu61EU}/_buildManifest.js +0 -0
  320. /package/web/.next/static/{JP6EyDXfaUYl1GK2EVop6 → FA2X6f8O7_-CTGtiu61EU}/_clientMiddlewareManifest.json +0 -0
  321. /package/web/.next/static/{JP6EyDXfaUYl1GK2EVop6 → FA2X6f8O7_-CTGtiu61EU}/_ssgManifest.js +0 -0
@@ -29,13 +29,6 @@ export interface DeploymentStatus {
29
29
  /** Detected URL when the dev server is Ready, null while Booting. */
30
30
  url: string | null;
31
31
  }
32
- /** Status snapshot including the target identifier, returned by listAll(). */
33
- export interface DeploymentStatusEntry extends DeploymentStatus {
34
- /** Unique identifier for the deployment target (featureId or repositoryPath). */
35
- targetId: string;
36
- /** Type of target ('feature' or 'repository'). */
37
- targetType: string;
38
- }
39
32
  /**
40
33
  * Port interface for managing local dev server deployments.
41
34
  *
@@ -82,16 +75,6 @@ export interface IDeploymentService {
82
75
  * @returns Status snapshot with state and url, or null if no deployment exists
83
76
  */
84
77
  getStatus(targetId: string): DeploymentStatus | null;
85
- /**
86
- * List all currently tracked deployments (both in-memory and persisted in DB)
87
- * that have a live process. Dead deployments are cleaned up as a side effect.
88
- *
89
- * Used by ListDeploymentsUseCase for bulk hydration on page load and
90
- * shared-state synchronization across client components.
91
- *
92
- * @returns Array of status entries keyed by targetId (never null; empty when no deployments)
93
- */
94
- listAll(): DeploymentStatusEntry[];
95
78
  /**
96
79
  * Force-stop all tracked deployments immediately.
97
80
  * Called during daemon shutdown to prevent orphaned dev server processes.
@@ -1 +1 @@
1
- {"version":3,"file":"deployment-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/deployment-service.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEpE,uEAAuE;AACvE,MAAM,WAAW,QAAQ;IACvB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,+CAA+C;AAC/C,MAAM,WAAW,gBAAgB;IAC/B,iDAAiD;IACjD,KAAK,EAAE,eAAe,CAAC;IACvB,qEAAqE;IACrE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAED,8EAA8E;AAC9E,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC7D,iFAAiF;IACjF,QAAQ,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;IAEzC;;;OAGG;IACH,UAAU,IAAI,IAAI,CAAC;IAEnB;;;;;;;;OAQG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvE;;;;;;OAMG;IACH,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAAC;IAErD;;;;;;;;OAQG;IACH,OAAO,IAAI,qBAAqB,EAAE,CAAC;IAEnC;;;OAGG;IACH,OAAO,IAAI,IAAI,CAAC;IAIhB;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC;IAE7C;;;;;OAKG;IACH,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI,CAAC;IAE3D;;;;;OAKG;IACH,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI,CAAC;CAC7D"}
1
+ {"version":3,"file":"deployment-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/deployment-service.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEpE,uEAAuE;AACvE,MAAM,WAAW,QAAQ;IACvB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,+CAA+C;AAC/C,MAAM,WAAW,gBAAgB;IAC/B,iDAAiD;IACjD,KAAK,EAAE,eAAe,CAAC;IACvB,qEAAqE;IACrE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;IAEzC;;;OAGG;IACH,UAAU,IAAI,IAAI,CAAC;IAEnB;;;;;;;;OAQG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvE;;;;;;OAMG;IACH,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAAC;IAErD;;;OAGG;IACH,OAAO,IAAI,IAAI,CAAC;IAIhB;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC;IAE7C;;;;;OAKG;IACH,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI,CAAC;IAE3D;;;;;OAKG;IACH,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI,CAAC;CAC7D"}
@@ -14,12 +14,5 @@ export interface IFileSystemService {
14
14
  * @throws Error if removal fails for reasons other than non-existence
15
15
  */
16
16
  removeDirectory(dirPath: string): Promise<void>;
17
- /**
18
- * Check whether a file or directory exists at the given absolute path.
19
- *
20
- * @param path - Absolute filesystem path to check
21
- * @returns true if the path exists, false otherwise
22
- */
23
- pathExists(path: string): boolean;
24
17
  }
25
18
  //# sourceMappingURL=file-system-service.interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-system-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/file-system-service.interface.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,kBAAkB;IACjC;;;;;;;OAOG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhD;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CACnC"}
1
+ {"version":3,"file":"file-system-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/file-system-service.interface.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,kBAAkB;IACjC;;;;;;;OAOG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD"}
@@ -1 +1 @@
1
- {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/di/container.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AA4KrC;;;;;;GAMG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,SAAS,CAAC,CAofrE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/di/container.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAmKrC;;;;;;GAMG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,SAAS,CAAC,CA6drE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -31,7 +31,6 @@ import { SkillInjectorService } from '../services/skill-injector.service.js';
31
31
  import { JsonDrivenIdeLauncherService } from '../services/ide-launchers/json-driven-ide-launcher.service.js';
32
32
  import { DaemonPidService } from '../services/daemon/daemon-pid.service.js';
33
33
  import { DeploymentService } from '../services/deployment/deployment.service.js';
34
- import { ShepInstanceService } from '../services/shep-instance.service.js';
35
34
  import { AttachmentStorageService } from '../services/attachment-storage.service.js';
36
35
  import { GitHubRepositoryService } from '../services/external/github-repository.service.js';
37
36
  import { BrowserOpenerService } from '../services/browser-opener.service.js';
@@ -104,12 +103,6 @@ import { RebaseFeatureOnMainUseCase } from '../../application/use-cases/features
104
103
  import { GetBranchSyncStatusUseCase } from '../../application/use-cases/features/get-branch-sync-status.use-case.js';
105
104
  import { ConflictResolutionService } from '../services/agents/conflict-resolution/conflict-resolution.service.js';
106
105
  import { AutoResolveMergedBranchesUseCase } from '../../application/use-cases/features/auto-resolve-merged-branches.use-case.js';
107
- // Deployment use cases
108
- import { StartFeatureDeploymentUseCase } from '../../application/use-cases/deployments/start-feature-deployment.use-case.js';
109
- import { StartRepositoryDeploymentUseCase } from '../../application/use-cases/deployments/start-repository-deployment.use-case.js';
110
- import { StopDeploymentUseCase } from '../../application/use-cases/deployments/stop-deployment.use-case.js';
111
- import { GetDeploymentStatusUseCase } from '../../application/use-cases/deployments/get-deployment-status.use-case.js';
112
- import { ListDeploymentsUseCase } from '../../application/use-cases/deployments/list-deployments.use-case.js';
113
106
  // Interactive session use cases
114
107
  import { StartInteractiveSessionUseCase } from '../../application/use-cases/interactive/start-interactive-session.use-case.js';
115
108
  import { SendInteractiveMessageUseCase } from '../../application/use-cases/interactive/send-interactive-message.use-case.js';
@@ -219,7 +212,6 @@ export async function initializeContainer() {
219
212
  deploymentService.setDatabase(db);
220
213
  deploymentService.recoverAll();
221
214
  container.registerInstance('IDeploymentService', deploymentService);
222
- container.registerSingleton('IShepInstanceService', ShepInstanceService);
223
215
  // Register agent infrastructure
224
216
  container.register('IAgentRunRepository', {
225
217
  useFactory: (c) => {
@@ -368,12 +360,6 @@ export async function initializeContainer() {
368
360
  container.registerSingleton(RebaseFeatureOnMainUseCase);
369
361
  container.registerSingleton(GetBranchSyncStatusUseCase);
370
362
  container.registerSingleton(AutoResolveMergedBranchesUseCase);
371
- // Deployment use cases
372
- container.registerSingleton(StartFeatureDeploymentUseCase);
373
- container.registerSingleton(StartRepositoryDeploymentUseCase);
374
- container.registerSingleton(StopDeploymentUseCase);
375
- container.registerSingleton(GetDeploymentStatusUseCase);
376
- container.registerSingleton(ListDeploymentsUseCase);
377
363
  // Session repositories (per-AgentType string tokens)
378
364
  container.register(`IAgentSessionRepository:${AgentType.ClaudeCode}`, {
379
365
  useFactory: () => new ClaudeCodeSessionRepository(),
@@ -503,21 +489,6 @@ export async function initializeContainer() {
503
489
  container.register('UnarchiveFeatureUseCase', {
504
490
  useFactory: (c) => c.resolve(UnarchiveFeatureUseCase),
505
491
  });
506
- container.register('StartFeatureDeploymentUseCase', {
507
- useFactory: (c) => c.resolve(StartFeatureDeploymentUseCase),
508
- });
509
- container.register('StartRepositoryDeploymentUseCase', {
510
- useFactory: (c) => c.resolve(StartRepositoryDeploymentUseCase),
511
- });
512
- container.register('StopDeploymentUseCase', {
513
- useFactory: (c) => c.resolve(StopDeploymentUseCase),
514
- });
515
- container.register('GetDeploymentStatusUseCase', {
516
- useFactory: (c) => c.resolve(GetDeploymentStatusUseCase),
517
- });
518
- container.register('ListDeploymentsUseCase', {
519
- useFactory: (c) => c.resolve(ListDeploymentsUseCase),
520
- });
521
492
  container.register('UpgradeCliUseCase', {
522
493
  useFactory: (c) => c.resolve(UpgradeCliUseCase),
523
494
  });
@@ -11,7 +11,7 @@
11
11
  */
12
12
  import { spawn } from 'node:child_process';
13
13
  import type Database from 'better-sqlite3';
14
- import type { IDeploymentService, DeploymentStatus, DeploymentStatusEntry, LogEntry } from '../../../application/ports/output/services/deployment-service.interface.js';
14
+ import type { IDeploymentService, DeploymentStatus, LogEntry } from '../../../application/ports/output/services/deployment-service.interface.js';
15
15
  import { detectDevScript } from './detect-dev-script.js';
16
16
  export interface DeploymentServiceDeps {
17
17
  spawn: typeof spawn;
@@ -54,13 +54,6 @@ export declare class DeploymentService implements IDeploymentService {
54
54
  * Validates PID liveness — cleans up if dead.
55
55
  */
56
56
  getStatus(targetId: string): DeploymentStatus | null;
57
- /**
58
- * List all tracked deployments with live processes.
59
- *
60
- * Merges in-memory entries with any DB rows not yet re-adopted. Any
61
- * dead processes encountered are cleaned up (both in-memory and DB).
62
- */
63
- listAll(): DeploymentStatusEntry[];
64
57
  /**
65
58
  * Stop a deployment gracefully: SIGTERM → poll → SIGKILL.
66
59
  */
@@ -85,7 +78,6 @@ export declare class DeploymentService implements IDeploymentService {
85
78
  private dbUpdateState;
86
79
  private dbDelete;
87
80
  private dbFind;
88
- private dbFindAll;
89
81
  private killProcess;
90
82
  /**
91
83
  * Attach a line-buffered listener on stdout or stderr that calls parsePort
@@ -1 +1 @@
1
- {"version":3,"file":"deployment.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/deployment/deployment.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,KAAK,EAAmC,MAAM,oBAAoB,CAAC;AAK5E,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAK3C,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,QAAQ,EACT,MAAM,qEAAqE,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAiCzD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;IAC7D,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;CACnC;AA0CD,qBAAa,iBAAkB,YAAW,kBAAkB;IAC1D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsC;IAClE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwB;IAC7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,EAAE,CAAkC;gBAEhC,IAAI,GAAE,OAAO,CAAC,qBAAqB,CAAM;IAIrD;;OAEG;IACH,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI;IAIxC;;;;;;;;;;;;OAYG;IACH,UAAU,IAAI,IAAI;IAqFlB;;;OAGG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,SAAe,GAAG,IAAI;IA8H5E;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IA4CpD;;;;;OAKG;IACH,OAAO,IAAI,qBAAqB,EAAE;IAqDlC;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0D3C;;OAEG;IACH,OAAO,IAAI,IAAI;IAef;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,GAAG,IAAI;IAM5C;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI;IAI1D;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI;IAM3D,OAAO,CAAC,QAAQ;IAuBhB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,MAAM;IAad,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,WAAW;IAQnB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;YA4Dd,aAAa;IAW3B,OAAO,CAAC,WAAW;IAUnB;;;;OAIG;YACW,kBAAkB;IAsChC;;;OAGG;IACH,OAAO,CAAC,SAAS;CAwBlB"}
1
+ {"version":3,"file":"deployment.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/deployment/deployment.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,KAAK,EAAmC,MAAM,oBAAoB,CAAC;AAK5E,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAK3C,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,QAAQ,EACT,MAAM,qEAAqE,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAiCzD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;IAC7D,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;CACnC;AA0CD,qBAAa,iBAAkB,YAAW,kBAAkB;IAC1D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsC;IAClE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwB;IAC7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,EAAE,CAAkC;gBAEhC,IAAI,GAAE,OAAO,CAAC,qBAAqB,CAAM;IAIrD;;OAEG;IACH,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI;IAIxC;;;;;;;;;;;;OAYG;IACH,UAAU,IAAI,IAAI;IAqFlB;;;OAGG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,SAAe,GAAG,IAAI;IA8H5E;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IA4CpD;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0D3C;;OAEG;IACH,OAAO,IAAI,IAAI;IAef;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,GAAG,IAAI;IAM5C;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI;IAI1D;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI;IAM3D,OAAO,CAAC,QAAQ;IAuBhB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,MAAM;IAed,OAAO,CAAC,WAAW;IAQnB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;YA4Dd,aAAa;IAW3B,OAAO,CAAC,WAAW;IAUnB;;;;OAIG;YACW,kBAAkB;IAsChC;;;OAGG;IACH,OAAO,CAAC,SAAS;CAwBlB"}
@@ -322,62 +322,6 @@ export class DeploymentService {
322
322
  log.debug(`getStatus("${targetId}") — no deployment found`);
323
323
  return null;
324
324
  }
325
- /**
326
- * List all tracked deployments with live processes.
327
- *
328
- * Merges in-memory entries with any DB rows not yet re-adopted. Any
329
- * dead processes encountered are cleaned up (both in-memory and DB).
330
- */
331
- listAll() {
332
- const entries = [];
333
- const seen = new Set();
334
- // 1) In-memory entries (validated for liveness)
335
- for (const [targetId, entry] of this.deployments) {
336
- if (!this.deps.isAlive(entry.pid)) {
337
- log.info(`listAll — pid=${entry.pid} for "${targetId}" is dead, cleaning up`);
338
- this.deployments.delete(targetId);
339
- this.dbDelete(targetId);
340
- continue;
341
- }
342
- seen.add(targetId);
343
- entries.push({
344
- targetId,
345
- targetType: entry.targetType,
346
- state: entry.state,
347
- url: entry.url,
348
- });
349
- }
350
- // 2) DB rows not yet in memory — re-adopt live ones, drop dead
351
- const rows = this.dbFindAll();
352
- for (const row of rows) {
353
- if (seen.has(row.target_id))
354
- continue;
355
- if (!this.deps.isAlive(row.pid)) {
356
- this.dbDelete(row.target_id);
357
- continue;
358
- }
359
- const recovered = {
360
- pid: row.pid,
361
- child: null,
362
- state: row.state,
363
- url: row.url,
364
- targetId: row.target_id,
365
- targetPath: row.target_path,
366
- targetType: row.target_type,
367
- stdoutBuffer: '',
368
- stderrBuffer: '',
369
- logs: new LogRingBuffer(),
370
- };
371
- this.deployments.set(row.target_id, recovered);
372
- entries.push({
373
- targetId: row.target_id,
374
- targetType: row.target_type,
375
- state: recovered.state,
376
- url: recovered.url,
377
- });
378
- }
379
- return entries;
380
- }
381
325
  /**
382
326
  * Stop a deployment gracefully: SIGTERM → poll → SIGKILL.
383
327
  */
@@ -519,16 +463,6 @@ export class DeploymentService {
519
463
  return null;
520
464
  }
521
465
  }
522
- dbFindAll() {
523
- if (!this.db)
524
- return [];
525
- try {
526
- return this.db.prepare('SELECT * FROM dev_servers').all();
527
- }
528
- catch {
529
- return [];
530
- }
531
- }
532
466
  // ─── Process helpers ────────────────────────────────────────────────
533
467
  killProcess(entry) {
534
468
  try {
@@ -6,6 +6,5 @@
6
6
  import type { IFileSystemService } from '../../application/ports/output/services/file-system-service.interface.js';
7
7
  export declare class FileSystemService implements IFileSystemService {
8
8
  removeDirectory(dirPath: string): Promise<void>;
9
- pathExists(path: string): boolean;
10
9
  }
11
10
  //# sourceMappingURL=file-system.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-system.service.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/services/file-system.service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0EAA0E,CAAC;AAEnH,qBACa,iBAAkB,YAAW,kBAAkB;IACpD,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAGlC"}
1
+ {"version":3,"file":"file-system.service.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/services/file-system.service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0EAA0E,CAAC;AAEnH,qBACa,iBAAkB,YAAW,kBAAkB;IACpD,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGtD"}
@@ -9,16 +9,12 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
9
9
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
10
10
  return c > 3 && r && Object.defineProperty(target, key, r), r;
11
11
  };
12
- import { existsSync } from 'node:fs';
13
12
  import { rm } from 'node:fs/promises';
14
13
  import { injectable } from 'tsyringe';
15
14
  let FileSystemService = class FileSystemService {
16
15
  async removeDirectory(dirPath) {
17
16
  await rm(dirPath, { recursive: true, force: true });
18
17
  }
19
- pathExists(path) {
20
- return existsSync(path);
21
- }
22
18
  };
23
19
  FileSystemService = __decorate([
24
20
  injectable()
@@ -6,7 +6,7 @@
6
6
  * PR creation paths (agent-driven, fork-and-PR, etc.).
7
7
  */
8
8
  /** The branding line to append to PR bodies. */
9
- export declare const PR_BRANDING = "Built with Shep \uD83D\uDC11 [Shep Bot](https://github.com/shep-ai/shep)";
9
+ export declare const PR_BRANDING = "[\uD83D\uDC11](https://github.com/shep-ai/shep) Built with [Shep.bot](https://shep.bot)";
10
10
  /**
11
11
  * Ensure a PR body carries the correct Shep branding.
12
12
  *
@@ -1 +1 @@
1
- {"version":3,"file":"pr-branding.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/git/pr-branding.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,gDAAgD;AAChD,eAAO,MAAM,WAAW,6EACoD,CAAC;AAS7E;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAapD"}
1
+ {"version":3,"file":"pr-branding.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/git/pr-branding.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,gDAAgD;AAChD,eAAO,MAAM,WAAW,4FACyD,CAAC;AASlF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAapD"}
@@ -6,7 +6,7 @@
6
6
  * PR creation paths (agent-driven, fork-and-PR, etc.).
7
7
  */
8
8
  /** The branding line to append to PR bodies. */
9
- export const PR_BRANDING = 'Built with Shep \uD83D\uDC11 [Shep Bot](https://github.com/shep-ai/shep)';
9
+ export const PR_BRANDING = '[🐑](https://github.com/shep-ai/shep) Built with [Shep.bot](https://shep.bot)';
10
10
  /**
11
11
  * Pattern matching common AI-tool attribution footers that should be
12
12
  * replaced (e.g. "Generated with Claude Code", "Co-Authored-By: Claude").
@@ -1,4 +1,3 @@
1
- import type { DeploymentStatusEntry } from '../../../../../packages/core/src/application/ports/output/services/deployment-service.interface.js';
2
1
  import type { CanvasNodeType } from '../../components/features/features-canvas/index.js';
3
2
  import type { Edge } from '@xyflow/react';
4
3
  export interface RepoGitInfo {
@@ -18,6 +17,5 @@ export type GitInfoResult = {
18
17
  export declare function getGraphData(): Promise<{
19
18
  nodes: CanvasNodeType[];
20
19
  edges: Edge[];
21
- deployments: DeploymentStatusEntry[];
22
20
  }>;
23
21
  //# sourceMappingURL=get-graph-data.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-graph-data.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/(dashboard)/get-graph-data.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6EAA6E,CAAC;AAOzH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAI1C,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAiFD,MAAM,MAAM,aAAa,GACrB;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GACrB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GACtC;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,CAAC;AA6B7B,wBAAsB,YAAY,IAAI,OAAO,CAAC;IAC5C,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,WAAW,EAAE,qBAAqB,EAAE,CAAC;CACtC,CAAC,CAqED"}
1
+ {"version":3,"file":"get-graph-data.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/(dashboard)/get-graph-data.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAE5E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAI1C,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAiFD,MAAM,MAAM,aAAa,GACrB;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GACrB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GACtC;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,CAAC;AA6B7B,wBAAsB,YAAY,IAAI,OAAO,CAAC;IAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CAAC,CA+ExF"}
@@ -143,18 +143,28 @@ export async function getGraphData() {
143
143
  repoGitInfo: repoGitInfoMap,
144
144
  repoGitStatus: repoGitStatusMap,
145
145
  });
146
- // Load all live deployments via the use case. The client-side
147
- // DeploymentStatusProvider hydrates from this list so node/drawer state
148
- // survives a page refresh and stays in sync across components.
149
- let deployments = [];
146
+ // Enrich feature nodes with deployment status
147
+ let deploymentService = null;
150
148
  try {
151
- const listDeployments = resolve('ListDeploymentsUseCase');
152
- deployments = await listDeployments.execute();
149
+ deploymentService = resolve('IDeploymentService');
153
150
  }
154
151
  catch {
155
- // Use case not registered — leave deployments empty
152
+ // Deployment service may not be registered — skip enrichment
153
+ }
154
+ if (deploymentService) {
155
+ for (const node of nodes) {
156
+ if (node.type !== 'featureNode')
157
+ continue;
158
+ const data = node.data;
159
+ const status = deploymentService.getStatus(data.featureId);
160
+ if (status && status.state !== 'Stopped') {
161
+ data.deployment = {
162
+ status: status.state,
163
+ ...(status.url && { url: status.url }),
164
+ };
165
+ }
166
+ }
156
167
  }
157
168
  const { dir } = getLanguagePreference();
158
- const laidOut = layoutWithDagre(nodes, edges, getCanvasLayoutDefaults(dir));
159
- return { ...laidOut, deployments };
169
+ return layoutWithDagre(nodes, edges, getCanvasLayoutDefaults(dir));
160
170
  }
@@ -1 +1 @@
1
- {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/(dashboard)/layout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,uFAAuF;AACvF,eAAO,MAAM,OAAO,kBAAkB,CAAC;AAEvC,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,SAAS,CAAC;CACnB;AAED,wBAA8B,eAAe,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,oBAAoB,oDAWvF"}
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/(dashboard)/layout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,uFAAuF;AACvF,eAAO,MAAM,OAAO,kBAAkB,CAAC;AAEvC,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,SAAS,CAAC;CACnB;AAED,wBAA8B,eAAe,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,oBAAoB,oDASvF"}
@@ -1,10 +1,9 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { ControlCenter } from '../../components/features/control-center/index.js';
3
- import { DeploymentStatusProvider } from '../../hooks/deployment-status-provider.js';
4
3
  import { getGraphData } from './get-graph-data.js';
5
4
  /** Skip static pre-rendering since we need runtime DI container and server context. */
6
5
  export const dynamic = 'force-dynamic';
7
6
  export default async function DashboardLayout({ children, drawer }) {
8
- const { nodes, edges, deployments } = await getGraphData();
9
- return (_jsx("div", { className: "h-screen w-full", children: _jsxs(DeploymentStatusProvider, { initialDeployments: deployments, children: [_jsx(ControlCenter, { initialNodes: nodes, initialEdges: edges, drawer: drawer }), children] }) }));
7
+ const { nodes, edges } = await getGraphData();
8
+ return (_jsxs("div", { className: "h-screen w-full", children: [_jsx(ControlCenter, { initialNodes: nodes, initialEdges: edges, drawer: drawer }), children] }));
10
9
  }
@@ -1,4 +1,4 @@
1
- import type { DeploymentState } from '../../../../../packages/core/src/domain/generated/output.js';
1
+ import { DeploymentState } from '../../../../../packages/core/src/domain/generated/output.js';
2
2
  export declare function deployFeature(featureId: string): Promise<{
3
3
  success: boolean;
4
4
  error?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"deploy-feature.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/deploy-feature.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAI5E,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,eAAe,CAAA;CAAE,CAAC,CAaxE"}
1
+ {"version":3,"file":"deploy-feature.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/deploy-feature.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAKvE,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,eAAe,CAAA;CAAE,CAAC,CAgDxE"}
@@ -1,14 +1,43 @@
1
1
  'use server';
2
+ import { existsSync } from 'node:fs';
2
3
  import { resolve } from '../../lib/server-container.js';
3
4
  import { createDeploymentLogger } from '../../../../../packages/core/src/infrastructure/services/deployment/deployment-logger.js';
5
+ import { computeWorktreePath } from '../../../../../packages/core/src/infrastructure/services/ide-launchers/compute-worktree-path.js';
6
+ import { DeploymentState } from '../../../../../packages/core/src/domain/generated/output.js';
7
+ import { isSameShepInstance } from '../../lib/is-same-shep-instance.js';
4
8
  const log = createDeploymentLogger('[deployFeature]');
5
9
  export async function deployFeature(featureId) {
6
10
  log.info(`called — featureId="${featureId}"`);
11
+ if (!featureId?.trim()) {
12
+ log.warn('rejected — featureId is empty');
13
+ return { success: false, error: 'featureId is required' };
14
+ }
7
15
  try {
8
- const useCase = resolve('StartFeatureDeploymentUseCase');
9
- const status = await useCase.execute(featureId);
10
- log.info(`start succeeded — state=${status.state}`);
11
- return { success: true, state: status.state };
16
+ const featureRepo = resolve('IFeatureRepository');
17
+ const feature = await featureRepo.findById(featureId);
18
+ if (!feature) {
19
+ log.warn(`feature not found in repository: "${featureId}"`);
20
+ return { success: false, error: `Feature not found: ${featureId}` };
21
+ }
22
+ log.info(`feature found — repositoryPath="${feature.repositoryPath}", branch="${feature.branch}"`);
23
+ const worktreePath = computeWorktreePath(feature.repositoryPath, feature.branch);
24
+ log.info(`computed worktreePath="${worktreePath}"`);
25
+ if (!existsSync(worktreePath)) {
26
+ log.warn(`worktree path does not exist on disk: "${worktreePath}"`);
27
+ return { success: false, error: `Worktree path does not exist: ${worktreePath}` };
28
+ }
29
+ if (isSameShepInstance(feature.repositoryPath)) {
30
+ log.warn('rejected — feature belongs to the running shep instance');
31
+ return {
32
+ success: false,
33
+ error: 'Cannot start a dev server for features of the repository Shep is running from',
34
+ };
35
+ }
36
+ log.info('worktree path exists, calling deploymentService.start()');
37
+ const deploymentService = resolve('IDeploymentService');
38
+ deploymentService.start(featureId, worktreePath, 'feature');
39
+ log.info('start() returned successfully — state=Booting');
40
+ return { success: true, state: DeploymentState.Booting };
12
41
  }
13
42
  catch (error) {
14
43
  const message = error instanceof Error ? error.message : 'Failed to deploy feature';
@@ -1,4 +1,4 @@
1
- import type { DeploymentState } from '../../../../../packages/core/src/domain/generated/output.js';
1
+ import { DeploymentState } from '../../../../../packages/core/src/domain/generated/output.js';
2
2
  export declare function deployRepository(repositoryPath: string): Promise<{
3
3
  success: boolean;
4
4
  error?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"deploy-repository.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/deploy-repository.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAI5E,wBAAsB,gBAAgB,CACpC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,eAAe,CAAA;CAAE,CAAC,CAaxE"}
1
+ {"version":3,"file":"deploy-repository.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/deploy-repository.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAKvE,wBAAsB,gBAAgB,CACpC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,eAAe,CAAA;CAAE,CAAC,CAiCxE"}
@@ -1,14 +1,34 @@
1
1
  'use server';
2
+ import { existsSync } from 'node:fs';
3
+ import { isAbsolute } from 'node:path';
2
4
  import { resolve } from '../../lib/server-container.js';
3
5
  import { createDeploymentLogger } from '../../../../../packages/core/src/infrastructure/services/deployment/deployment-logger.js';
6
+ import { DeploymentState } from '../../../../../packages/core/src/domain/generated/output.js';
7
+ import { isSameShepInstance } from '../../lib/is-same-shep-instance.js';
4
8
  const log = createDeploymentLogger('[deployRepository]');
5
9
  export async function deployRepository(repositoryPath) {
6
10
  log.info(`called — repositoryPath="${repositoryPath}"`);
11
+ if (!repositoryPath || !isAbsolute(repositoryPath)) {
12
+ log.warn('rejected — not an absolute path');
13
+ return { success: false, error: 'repositoryPath must be an absolute path' };
14
+ }
7
15
  try {
8
- const useCase = resolve('StartRepositoryDeploymentUseCase');
9
- const status = await useCase.execute(repositoryPath);
10
- log.info(`start succeeded state=${status.state}`);
11
- return { success: true, state: status.state };
16
+ if (!existsSync(repositoryPath)) {
17
+ log.warn(`directory does not exist: "${repositoryPath}"`);
18
+ return { success: false, error: `Directory does not exist: ${repositoryPath}` };
19
+ }
20
+ if (isSameShepInstance(repositoryPath)) {
21
+ log.warn('rejected — target is the running shep instance');
22
+ return {
23
+ success: false,
24
+ error: 'Cannot start a dev server for the repository Shep is running from',
25
+ };
26
+ }
27
+ log.info('directory exists, calling deploymentService.start()');
28
+ const deploymentService = resolve('IDeploymentService');
29
+ deploymentService.start(repositoryPath, repositoryPath, 'repository');
30
+ log.info('start() returned successfully — state=Booting');
31
+ return { success: true, state: DeploymentState.Booting };
12
32
  }
13
33
  catch (error) {
14
34
  const message = error instanceof Error ? error.message : 'Failed to deploy repository';
@@ -1 +1 @@
1
- {"version":3,"file":"get-deployment-status.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/get-deployment-status.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6EAA6E,CAAC;AAEpH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAG5F"}
1
+ {"version":3,"file":"get-deployment-status.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/get-deployment-status.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,6EAA6E,CAAC;AAErF,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAO5F"}
@@ -1,6 +1,9 @@
1
1
  'use server';
2
2
  import { resolve } from '../../lib/server-container.js';
3
3
  export async function getDeploymentStatus(targetId) {
4
- const useCase = resolve('GetDeploymentStatusUseCase');
5
- return useCase.execute(targetId);
4
+ if (!targetId?.trim()) {
5
+ return null;
6
+ }
7
+ const deploymentService = resolve('IDeploymentService');
8
+ return deploymentService.getStatus(targetId);
6
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stop-deployment.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/stop-deployment.ts"],"names":[],"mappings":"AAKA,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAS/C"}
1
+ {"version":3,"file":"stop-deployment.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/stop-deployment.ts"],"names":[],"mappings":"AAKA,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAc/C"}
@@ -1,9 +1,12 @@
1
1
  'use server';
2
2
  import { resolve } from '../../lib/server-container.js';
3
3
  export async function stopDeployment(targetId) {
4
+ if (!targetId?.trim()) {
5
+ return { success: false, error: 'targetId is required' };
6
+ }
4
7
  try {
5
- const useCase = resolve('StopDeploymentUseCase');
6
- await useCase.execute(targetId);
8
+ const deploymentService = resolve('IDeploymentService');
9
+ await deploymentService.stop(targetId);
7
10
  return { success: true };
8
11
  }
9
12
  catch (error) {
@@ -10,6 +10,5 @@ export declare const dynamic = "force-dynamic";
10
10
  export declare function GET(): Promise<NextResponse<{
11
11
  nodes: import("../../../components/features/features-canvas/index.js").CanvasNodeType[];
12
12
  edges: import("@xyflow/react").Edge[];
13
- deployments: import("../../../../../../packages/core/src/application/ports/output/services/deployment-service.interface.js").DeploymentStatusEntry[];
14
13
  }>>;
15
14
  //# sourceMappingURL=route.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/app/api/graph-data/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,6EAA6E;AAC7E,eAAO,MAAM,OAAO,kBAAkB,CAAC;AAEvC;;;;;GAKG;AACH,wBAAsB,GAAG;;;;IAGxB"}
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/app/api/graph-data/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,6EAA6E;AAC7E,eAAO,MAAM,OAAO,kBAAkB,CAAC;AAEvC;;;;;GAKG;AACH,wBAAsB,GAAG;;;IAGxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-control-center-state.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/control-center/use-control-center-state.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,yBAAyB,CAAC;AAmBjC,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAM7E,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,aAAa,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,cAAc,CAAC,EAAE,KAAK,IAAI,CAAC;IAC/D,aAAa,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IAChD,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QACrC,QAAQ,EAAE,OAAO,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,YAAY,EAAE,CAAC,SAAS,EAAE,eAAe,KAAK,IAAI,CAAC;IACnD,oBAAoB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,mBAAmB,EAAE,CACnB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,OAAO,EACjB,aAAa,CAAC,EAAE,OAAO,EACvB,OAAO,CAAC,EAAE,OAAO,KACd,IAAI,CAAC;IACV,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,sBAAsB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,sBAAsB,EAAE,CACtB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,KACnC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,iBAAiB,EAAE,CACjB,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,YAAY,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,EACvC,QAAQ,CAAC,EAAE,MAAM,KACd,MAAM,CAAC;IACZ,yDAAyD;IACzD,YAAY,EAAE,OAAO,CAAC;IACtB,0CAA0C;IAC1C,eAAe,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,wDAAwD;IACxD,wBAAwB,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACxE,gDAAgD;IAChD,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,kBAAkB,GAAG,SAAS,CAAC;IACtE,0EAA0E;IAC1E,YAAY,EAAE,CAAC,SAAS,EAAE,cAAc,KAAK,IAAI,CAAC;CACnD;AAQD,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,cAAc,EAAE,EAC9B,YAAY,EAAE,IAAI,EAAE,GACnB,kBAAkB,CA2lBpB"}
1
+ {"version":3,"file":"use-control-center-state.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/control-center/use-control-center-state.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,yBAAyB,CAAC;AAkBjC,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAM7E,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,aAAa,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,cAAc,CAAC,EAAE,KAAK,IAAI,CAAC;IAC/D,aAAa,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IAChD,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QACrC,QAAQ,EAAE,OAAO,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,YAAY,EAAE,CAAC,SAAS,EAAE,eAAe,KAAK,IAAI,CAAC;IACnD,oBAAoB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,mBAAmB,EAAE,CACnB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,OAAO,EACjB,aAAa,CAAC,EAAE,OAAO,EACvB,OAAO,CAAC,EAAE,OAAO,KACd,IAAI,CAAC;IACV,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,sBAAsB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,sBAAsB,EAAE,CACtB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,KACnC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,iBAAiB,EAAE,CACjB,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,YAAY,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,EACvC,QAAQ,CAAC,EAAE,MAAM,KACd,MAAM,CAAC;IACZ,yDAAyD;IACzD,YAAY,EAAE,OAAO,CAAC;IACtB,0CAA0C;IAC1C,eAAe,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,wDAAwD;IACxD,wBAAwB,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACxE,gDAAgD;IAChD,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,kBAAkB,GAAG,SAAS,CAAC;IACtE,0EAA0E;IAC1E,YAAY,EAAE,CAAC,SAAS,EAAE,cAAc,KAAK,IAAI,CAAC;CACnD;AAQD,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,cAAc,EAAE,EAC9B,YAAY,EAAE,IAAI,EAAE,GACnB,kBAAkB,CAmlBpB"}
@@ -13,7 +13,6 @@ import { addRepository } from '../../../app/actions/add-repository.js';
13
13
  import { deleteRepository } from '../../../app/actions/delete-repository.js';
14
14
  import { getFeatureMetadata } from '../../../app/actions/get-feature-metadata.js';
15
15
  import { useAgentEventsContext } from '../../../hooks/agent-events-provider.js';
16
- import { useDeploymentStatusContext } from '../../../hooks/deployment-status-provider.js';
17
16
  import { useSoundAction } from '../../../hooks/use-sound-action.js';
18
17
  import { createLogger } from '../../../lib/logger.js';
19
18
  import { mapEventTypeToState, resolveSseEventUpdates, } from '../../common/feature-node/derive-feature-state.js';
@@ -63,7 +62,6 @@ export function useControlCenterState(initialNodes, initialEdges) {
63
62
  // Track previous feature states for fallback notifications
64
63
  const prevFeatureStatesRef = useRef(new Map());
65
64
  const { events } = useAgentEventsContext();
66
- const { store: deploymentStore } = useDeploymentStatusContext();
67
65
  useEffect(() => {
68
66
  const prevStates = prevFeatureStatesRef.current;
69
67
  for (const node of initialNodes) {
@@ -190,11 +188,8 @@ export function useControlCenterState(initialNodes, initialEdges) {
190
188
  const res = await fetch('/api/graph-data');
191
189
  if (!res.ok)
192
190
  throw new Error(`status ${res.status}`);
193
- const { nodes: freshNodes, edges: freshEdges, deployments: freshDeployments, } = await res.json();
191
+ const { nodes: freshNodes, edges: freshEdges } = await res.json();
194
192
  reconcile(freshNodes, freshEdges);
195
- if (Array.isArray(freshDeployments)) {
196
- deploymentStore.hydrate(freshDeployments);
197
- }
198
193
  }
199
194
  catch {
200
195
  log.warn('poll fetch failed — will retry next interval');
@@ -204,7 +199,7 @@ export function useControlCenterState(initialNodes, initialEdges) {
204
199
  log.debug('polling disabled');
205
200
  clearInterval(timer);
206
201
  };
207
- }, [reconcile, isMutating, deploymentStore]);
202
+ }, [reconcile, isMutating]);
208
203
  // onNodesChange is a no-op: nodes are derived from domain Maps.
209
204
  // Since nodesDraggable=false and elementsSelectable=false, only React Flow's
210
205
  // internal replace/dimensions changes come through — we ignore them all.