@shepai/cli 1.129.3-pr396.d3c115b → 1.129.3-pr412.1505aaa

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 (379) hide show
  1. package/apis/json-schema/FeatureFlags.yaml +3 -3
  2. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts +5 -73
  3. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts.map +1 -1
  4. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.js +4 -6
  5. package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +1 -1
  6. package/dist/packages/core/src/domain/generated/output.d.ts +2 -2
  7. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  8. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  9. package/dist/packages/core/src/infrastructure/di/container.js +0 -15
  10. package/dist/packages/core/src/infrastructure/persistence/sqlite/legacy-migrations.d.ts +2 -2
  11. package/dist/packages/core/src/infrastructure/persistence/sqlite/legacy-migrations.d.ts.map +1 -1
  12. package/dist/packages/core/src/infrastructure/persistence/sqlite/legacy-migrations.js +13 -2
  13. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +1 -1
  14. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
  15. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +2 -2
  16. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.d.ts +3 -3
  17. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.js +4 -4
  18. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
  19. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +5 -3
  20. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts +0 -6
  21. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts.map +1 -1
  22. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.js +0 -134
  23. package/dist/src/presentation/web/app/api/directory/list/route.d.ts +3 -0
  24. package/dist/src/presentation/web/app/api/directory/list/route.d.ts.map +1 -0
  25. package/dist/src/presentation/web/app/api/directory/list/route.js +76 -0
  26. package/dist/src/presentation/web/components/common/add-repository-button/add-repository-button.d.ts.map +1 -1
  27. package/dist/src/presentation/web/components/common/add-repository-button/add-repository-button.js +23 -2
  28. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.d.ts.map +1 -1
  29. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.js +1 -2
  30. package/dist/src/presentation/web/components/common/control-center-drawer/repository-drawer-client.d.ts.map +1 -1
  31. package/dist/src/presentation/web/components/common/control-center-drawer/repository-drawer-client.js +4 -4
  32. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
  33. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +50 -19
  34. package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.d.ts +0 -4
  35. package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.d.ts.map +1 -1
  36. package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.js +1 -32
  37. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts +1 -4
  38. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts.map +1 -1
  39. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.js +2 -2
  40. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.d.ts +1 -4
  41. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.d.ts.map +1 -1
  42. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.js +3 -8
  43. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.d.ts +0 -6
  44. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.d.ts.map +1 -1
  45. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.js +0 -30
  46. package/dist/src/presentation/web/components/common/index.d.ts +1 -0
  47. package/dist/src/presentation/web/components/common/index.d.ts.map +1 -1
  48. package/dist/src/presentation/web/components/common/index.js +1 -0
  49. package/dist/src/presentation/web/components/common/open-action-menu/open-action-menu.stories.d.ts.map +1 -1
  50. package/dist/src/presentation/web/components/common/open-action-menu/open-action-menu.stories.js +0 -3
  51. package/dist/src/presentation/web/components/common/react-file-manager-dialog/index.d.ts +3 -0
  52. package/dist/src/presentation/web/components/common/react-file-manager-dialog/index.d.ts.map +1 -0
  53. package/dist/src/presentation/web/components/common/react-file-manager-dialog/index.js +1 -0
  54. package/dist/src/presentation/web/components/common/react-file-manager-dialog/react-file-manager-dialog-config.d.ts +17 -0
  55. package/dist/src/presentation/web/components/common/react-file-manager-dialog/react-file-manager-dialog-config.d.ts.map +1 -0
  56. package/dist/src/presentation/web/components/common/react-file-manager-dialog/react-file-manager-dialog-config.js +1 -0
  57. package/dist/src/presentation/web/components/common/react-file-manager-dialog/react-file-manager-dialog.d.ts +3 -0
  58. package/dist/src/presentation/web/components/common/react-file-manager-dialog/react-file-manager-dialog.d.ts.map +1 -0
  59. package/dist/src/presentation/web/components/common/react-file-manager-dialog/react-file-manager-dialog.js +106 -0
  60. package/dist/src/presentation/web/components/common/react-file-manager-dialog/react-file-manager-dialog.stories.d.ts +9 -0
  61. package/dist/src/presentation/web/components/common/react-file-manager-dialog/react-file-manager-dialog.stories.d.ts.map +1 -0
  62. package/dist/src/presentation/web/components/common/react-file-manager-dialog/react-file-manager-dialog.stories.js +27 -0
  63. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.d.ts.map +1 -1
  64. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.js +3 -5
  65. package/dist/src/presentation/web/components/common/repository-node/repository-node.js +1 -1
  66. package/dist/src/presentation/web/components/common/repository-node/use-repository-actions.d.ts +0 -4
  67. package/dist/src/presentation/web/components/common/repository-node/use-repository-actions.d.ts.map +1 -1
  68. package/dist/src/presentation/web/components/common/repository-node/use-repository-actions.js +0 -11
  69. package/dist/src/presentation/web/components/features/control-center/control-center-empty-state.d.ts.map +1 -1
  70. package/dist/src/presentation/web/components/features/control-center/control-center-empty-state.js +22 -1
  71. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.d.ts.map +1 -1
  72. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.js +3 -3
  73. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.js +3 -3
  74. package/dist/src/presentation/web/components/features/settings/settings-page-client.js +3 -3
  75. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.js +1 -1
  76. package/dist/src/presentation/web/components/layouts/app-shell/app-shell.d.ts.map +1 -1
  77. package/dist/src/presentation/web/components/layouts/app-shell/app-shell.js +21 -2
  78. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.js +1 -1
  79. package/dist/src/presentation/web/hooks/feature-flags-context.js +1 -1
  80. package/dist/src/presentation/web/lib/feature-flags.d.ts +2 -2
  81. package/dist/src/presentation/web/lib/feature-flags.d.ts.map +1 -1
  82. package/dist/src/presentation/web/lib/feature-flags.js +4 -4
  83. package/dist/tsconfig.build.tsbuildinfo +1 -1
  84. package/package.json +2 -1
  85. package/web/.next/BUILD_ID +1 -1
  86. package/web/.next/app-path-routes-manifest.json +1 -0
  87. package/web/.next/build-manifest.json +6 -6
  88. package/web/.next/fallback-build-manifest.json +2 -2
  89. package/web/.next/prerender-manifest.json +3 -3
  90. package/web/.next/required-server-files.js +1 -1
  91. package/web/.next/required-server-files.json +1 -1
  92. package/web/.next/routes-manifest.json +6 -0
  93. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/build-manifest.json +4 -4
  94. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/react-loadable-manifest.json +8 -1
  95. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +48 -63
  96. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +3 -3
  97. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  98. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  99. package/web/.next/server/app/(dashboard)/@drawer/create/page/build-manifest.json +4 -4
  100. package/web/.next/server/app/(dashboard)/@drawer/create/page/react-loadable-manifest.json +8 -1
  101. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +48 -63
  102. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +3 -3
  103. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  104. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  105. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/build-manifest.json +4 -4
  106. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/react-loadable-manifest.json +8 -1
  107. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +60 -90
  108. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +3 -3
  109. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  110. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  111. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/build-manifest.json +4 -4
  112. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/react-loadable-manifest.json +8 -1
  113. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +60 -90
  114. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +3 -3
  115. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  116. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  117. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/build-manifest.json +4 -4
  118. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/react-loadable-manifest.json +8 -1
  119. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +44 -59
  120. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +3 -3
  121. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  122. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  123. package/web/.next/server/app/(dashboard)/create/page/build-manifest.json +4 -4
  124. package/web/.next/server/app/(dashboard)/create/page/react-loadable-manifest.json +8 -1
  125. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +48 -63
  126. package/web/.next/server/app/(dashboard)/create/page.js +3 -3
  127. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  128. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  129. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/build-manifest.json +4 -4
  130. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/react-loadable-manifest.json +8 -1
  131. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +60 -90
  132. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +3 -3
  133. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  134. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  135. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/build-manifest.json +4 -4
  136. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/react-loadable-manifest.json +8 -1
  137. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +60 -90
  138. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +3 -3
  139. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  140. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  141. package/web/.next/server/app/(dashboard)/page/build-manifest.json +4 -4
  142. package/web/.next/server/app/(dashboard)/page/react-loadable-manifest.json +8 -1
  143. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +44 -59
  144. package/web/.next/server/app/(dashboard)/page.js +3 -3
  145. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  146. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  147. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/build-manifest.json +4 -4
  148. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/react-loadable-manifest.json +8 -1
  149. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +44 -59
  150. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +3 -3
  151. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  152. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  153. package/web/.next/server/app/_global-error/page/build-manifest.json +4 -4
  154. package/web/.next/server/app/_global-error.html +2 -2
  155. package/web/.next/server/app/_global-error.rsc +1 -1
  156. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  157. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  158. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  159. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  160. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  161. package/web/.next/server/app/_not-found/page/build-manifest.json +4 -4
  162. package/web/.next/server/app/_not-found/page/react-loadable-manifest.json +8 -1
  163. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +3 -3
  164. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  165. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  166. package/web/.next/server/app/api/attachments/preview/route.js +1 -1
  167. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  168. package/web/.next/server/app/api/directory/list/route/app-paths-manifest.json +3 -0
  169. package/web/.next/server/app/api/directory/list/route/build-manifest.json +11 -0
  170. package/web/.next/server/app/api/directory/list/route/server-reference-manifest.json +4 -0
  171. package/web/.next/server/app/api/directory/list/route.js +7 -0
  172. package/web/.next/server/app/api/directory/list/route.js.map +5 -0
  173. package/web/.next/server/app/api/directory/list/route.js.nft.json +1 -0
  174. package/web/.next/server/app/api/directory/list/route_client-reference-manifest.js +2 -0
  175. package/web/.next/server/app/api/evidence/route.js +1 -1
  176. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  177. package/web/.next/server/app/api/feature-logs/route.js +1 -1
  178. package/web/.next/server/app/api/feature-logs/route.js.nft.json +1 -1
  179. package/web/.next/server/app/api/graph-data/route.js +1 -1
  180. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  181. package/web/.next/server/app/settings/page/build-manifest.json +4 -4
  182. package/web/.next/server/app/settings/page/react-loadable-manifest.json +8 -1
  183. package/web/.next/server/app/settings/page/server-reference-manifest.json +8 -8
  184. package/web/.next/server/app/settings/page.js +1 -1
  185. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  186. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  187. package/web/.next/server/app/skills/page/build-manifest.json +4 -4
  188. package/web/.next/server/app/skills/page/react-loadable-manifest.json +8 -1
  189. package/web/.next/server/app/skills/page/server-reference-manifest.json +8 -8
  190. package/web/.next/server/app/skills/page.js +1 -1
  191. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  192. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  193. package/web/.next/server/app/tools/page/build-manifest.json +4 -4
  194. package/web/.next/server/app/tools/page/react-loadable-manifest.json +8 -1
  195. package/web/.next/server/app/tools/page/server-reference-manifest.json +8 -8
  196. package/web/.next/server/app/tools/page.js +1 -1
  197. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  198. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  199. package/web/.next/server/app/version/page/build-manifest.json +4 -4
  200. package/web/.next/server/app/version/page/react-loadable-manifest.json +8 -1
  201. package/web/.next/server/app/version/page/server-reference-manifest.json +3 -3
  202. package/web/.next/server/app/version/page.js.nft.json +1 -1
  203. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  204. package/web/.next/server/app-paths-manifest.json +1 -0
  205. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_directory_list_route_actions_9e35153e.js +3 -0
  206. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_directory_list_route_actions_9e35153e.js.map +1 -0
  207. package/web/.next/server/chunks/{[root-of-the-server]__53013576._.js → [root-of-the-server]__25f23d5d._.js} +2 -2
  208. package/web/.next/server/chunks/{[root-of-the-server]__92078db6._.js → [root-of-the-server]__26565141._.js} +2 -2
  209. package/web/.next/server/chunks/{[root-of-the-server]__d8037e14._.js → [root-of-the-server]__2b1074db._.js} +2 -2
  210. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  211. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
  212. package/web/.next/server/chunks/{[root-of-the-server]__bc532286._.js → [root-of-the-server]__d1dc8fcd._.js} +2 -2
  213. package/web/.next/server/chunks/[root-of-the-server]__d1dc8fcd._.js.map +1 -0
  214. package/web/.next/server/chunks/[root-of-the-server]__fc6fd958._.js +3 -0
  215. package/web/.next/server/chunks/[root-of-the-server]__fc6fd958._.js.map +1 -0
  216. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4e741df2.js +3 -0
  217. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4e741df2.js.map +1 -0
  218. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  219. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  220. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_026fdffa.js +3 -0
  221. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_026fdffa.js.map +1 -0
  222. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_8b91e197.js +3 -0
  223. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_8b91e197.js.map +1 -0
  224. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  225. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js +1 -1
  226. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js.map +1 -1
  227. package/web/.next/server/chunks/ssr/{[root-of-the-server]__60684242._.js → [root-of-the-server]__5142820f._.js} +3 -3
  228. package/web/.next/server/chunks/ssr/[root-of-the-server]__5142820f._.js.map +1 -0
  229. package/web/.next/server/chunks/ssr/{[root-of-the-server]__a21eef5a._.js → [root-of-the-server]__57018345._.js} +2 -2
  230. package/web/.next/server/chunks/ssr/[root-of-the-server]__57018345._.js.map +1 -0
  231. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js +2 -2
  232. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js.map +1 -1
  233. package/web/.next/server/chunks/ssr/[root-of-the-server]__755cfe02._.js +3 -0
  234. package/web/.next/server/chunks/ssr/[root-of-the-server]__755cfe02._.js.map +1 -0
  235. package/web/.next/server/chunks/ssr/[root-of-the-server]__7894f27f._.js +3 -0
  236. package/web/.next/server/chunks/ssr/[root-of-the-server]__7894f27f._.js.map +1 -0
  237. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js +1 -1
  238. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js.map +1 -1
  239. package/web/.next/server/chunks/ssr/{[root-of-the-server]__62cdea24._.js → [root-of-the-server]__84f72684._.js} +3 -3
  240. package/web/.next/server/chunks/ssr/[root-of-the-server]__99ab2519._.js +4 -0
  241. package/web/.next/server/chunks/ssr/[root-of-the-server]__99ab2519._.js.map +1 -0
  242. package/web/.next/server/chunks/ssr/[root-of-the-server]__a628fb91._.js +3 -0
  243. package/web/.next/server/chunks/ssr/[root-of-the-server]__a628fb91._.js.map +1 -0
  244. package/web/.next/server/chunks/ssr/[root-of-the-server]__bfba58e6._.js +3 -0
  245. package/web/.next/server/chunks/ssr/[root-of-the-server]__bfba58e6._.js.map +1 -0
  246. package/web/.next/server/chunks/ssr/[root-of-the-server]__c3ab8422._.js +3 -0
  247. package/web/.next/server/chunks/ssr/[root-of-the-server]__c3ab8422._.js.map +1 -0
  248. package/web/.next/server/chunks/ssr/_0020fddd._.js +1 -1
  249. package/web/.next/server/chunks/ssr/_0020fddd._.js.map +1 -1
  250. package/web/.next/server/chunks/ssr/_02ec1aea._.js +1 -1
  251. package/web/.next/server/chunks/ssr/_02ec1aea._.js.map +1 -1
  252. package/web/.next/server/chunks/ssr/_1b7dae9a._.js +3 -0
  253. package/web/.next/server/chunks/ssr/_1b7dae9a._.js.map +1 -0
  254. package/web/.next/server/chunks/ssr/{_92898a8a._.js → _3dee1063._.js} +2 -2
  255. package/web/.next/server/chunks/ssr/{_92898a8a._.js.map → _3dee1063._.js.map} +1 -1
  256. package/web/.next/server/chunks/ssr/_7dca1882._.js +1 -1
  257. package/web/.next/server/chunks/ssr/_7dca1882._.js.map +1 -1
  258. package/web/.next/server/chunks/ssr/{_e15dd74c._.js → _8969c82c._.js} +2 -2
  259. package/web/.next/server/chunks/ssr/_8969c82c._.js.map +1 -0
  260. package/web/.next/server/chunks/ssr/_a37f5f18._.js +1 -1
  261. package/web/.next/server/chunks/ssr/_a37f5f18._.js.map +1 -1
  262. package/web/.next/server/chunks/ssr/_a9f57758._.js +1 -1
  263. package/web/.next/server/chunks/ssr/_d4b20e29._.js.map +1 -1
  264. package/web/.next/server/chunks/ssr/_d8575088._.js +1 -1
  265. package/web/.next/server/chunks/ssr/_d8575088._.js.map +1 -1
  266. package/web/.next/server/chunks/ssr/_f39a1adb._.js +1 -1
  267. package/web/.next/server/chunks/ssr/_f39a1adb._.js.map +1 -1
  268. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  269. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  270. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
  271. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +1 -1
  272. package/web/.next/server/chunks/ssr/{src_presentation_web_4911672b._.js → src_presentation_web_08748b47._.js} +2 -2
  273. package/web/.next/server/chunks/ssr/{src_presentation_web_4911672b._.js.map → src_presentation_web_08748b47._.js.map} +1 -1
  274. package/web/.next/server/chunks/ssr/src_presentation_web_8e7fe0d1._.js +5 -0
  275. package/web/.next/server/chunks/ssr/src_presentation_web_8e7fe0d1._.js.map +1 -0
  276. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_ca051134.js +3 -0
  277. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_ca051134.js.map +1 -0
  278. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js +1 -1
  279. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js.map +1 -1
  280. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js +1 -1
  281. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js.map +1 -1
  282. package/web/.next/server/chunks/ssr/src_presentation_web_b9023017._.js +5 -0
  283. package/web/.next/server/chunks/ssr/src_presentation_web_b9023017._.js.map +1 -0
  284. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  285. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  286. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  287. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  288. package/web/.next/server/middleware-build-manifest.js +4 -4
  289. package/web/.next/server/pages/500.html +2 -2
  290. package/web/.next/server/server-reference-manifest.js +1 -1
  291. package/web/.next/server/server-reference-manifest.json +296 -410
  292. package/web/.next/static/chunks/02fb92b2e9d959a9.js +1 -0
  293. package/web/.next/static/chunks/{fb3e66702c475c87.js → 0b7fe2ac4f078f54.js} +1 -1
  294. package/web/.next/static/chunks/{fd7b2fbeff9ddaae.js → 0cc79cc7b99c4d95.js} +1 -1
  295. package/web/.next/static/chunks/{06dfdc481d4153c5.js → 20cf128e0fc0b58a.js} +1 -1
  296. package/web/.next/static/chunks/{4f9c6b47fb5453f0.js → 30ee51fe1e9066b0.js} +1 -1
  297. package/web/.next/static/chunks/{8edb1e8aba5f0924.js → 34c37eaa27bf7bf6.js} +1 -1
  298. package/web/.next/static/chunks/4cec255f2754e5ec.js +1 -0
  299. package/web/.next/static/chunks/6d7b999c99d6d175.js +9 -0
  300. package/web/.next/static/chunks/6fe91d60c62f23e4.js +2 -0
  301. package/web/.next/static/chunks/83fc7ea32e18c9a5.js +1 -0
  302. package/web/.next/static/chunks/{3db8aa71cec6ae58.js → 94c917d6989a142f.js} +1 -1
  303. package/web/.next/static/chunks/c71f8a3ccf3769f4.js +1 -0
  304. package/web/.next/static/chunks/c7e793951b20a67f.js +1 -0
  305. package/web/.next/static/chunks/cefc049e897d3f51.js +1 -0
  306. package/web/.next/static/chunks/d0dd00e2ff16617e.css +1 -0
  307. package/web/.next/static/chunks/{d56c5f4c867f304f.js → d64186b6c6737300.js} +1 -1
  308. package/web/.next/static/chunks/daf55e92d8efdc13.js +1 -0
  309. package/web/.next/static/chunks/{16df233208066782.js → e8a7069571648de4.js} +1 -1
  310. package/web/.next/static/chunks/eb9841ec4d80af01.js +1 -0
  311. package/web/.next/static/chunks/{turbopack-080e470ea902d0ba.js → turbopack-c2d183e05f30c7dc.js} +1 -1
  312. package/dist/packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.d.ts +0 -28
  313. package/dist/packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.d.ts.map +0 -1
  314. package/dist/packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.js +0 -81
  315. package/dist/packages/core/src/application/use-cases/repositories/sync-repository-main.use-case.d.ts +0 -16
  316. package/dist/packages/core/src/application/use-cases/repositories/sync-repository-main.use-case.d.ts.map +0 -1
  317. package/dist/packages/core/src/application/use-cases/repositories/sync-repository-main.use-case.js +0 -43
  318. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/042-add-feature-flag-git-rebase-sync.d.ts +0 -11
  319. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/042-add-feature-flag-git-rebase-sync.d.ts.map +0 -1
  320. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/042-add-feature-flag-git-rebase-sync.js +0 -17
  321. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.prompt.d.ts +0 -35
  322. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.prompt.d.ts.map +0 -1
  323. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.prompt.js +0 -66
  324. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.d.ts +0 -42
  325. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.d.ts.map +0 -1
  326. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.js +0 -169
  327. package/dist/src/presentation/web/app/actions/rebase-feature.d.ts +0 -5
  328. package/dist/src/presentation/web/app/actions/rebase-feature.d.ts.map +0 -1
  329. package/dist/src/presentation/web/app/actions/rebase-feature.js +0 -16
  330. package/dist/src/presentation/web/app/actions/sync-repository.d.ts +0 -5
  331. package/dist/src/presentation/web/app/actions/sync-repository.d.ts.map +0 -1
  332. package/dist/src/presentation/web/app/actions/sync-repository.js +0 -16
  333. package/web/.next/server/chunks/[root-of-the-server]__bc532286._.js.map +0 -1
  334. package/web/.next/server/chunks/ssr/[root-of-the-server]__0e842eba._.js +0 -3
  335. package/web/.next/server/chunks/ssr/[root-of-the-server]__0e842eba._.js.map +0 -1
  336. package/web/.next/server/chunks/ssr/[root-of-the-server]__39ecb785._.js +0 -4
  337. package/web/.next/server/chunks/ssr/[root-of-the-server]__39ecb785._.js.map +0 -1
  338. package/web/.next/server/chunks/ssr/[root-of-the-server]__465c0deb._.js +0 -4
  339. package/web/.next/server/chunks/ssr/[root-of-the-server]__465c0deb._.js.map +0 -1
  340. package/web/.next/server/chunks/ssr/[root-of-the-server]__60684242._.js.map +0 -1
  341. package/web/.next/server/chunks/ssr/[root-of-the-server]__8b6d1e18._.js +0 -4
  342. package/web/.next/server/chunks/ssr/[root-of-the-server]__8b6d1e18._.js.map +0 -1
  343. package/web/.next/server/chunks/ssr/[root-of-the-server]__8f6c27af._.js +0 -6
  344. package/web/.next/server/chunks/ssr/[root-of-the-server]__8f6c27af._.js.map +0 -1
  345. package/web/.next/server/chunks/ssr/[root-of-the-server]__910e9de5._.js +0 -4
  346. package/web/.next/server/chunks/ssr/[root-of-the-server]__910e9de5._.js.map +0 -1
  347. package/web/.next/server/chunks/ssr/[root-of-the-server]__a04af228._.js +0 -4
  348. package/web/.next/server/chunks/ssr/[root-of-the-server]__a04af228._.js.map +0 -1
  349. package/web/.next/server/chunks/ssr/[root-of-the-server]__a21eef5a._.js.map +0 -1
  350. package/web/.next/server/chunks/ssr/[root-of-the-server]__a32728d0._.js +0 -4
  351. package/web/.next/server/chunks/ssr/[root-of-the-server]__a32728d0._.js.map +0 -1
  352. package/web/.next/server/chunks/ssr/[root-of-the-server]__d6ab9c36._.js +0 -6
  353. package/web/.next/server/chunks/ssr/[root-of-the-server]__d6ab9c36._.js.map +0 -1
  354. package/web/.next/server/chunks/ssr/[root-of-the-server]__f2eb7d62._.js +0 -4
  355. package/web/.next/server/chunks/ssr/[root-of-the-server]__f2eb7d62._.js.map +0 -1
  356. package/web/.next/server/chunks/ssr/[root-of-the-server]__f3036814._.js +0 -4
  357. package/web/.next/server/chunks/ssr/[root-of-the-server]__f3036814._.js.map +0 -1
  358. package/web/.next/server/chunks/ssr/_b4b8a636._.js +0 -3
  359. package/web/.next/server/chunks/ssr/_b4b8a636._.js.map +0 -1
  360. package/web/.next/server/chunks/ssr/_e15dd74c._.js.map +0 -1
  361. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +0 -3
  362. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js.map +0 -1
  363. package/web/.next/static/chunks/13b5bc437324b227.js +0 -1
  364. package/web/.next/static/chunks/2407318d504ba12a.js +0 -2
  365. package/web/.next/static/chunks/84a181ff3270fd9f.js +0 -1
  366. package/web/.next/static/chunks/89aac43287d73b02.js +0 -1
  367. package/web/.next/static/chunks/b8434db399ff1f41.js +0 -1
  368. package/web/.next/static/chunks/bfda4e4194a4a633.js +0 -1
  369. package/web/.next/static/chunks/c32fcc86e01faeac.js +0 -1
  370. package/web/.next/static/chunks/cab6d5e8a766f492.js +0 -1
  371. package/web/.next/static/chunks/da484d44874006a2.css +0 -1
  372. package/web/.next/static/chunks/f259386f4875e70c.js +0 -1
  373. /package/web/.next/server/chunks/{[root-of-the-server]__53013576._.js.map → [root-of-the-server]__25f23d5d._.js.map} +0 -0
  374. /package/web/.next/server/chunks/{[root-of-the-server]__92078db6._.js.map → [root-of-the-server]__26565141._.js.map} +0 -0
  375. /package/web/.next/server/chunks/{[root-of-the-server]__d8037e14._.js.map → [root-of-the-server]__2b1074db._.js.map} +0 -0
  376. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__62cdea24._.js.map → [root-of-the-server]__84f72684._.js.map} +0 -0
  377. /package/web/.next/static/{hNL2iYdxbIQDChkLJO6q1 → Scz414CgdaWhYJlxXld36}/_buildManifest.js +0 -0
  378. /package/web/.next/static/{hNL2iYdxbIQDChkLJO6q1 → Scz414CgdaWhYJlxXld36}/_clientMiddlewareManifest.json +0 -0
  379. /package/web/.next/static/{hNL2iYdxbIQDChkLJO6q1 → Scz414CgdaWhYJlxXld36}/_ssgManifest.js +0 -0
@@ -67,7 +67,7 @@ const TAB_FETCHERS = {
67
67
  activity: fetchActivity,
68
68
  plan: fetchPlan,
69
69
  };
70
- export function FeatureDrawerTabs({ featureNode, featureId, initialTab, urlTab, prdData, prdSelections, onPrdSelect, onPrdApprove, onPrdReject, isPrdLoading, techData, onTechApprove, onTechReject, isTechLoading, productData, mergeData, onMergeApprove, onMergeReject, isMergeLoading, onRebaseOnMain, rebaseLoading, rebaseError, isRejecting, chatInput, onChatInputChange, sseEvents, }) {
70
+ export function FeatureDrawerTabs({ featureNode, featureId, initialTab, urlTab, prdData, prdSelections, onPrdSelect, onPrdApprove, onPrdReject, isPrdLoading, techData, onTechApprove, onTechReject, isTechLoading, productData, mergeData, onMergeApprove, onMergeReject, isMergeLoading, isRejecting, chatInput, onChatInputChange, sseEvents, }) {
71
71
  const pathname = usePathname();
72
72
  const visibleTabs = useMemo(() => computeVisibleTabs(featureNode), [featureNode]);
73
73
  const visibleTabDefs = useMemo(() => ALL_TABS.filter((t) => visibleTabs.includes(t.key)).map((t) => t.key === 'merge-review' && featureNode.lifecycle === 'maintain'
@@ -244,7 +244,7 @@ export function FeatureDrawerTabs({ featureNode, featureId, initialTab, urlTab,
244
244
  fetchTab(tab);
245
245
  }
246
246
  }, [fetchTab]);
247
- return (_jsx("div", { className: "flex min-h-0 flex-1 flex-col", children: _jsxs(Tabs, { value: activeTab, onValueChange: handleTabChange, className: "flex min-h-0 flex-1 flex-col", children: [_jsx("div", { className: "shrink-0 overflow-x-auto px-4 pt-4", children: _jsx(TabsList, { className: "flex w-full", children: visibleTabDefs.map((tab) => (_jsx(TabsTrigger, { value: tab.key, className: "flex-1", children: tab.label }, tab.key))) }) }), _jsx(TabsContent, { value: "overview", className: "mt-0 flex-1 overflow-y-auto", children: _jsx(OverviewTab, { data: featureNode, onRebaseOnMain: onRebaseOnMain, rebaseLoading: rebaseLoading, rebaseError: rebaseError }) }), _jsx(TabsContent, { value: "activity", className: "mt-0 flex-1 overflow-y-auto", children: _jsx(ActivityTab, { timings: tabs.activity.data?.timings ?? null, loading: tabs.activity.loading, error: tabs.activity.error, rejectionFeedback: tabs.activity.data?.rejectionFeedback }) }), _jsx(TabsContent, { value: "log", className: "mt-0 flex-1 overflow-hidden", children: _jsx(LogTab, { content: featureLogs.content, isConnected: featureLogs.isConnected, error: featureLogs.error }) }), _jsx(TabsContent, { value: "plan", className: "mt-0 flex-1 overflow-y-auto", children: _jsx(PlanTab, { plan: tabs.plan.data, loading: tabs.plan.loading, error: tabs.plan.error }) }), visibleTabs.includes('prd-review') ? (_jsx(TabsContent, { value: "prd-review", className: "mt-0 flex min-h-0 flex-1 flex-col", children: prdData ? (_jsx(PrdQuestionnaire, { data: prdData, selections: prdSelections ?? {}, onSelect: onPrdSelect ?? (() => undefined), onApprove: onPrdApprove ?? (() => undefined), onReject: onPrdReject, isProcessing: isPrdLoading, isRejecting: isRejecting, chatInput: chatInput, onChatInputChange: onChatInputChange })) : (_jsx("div", { className: "flex items-center justify-center p-8", children: _jsx(Loader2, { className: "text-muted-foreground h-6 w-6 animate-spin" }) })) })) : null, visibleTabs.includes('tech-decisions') ? (_jsx(TabsContent, { value: "tech-decisions", className: "mt-0 flex min-h-0 flex-1 flex-col", children: techData ? (_jsxs("div", { className: "flex min-h-0 flex-1 flex-col", children: [_jsx("div", { className: "flex-1 overflow-y-auto", children: _jsx(TechDecisionsContent, { data: techData }) }), _jsx(DrawerActionBarForTech, { onApprove: onTechApprove ?? (() => undefined), onReject: onTechReject, isProcessing: isTechLoading, isRejecting: isRejecting, chatInput: chatInput, onChatInputChange: onChatInputChange })] })) : (_jsx("div", { className: "flex items-center justify-center p-8", children: _jsx(Loader2, { className: "text-muted-foreground h-6 w-6 animate-spin" }) })) })) : null, visibleTabs.includes('product-decisions') ? (_jsx(TabsContent, { value: "product-decisions", className: "mt-0 flex-1 overflow-y-auto", children: productData === null ? (_jsx("div", { className: "flex items-center justify-center p-8", children: _jsx(Loader2, { className: "text-muted-foreground h-6 w-6 animate-spin" }) })) : productData ? (_jsx(ProductDecisionsSummary, { data: productData })) : (_jsx("p", { className: "text-muted-foreground p-4 text-center text-sm", children: "No product decisions available." })) })) : null, visibleTabs.includes('merge-review') ? (_jsx(TabsContent, { value: "merge-review", className: "mt-0 flex min-h-0 flex-1 flex-col", children: mergeData ? (_jsx(MergeReview, { data: mergeData, readOnly: featureNode.lifecycle === 'maintain', onApprove: onMergeApprove ?? (() => undefined), onReject: onMergeReject, isProcessing: isMergeLoading, isRejecting: isRejecting, chatInput: chatInput, onChatInputChange: onChatInputChange })) : (_jsx("div", { className: "flex items-center justify-center p-8", children: _jsx(Loader2, { className: "text-muted-foreground h-6 w-6 animate-spin" }) })) })) : null] }) }));
247
+ return (_jsx("div", { className: "flex min-h-0 flex-1 flex-col", children: _jsxs(Tabs, { value: activeTab, onValueChange: handleTabChange, className: "flex min-h-0 flex-1 flex-col", children: [_jsx("div", { className: "shrink-0 overflow-x-auto px-4 pt-4", children: _jsx(TabsList, { className: "flex w-full", children: visibleTabDefs.map((tab) => (_jsx(TabsTrigger, { value: tab.key, className: "flex-1", children: tab.label }, tab.key))) }) }), _jsx(TabsContent, { value: "overview", className: "mt-0 flex-1 overflow-y-auto", children: _jsx(OverviewTab, { data: featureNode }) }), _jsx(TabsContent, { value: "activity", className: "mt-0 flex-1 overflow-y-auto", children: _jsx(ActivityTab, { timings: tabs.activity.data?.timings ?? null, loading: tabs.activity.loading, error: tabs.activity.error, rejectionFeedback: tabs.activity.data?.rejectionFeedback }) }), _jsx(TabsContent, { value: "log", className: "mt-0 flex-1 overflow-hidden", children: _jsx(LogTab, { content: featureLogs.content, isConnected: featureLogs.isConnected, error: featureLogs.error }) }), _jsx(TabsContent, { value: "plan", className: "mt-0 flex-1 overflow-y-auto", children: _jsx(PlanTab, { plan: tabs.plan.data, loading: tabs.plan.loading, error: tabs.plan.error }) }), visibleTabs.includes('prd-review') ? (_jsx(TabsContent, { value: "prd-review", className: "mt-0 flex min-h-0 flex-1 flex-col", children: prdData ? (_jsx(PrdQuestionnaire, { data: prdData, selections: prdSelections ?? {}, onSelect: onPrdSelect ?? (() => undefined), onApprove: onPrdApprove ?? (() => undefined), onReject: onPrdReject, isProcessing: isPrdLoading, isRejecting: isRejecting, chatInput: chatInput, onChatInputChange: onChatInputChange })) : (_jsx("div", { className: "flex items-center justify-center p-8", children: _jsx(Loader2, { className: "text-muted-foreground h-6 w-6 animate-spin" }) })) })) : null, visibleTabs.includes('tech-decisions') ? (_jsx(TabsContent, { value: "tech-decisions", className: "mt-0 flex min-h-0 flex-1 flex-col", children: techData ? (_jsxs("div", { className: "flex min-h-0 flex-1 flex-col", children: [_jsx("div", { className: "flex-1 overflow-y-auto", children: _jsx(TechDecisionsContent, { data: techData }) }), _jsx(DrawerActionBarForTech, { onApprove: onTechApprove ?? (() => undefined), onReject: onTechReject, isProcessing: isTechLoading, isRejecting: isRejecting, chatInput: chatInput, onChatInputChange: onChatInputChange })] })) : (_jsx("div", { className: "flex items-center justify-center p-8", children: _jsx(Loader2, { className: "text-muted-foreground h-6 w-6 animate-spin" }) })) })) : null, visibleTabs.includes('product-decisions') ? (_jsx(TabsContent, { value: "product-decisions", className: "mt-0 flex-1 overflow-y-auto", children: productData === null ? (_jsx("div", { className: "flex items-center justify-center p-8", children: _jsx(Loader2, { className: "text-muted-foreground h-6 w-6 animate-spin" }) })) : productData ? (_jsx(ProductDecisionsSummary, { data: productData })) : (_jsx("p", { className: "text-muted-foreground p-4 text-center text-sm", children: "No product decisions available." })) })) : null, visibleTabs.includes('merge-review') ? (_jsx(TabsContent, { value: "merge-review", className: "mt-0 flex min-h-0 flex-1 flex-col", children: mergeData ? (_jsx(MergeReview, { data: mergeData, readOnly: featureNode.lifecycle === 'maintain', onApprove: onMergeApprove ?? (() => undefined), onReject: onMergeReject, isProcessing: isMergeLoading, isRejecting: isRejecting, chatInput: chatInput, onChatInputChange: onChatInputChange })) : (_jsx("div", { className: "flex items-center justify-center p-8", children: _jsx(Loader2, { className: "text-muted-foreground h-6 w-6 animate-spin" }) })) })) : null] }) }));
248
248
  }
249
249
  // ── Private helper ──────────────────────────────────────────────────────
250
250
  function DrawerActionBarForTech({ onApprove, onReject, isProcessing, isRejecting, chatInput, onChatInputChange, }) {
@@ -1,9 +1,6 @@
1
1
  import type { FeatureNodeData } from '../../common/feature-node/index.js';
2
2
  export interface OverviewTabProps {
3
3
  data: FeatureNodeData;
4
- onRebaseOnMain?: () => void;
5
- rebaseLoading?: boolean;
6
- rebaseError?: string | null;
7
4
  }
8
- export declare function OverviewTab({ data, onRebaseOnMain, rebaseLoading, rebaseError, }: OverviewTabProps): import("react/jsx-runtime").JSX.Element;
5
+ export declare function OverviewTab({ data }: OverviewTabProps): import("react/jsx-runtime").JSX.Element;
9
6
  //# sourceMappingURL=overview-tab.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"overview-tab.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-drawer-tabs/overview-tab.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAQxE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,eAAe,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,cAAc,EACd,aAAa,EACb,WAAW,GACZ,EAAE,gBAAgB,2CAsElB"}
1
+ {"version":3,"file":"overview-tab.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-drawer-tabs/overview-tab.tsx"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAQxE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE,gBAAgB,2CA+DrD"}
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import { useState, useEffect, useRef } from 'react';
4
- import { AlertTriangle, Check, ExternalLink, FileSearch, GitBranch, GitCommitHorizontal, GitMerge, RotateCcw, ShieldCheck, Square, X, Zap, } from 'lucide-react';
4
+ import { AlertTriangle, Check, ExternalLink, FileSearch, GitBranch, GitCommitHorizontal, RotateCcw, ShieldCheck, Square, X, Zap, } from 'lucide-react';
5
5
  import { InlineAttachments } from '../../common/inline-attachments/index.js';
6
6
  import { PrStatus } from '../../../../../../packages/core/src/domain/generated/output.js';
7
7
  import { cn } from '../../../lib/utils.js';
@@ -9,14 +9,13 @@ import { Badge } from '../../ui/badge.js';
9
9
  import { Separator } from '../../ui/separator.js';
10
10
  import { CiStatusBadge } from '../../common/ci-status-badge/index.js';
11
11
  import { CometSpinner } from '../../ui/comet-spinner.js';
12
- import { ActionButton } from '../../common/action-button/index.js';
13
12
  import { featureNodeStateConfig, lifecycleDisplayLabels } from '../../common/feature-node/index.js';
14
13
  import { getAgentTypeIcon, agentTypeLabels, } from '../../common/feature-node/agent-type-icons.js';
15
14
  import { getModelMeta } from '../../../lib/model-metadata.js';
16
15
  import { formatDuration } from '../../../lib/format-duration.js';
17
- export function OverviewTab({ data, onRebaseOnMain, rebaseLoading, rebaseError, }) {
16
+ export function OverviewTab({ data }) {
18
17
  const isCompleted = data.lifecycle === 'maintain';
19
- return (_jsxs(_Fragment, { children: [_jsxs("div", { "data-testid": "feature-drawer-status", className: "flex flex-col gap-3 p-4", children: [_jsx("div", { className: "text-muted-foreground text-xs font-semibold tracking-wider", children: lifecycleDisplayLabels[data.lifecycle] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(FeatureStateBadge, { data: data }), data.state === 'error' && data.onRetry ? (_jsxs("button", { "data-testid": "feature-drawer-retry-button", onClick: () => data.onRetry(data.featureId), className: "flex shrink-0 cursor-pointer items-center gap-1.5 rounded-full bg-red-50 px-3 py-1.5 text-sm font-medium text-red-700 transition-colors hover:bg-red-100", children: [_jsx(RotateCcw, { className: "h-3.5 w-3.5" }), "Retry"] })) : null, (data.state === 'running' || data.state === 'action-required') && data.onStop ? (_jsxs("button", { "data-testid": "feature-drawer-stop-button", onClick: () => data.onStop(data.featureId), className: "flex shrink-0 cursor-pointer items-center gap-1.5 rounded-full bg-red-50 px-3 py-1.5 text-sm font-medium text-red-700 transition-colors hover:bg-red-100", children: [_jsx(Square, { className: "h-3.5 w-3.5" }), "Stop"] })) : null] }), !isCompleted && data.progress > 0 ? (_jsxs("div", { "data-testid": "feature-drawer-progress", className: "flex flex-col gap-1", children: [_jsxs("div", { className: "text-muted-foreground flex items-center justify-between text-xs", children: [_jsx("span", { children: "Progress" }), _jsxs("span", { children: [data.progress, "%"] })] }), _jsx("div", { className: "bg-muted h-2 w-full overflow-hidden rounded-full", children: _jsx("div", { className: cn('h-full rounded-full transition-all', featureNodeStateConfig[data.state].progressClass), style: { width: `${data.progress}%` } }) })] })) : null, isCompleted && data.pr ? _jsx(FeaturePrInfo, { pr: data.pr }) : null] }), _jsx(FeatureInfo, { data: data }), !isCompleted && data.pr ? (_jsxs(_Fragment, { children: [_jsx(Separator, {}), _jsx("div", { className: "p-4", children: _jsx(FeaturePrInfo, { pr: data.pr }) })] })) : null, _jsx(FeatureDetails, { data: data }), onRebaseOnMain && data.branch ? (_jsx(FeatureGitOperations, { onRebaseOnMain: onRebaseOnMain, rebaseLoading: rebaseLoading, rebaseError: rebaseError })) : null, _jsx(FeatureSettings, { data: data })] }));
18
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { "data-testid": "feature-drawer-status", className: "flex flex-col gap-3 p-4", children: [_jsx("div", { className: "text-muted-foreground text-xs font-semibold tracking-wider", children: lifecycleDisplayLabels[data.lifecycle] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(FeatureStateBadge, { data: data }), data.state === 'error' && data.onRetry ? (_jsxs("button", { "data-testid": "feature-drawer-retry-button", onClick: () => data.onRetry(data.featureId), className: "flex shrink-0 cursor-pointer items-center gap-1.5 rounded-full bg-red-50 px-3 py-1.5 text-sm font-medium text-red-700 transition-colors hover:bg-red-100", children: [_jsx(RotateCcw, { className: "h-3.5 w-3.5" }), "Retry"] })) : null, (data.state === 'running' || data.state === 'action-required') && data.onStop ? (_jsxs("button", { "data-testid": "feature-drawer-stop-button", onClick: () => data.onStop(data.featureId), className: "flex shrink-0 cursor-pointer items-center gap-1.5 rounded-full bg-red-50 px-3 py-1.5 text-sm font-medium text-red-700 transition-colors hover:bg-red-100", children: [_jsx(Square, { className: "h-3.5 w-3.5" }), "Stop"] })) : null] }), !isCompleted && data.progress > 0 ? (_jsxs("div", { "data-testid": "feature-drawer-progress", className: "flex flex-col gap-1", children: [_jsxs("div", { className: "text-muted-foreground flex items-center justify-between text-xs", children: [_jsx("span", { children: "Progress" }), _jsxs("span", { children: [data.progress, "%"] })] }), _jsx("div", { className: "bg-muted h-2 w-full overflow-hidden rounded-full", children: _jsx("div", { className: cn('h-full rounded-full transition-all', featureNodeStateConfig[data.state].progressClass), style: { width: `${data.progress}%` } }) })] })) : null, isCompleted && data.pr ? _jsx(FeaturePrInfo, { pr: data.pr }) : null] }), _jsx(FeatureInfo, { data: data }), !isCompleted && data.pr ? (_jsxs(_Fragment, { children: [_jsx(Separator, {}), _jsx("div", { className: "p-4", children: _jsx(FeaturePrInfo, { pr: data.pr }) })] })) : null, _jsx(FeatureDetails, { data: data }), _jsx(FeatureSettings, { data: data })] }));
20
19
  }
21
20
  function FeatureStateBadge({ data }) {
22
21
  const config = featureNodeStateConfig[data.state];
@@ -110,10 +109,6 @@ function AgentDetailRow({ agentType }) {
110
109
  const label = agentTypeLabels[agentType] ?? agentType;
111
110
  return (_jsxs("div", { className: "flex flex-col gap-0.5", children: [_jsx("span", { className: "text-muted-foreground text-xs font-medium", children: "Agent" }), _jsxs("span", { className: "flex items-center gap-2 text-sm", children: [_jsx(Icon, { className: "h-4 w-4 shrink-0" }), label] })] }));
112
111
  }
113
- // ── Git Operations section ───────────────────────────────────────────
114
- function FeatureGitOperations({ onRebaseOnMain, rebaseLoading, rebaseError, }) {
115
- return (_jsxs(_Fragment, { children: [_jsx(Separator, {}), _jsxs("div", { "data-testid": "feature-drawer-git-operations", className: "flex flex-col gap-3 p-4", children: [_jsx("div", { className: "text-muted-foreground text-xs font-semibold tracking-wider", children: "GIT OPERATIONS" }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(ActionButton, { label: "Rebase on Main", onClick: onRebaseOnMain, loading: rebaseLoading ?? false, error: !!rebaseError, icon: GitMerge, variant: "outline", size: "sm" }), rebaseError ? _jsx("p", { className: "text-destructive text-xs", children: rebaseError }) : null] })] })] }));
116
- }
117
112
  // ── Settings section ─────────────────────────────────────────────────
118
113
  function SettingBadge({ enabled, label }) {
119
114
  return (_jsxs("span", { className: cn('inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-xs font-medium', enabled ? 'bg-emerald-50 text-emerald-700' : 'bg-muted text-muted-foreground'), children: [enabled ? _jsx(Check, { className: "h-3 w-3" }) : _jsx(X, { className: "h-3 w-3" }), label] }));
@@ -49,10 +49,4 @@ export declare const WithSettingsAllApproved: Story;
49
49
  export declare const FastModeWithSettings: Story;
50
50
  /** Feature with evidence enabled but commit to PR disabled. */
51
51
  export declare const EvidenceCollectOnly: Story;
52
- /** Feature with rebase action available — shows "GIT OPERATIONS" section. */
53
- export declare const WithRebaseAction: Story;
54
- /** Rebase action in loading state. */
55
- export declare const RebaseLoading: Story;
56
- /** Rebase action showing error. */
57
- export declare const RebaseError: Story;
58
52
  //# sourceMappingURL=overview-tab.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"overview-tab.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,WAAW,CAclC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,WAAW,CAAC,CAAC;AA0G1C,uEAAuE;AACvE,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,IAAI,EAAE,KAElB,CAAC;AAEF,yDAAyD;AACzD,eAAO,MAAM,UAAU,EAAE,KAExB,CAAC;AAEF,wDAAwD;AACxD,eAAO,MAAM,gBAAgB,EAAE,KAE9B,CAAC;AAEF,iDAAiD;AACjD,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,gDAAgD;AAChD,eAAO,MAAM,KAAK,EAAE,KAEnB,CAAC;AAOF,6CAA6C;AAC7C,eAAO,MAAM,cAAc,EAAE,KAE5B,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,eAAe,EAAE,KAE7B,CAAC;AAEF,sEAAsE;AACtE,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAwBF,mEAAmE;AACnE,eAAO,MAAM,QAAQ,EAAE,KAEtB,CAAC;AAMF,0BAA0B;AAC1B,eAAO,MAAM,iBAAiB,EAAE,KAE/B,CAAC;AAEF,sBAAsB;AACtB,eAAO,MAAM,aAAa,EAAE,KAE3B,CAAC;AAEF,oBAAoB;AACpB,eAAO,MAAM,WAAW,EAAE,KAEzB,CAAC;AAEF,sBAAsB;AACtB,eAAO,MAAM,aAAa,EAAE,KAE3B,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,oBAAoB,EAAE,KAclC,CAAC;AAqBF,4DAA4D;AAC5D,eAAO,MAAM,sBAAsB,EAAE,KAEpC,CAAC;AAEF,sDAAsD;AACtD,eAAO,MAAM,gBAAgB,EAAE,KAO9B,CAAC;AAEF,+FAA+F;AAC/F,eAAO,MAAM,eAAe,EAAE,KAgB7B,CAAC;AAMF,oFAAoF;AACpF,eAAO,MAAM,eAAe,EAAE,KAY7B,CAAC;AAEF,kDAAkD;AAClD,eAAO,MAAM,uBAAuB,EAAE,KAYrC,CAAC;AAEF,mDAAmD;AACnD,eAAO,MAAM,uBAAuB,EAAE,KAYrC,CAAC;AAEF,2CAA2C;AAC3C,eAAO,MAAM,oBAAoB,EAAE,KAYlC,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,mBAAmB,EAAE,KAQjC,CAAC;AAMF,6EAA6E;AAC7E,eAAO,MAAM,gBAAgB,EAAE,KAO9B,CAAC;AAEF,sCAAsC;AACtC,eAAO,MAAM,aAAa,EAAE,KAO3B,CAAC;AAEF,mCAAmC;AACnC,eAAO,MAAM,WAAW,EAAE,KAOzB,CAAC"}
1
+ {"version":3,"file":"overview-tab.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,WAAW,CAclC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,WAAW,CAAC,CAAC;AA0G1C,uEAAuE;AACvE,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,IAAI,EAAE,KAElB,CAAC;AAEF,yDAAyD;AACzD,eAAO,MAAM,UAAU,EAAE,KAExB,CAAC;AAEF,wDAAwD;AACxD,eAAO,MAAM,gBAAgB,EAAE,KAE9B,CAAC;AAEF,iDAAiD;AACjD,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,gDAAgD;AAChD,eAAO,MAAM,KAAK,EAAE,KAEnB,CAAC;AAOF,6CAA6C;AAC7C,eAAO,MAAM,cAAc,EAAE,KAE5B,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,eAAe,EAAE,KAE7B,CAAC;AAEF,sEAAsE;AACtE,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAwBF,mEAAmE;AACnE,eAAO,MAAM,QAAQ,EAAE,KAEtB,CAAC;AAMF,0BAA0B;AAC1B,eAAO,MAAM,iBAAiB,EAAE,KAE/B,CAAC;AAEF,sBAAsB;AACtB,eAAO,MAAM,aAAa,EAAE,KAE3B,CAAC;AAEF,oBAAoB;AACpB,eAAO,MAAM,WAAW,EAAE,KAEzB,CAAC;AAEF,sBAAsB;AACtB,eAAO,MAAM,aAAa,EAAE,KAE3B,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,oBAAoB,EAAE,KAclC,CAAC;AAqBF,4DAA4D;AAC5D,eAAO,MAAM,sBAAsB,EAAE,KAEpC,CAAC;AAEF,sDAAsD;AACtD,eAAO,MAAM,gBAAgB,EAAE,KAO9B,CAAC;AAEF,+FAA+F;AAC/F,eAAO,MAAM,eAAe,EAAE,KAgB7B,CAAC;AAMF,oFAAoF;AACpF,eAAO,MAAM,eAAe,EAAE,KAY7B,CAAC;AAEF,kDAAkD;AAClD,eAAO,MAAM,uBAAuB,EAAE,KAYrC,CAAC;AAEF,mDAAmD;AACnD,eAAO,MAAM,uBAAuB,EAAE,KAYrC,CAAC;AAEF,2CAA2C;AAC3C,eAAO,MAAM,oBAAoB,EAAE,KAYlC,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,mBAAmB,EAAE,KAQjC,CAAC"}
@@ -325,33 +325,3 @@ export const EvidenceCollectOnly = {
325
325
  },
326
326
  },
327
327
  };
328
- /* ---------------------------------------------------------------------------
329
- * Git operations stories
330
- * ------------------------------------------------------------------------- */
331
- /** Feature with rebase action available — shows "GIT OPERATIONS" section. */
332
- export const WithRebaseAction = {
333
- args: {
334
- data: noPrData,
335
- onRebaseOnMain: fn(),
336
- rebaseLoading: false,
337
- rebaseError: null,
338
- },
339
- };
340
- /** Rebase action in loading state. */
341
- export const RebaseLoading = {
342
- args: {
343
- data: noPrData,
344
- onRebaseOnMain: fn(),
345
- rebaseLoading: true,
346
- rebaseError: null,
347
- },
348
- };
349
- /** Rebase action showing error. */
350
- export const RebaseError = {
351
- args: {
352
- data: noPrData,
353
- onRebaseOnMain: fn(),
354
- rebaseLoading: false,
355
- rebaseError: 'Rebase failed: unresolvable conflicts in src/index.ts',
356
- },
357
- };
@@ -1,5 +1,6 @@
1
1
  export { computeDrawerView, type DrawerView } from './control-center-drawer/index.js';
2
2
  export { AddRepositoryButton } from './add-repository-button/index.js';
3
+ export { ReactFileManagerDialog, type ReactFileManagerDialogProps, } from './react-file-manager-dialog/index.js';
3
4
  export { FloatingActionButton, type FloatingActionButtonProps, type FloatingActionButtonAction, } from './floating-action-button/index.js';
4
5
  export { ElapsedTime, formatElapsed } from './elapsed-time/index.js';
5
6
  export { EmptyState, type EmptyStateProps } from './empty-state/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/components/common/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EACL,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,GAChC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,GAC1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,iBAAiB,EACjB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,sBAAsB,GAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,KAAK,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAC7F,OAAO,EAAE,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,cAAc,EACd,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,oBAAoB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,GAC7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,KAAK,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACnG,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,KAAK,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/components/common/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EACL,sBAAsB,EACtB,KAAK,2BAA2B,GACjC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,GAChC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,GAC1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,iBAAiB,EACjB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,sBAAsB,GAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,KAAK,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAC7F,OAAO,EAAE,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,cAAc,EACd,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,oBAAoB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,GAC7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,KAAK,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACnG,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,KAAK,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export { computeDrawerView } from './control-center-drawer/index.js';
2
2
  export { AddRepositoryButton } from './add-repository-button/index.js';
3
+ export { ReactFileManagerDialog, } from './react-file-manager-dialog/index.js';
3
4
  export { FloatingActionButton, } from './floating-action-button/index.js';
4
5
  export { ElapsedTime, formatElapsed } from './elapsed-time/index.js';
5
6
  export { EmptyState } from './empty-state/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"open-action-menu.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/open-action-menu/open-action-menu.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAkBpD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,cAAc,CAOrC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,cAAc,CAAC,CAAC;AAE7C,4DAA4D;AAC5D,eAAO,MAAM,OAAO,EAAE,KAMrB,CAAC;AAEF,wCAAwC;AACxC,eAAO,MAAM,YAAY,EAAE,KAM1B,CAAC;AAEF,wCAAwC;AACxC,eAAO,MAAM,OAAO,EAAE,KAMrB,CAAC;AAEF,4CAA4C;AAC5C,eAAO,MAAM,SAAS,EAAE,KAMvB,CAAC"}
1
+ {"version":3,"file":"open-action-menu.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/open-action-menu/open-action-menu.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAepD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,cAAc,CAOrC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,cAAc,CAAC,CAAC;AAE7C,4DAA4D;AAC5D,eAAO,MAAM,OAAO,EAAE,KAMrB,CAAC;AAEF,wCAAwC;AACxC,eAAO,MAAM,YAAY,EAAE,KAM1B,CAAC;AAEF,wCAAwC;AACxC,eAAO,MAAM,OAAO,EAAE,KAMrB,CAAC;AAEF,4CAA4C;AAC5C,eAAO,MAAM,SAAS,EAAE,KAMvB,CAAC"}
@@ -4,15 +4,12 @@ const defaultActions = {
4
4
  openInIde: fn().mockName('openInIde'),
5
5
  openInShell: fn().mockName('openInShell'),
6
6
  openSpecsFolder: fn().mockName('openSpecsFolder'),
7
- rebaseOnMain: fn().mockName('rebaseOnMain'),
8
7
  ideLoading: false,
9
8
  shellLoading: false,
10
9
  specsLoading: false,
11
- rebaseLoading: false,
12
10
  ideError: null,
13
11
  shellError: null,
14
12
  specsError: null,
15
- rebaseError: null,
16
13
  };
17
14
  const meta = {
18
15
  title: 'Composed/OpenActionMenu',
@@ -0,0 +1,3 @@
1
+ export { ReactFileManagerDialog } from './react-file-manager-dialog.js';
2
+ export type { ReactFileManagerDialogProps } from './react-file-manager-dialog-config.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/react-file-manager-dialog/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,YAAY,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC"}
@@ -0,0 +1 @@
1
+ export { ReactFileManagerDialog } from './react-file-manager-dialog.js';
@@ -0,0 +1,17 @@
1
+ export interface ReactFileManagerDialogProps {
2
+ open: boolean;
3
+ onOpenChange: (open: boolean) => void;
4
+ onSelect: (path: string | null) => void;
5
+ initialPath?: string;
6
+ }
7
+ export interface DirectoryEntry {
8
+ name: string;
9
+ path: string;
10
+ isDirectory: true;
11
+ updatedAt: string;
12
+ }
13
+ export interface DirectoryListResponse {
14
+ entries: DirectoryEntry[];
15
+ currentPath: string;
16
+ }
17
+ //# sourceMappingURL=react-file-manager-dialog-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-file-manager-dialog-config.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/react-file-manager-dialog/react-file-manager-dialog-config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,IAAI,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB"}
@@ -0,0 +1,3 @@
1
+ import type { ReactFileManagerDialogProps } from './react-file-manager-dialog-config.js';
2
+ export declare function ReactFileManagerDialog({ open, onOpenChange, onSelect, initialPath, }: ReactFileManagerDialogProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=react-file-manager-dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-file-manager-dialog.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/react-file-manager-dialog/react-file-manager-dialog.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAGV,2BAA2B,EAC5B,MAAM,oCAAoC,CAAC;AAqC5C,wBAAgB,sBAAsB,CAAC,EACrC,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,WAAW,GACZ,EAAE,2BAA2B,2CAuH7B"}
@@ -0,0 +1,106 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useCallback, useEffect, useRef, useState } from 'react';
4
+ import dynamic from 'next/dynamic';
5
+ import { Loader2 } from 'lucide-react';
6
+ import { toast } from 'sonner';
7
+ import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '../../ui/dialog.js';
8
+ import { Button } from '../../ui/button.js';
9
+ const FileManager = dynamic(() => import('@cubone/react-file-manager').then((mod) => mod.FileManager), { ssr: false, loading: () => _jsx(FileManagerSkeleton, {}) });
10
+ function FileManagerSkeleton() {
11
+ return (_jsx("div", { className: "flex h-[400px] w-full items-center justify-center", children: _jsx(Loader2, { className: "text-muted-foreground h-8 w-8 animate-spin" }) }));
12
+ }
13
+ function toFileManagerFiles(entries) {
14
+ return entries.map((entry) => ({
15
+ name: entry.name,
16
+ isDirectory: true,
17
+ path: entry.path,
18
+ updatedAt: entry.updatedAt,
19
+ }));
20
+ }
21
+ async function fetchDirectory(dirPath) {
22
+ const params = new URLSearchParams();
23
+ if (dirPath) {
24
+ params.set('path', dirPath);
25
+ }
26
+ const res = await fetch(`/api/directory/list?${params.toString()}`);
27
+ if (!res.ok) {
28
+ const body = await res.json().catch(() => ({ error: 'Failed to load directory' }));
29
+ throw new Error(body.error ?? 'Failed to load directory');
30
+ }
31
+ return res.json();
32
+ }
33
+ export function ReactFileManagerDialog({ open, onOpenChange, onSelect, initialPath, }) {
34
+ const [entries, setEntries] = useState([]);
35
+ const [currentPath, setCurrentPath] = useState('');
36
+ const [isLoading, setIsLoading] = useState(false);
37
+ const [selectedPath, setSelectedPath] = useState(null);
38
+ const hasLoadedRef = useRef(false);
39
+ const loadDirectory = useCallback(async (dirPath) => {
40
+ setIsLoading(true);
41
+ setSelectedPath(null);
42
+ try {
43
+ const data = await fetchDirectory(dirPath);
44
+ setEntries(data.entries);
45
+ setCurrentPath(data.currentPath);
46
+ }
47
+ catch (error) {
48
+ const message = error instanceof Error ? error.message : 'Failed to load directory';
49
+ toast.error(message);
50
+ }
51
+ finally {
52
+ setIsLoading(false);
53
+ }
54
+ }, []);
55
+ useEffect(() => {
56
+ if (open && !hasLoadedRef.current) {
57
+ hasLoadedRef.current = true;
58
+ loadDirectory(initialPath);
59
+ }
60
+ if (!open) {
61
+ hasLoadedRef.current = false;
62
+ }
63
+ }, [open, initialPath, loadDirectory]);
64
+ const handleFileOpen = useCallback((file) => {
65
+ if (file.isDirectory && file.path) {
66
+ loadDirectory(file.path);
67
+ }
68
+ }, [loadDirectory]);
69
+ const handleSelectionChange = useCallback((files) => {
70
+ if (files.length === 1 && files[0].isDirectory && files[0].path) {
71
+ setSelectedPath(files[0].path);
72
+ }
73
+ else {
74
+ setSelectedPath(null);
75
+ }
76
+ }, []);
77
+ function handleSelect() {
78
+ if (selectedPath) {
79
+ onSelect(selectedPath);
80
+ onOpenChange(false);
81
+ }
82
+ }
83
+ function handleSelectCurrentPath() {
84
+ if (currentPath) {
85
+ onSelect(currentPath);
86
+ onOpenChange(false);
87
+ }
88
+ }
89
+ function handleCancel() {
90
+ onSelect(null);
91
+ onOpenChange(false);
92
+ }
93
+ return (_jsx(Dialog, { open: open, onOpenChange: (isOpen) => {
94
+ if (!isOpen) {
95
+ handleCancel();
96
+ }
97
+ }, children: _jsxs(DialogContent, { className: "max-w-3xl", onCloseAutoFocus: (e) => e.preventDefault(), children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: "Select Folder" }), _jsx(DialogDescription, { className: "truncate font-mono text-xs", children: currentPath || 'Loading...' })] }), _jsx("div", { className: "h-[400px] w-full overflow-hidden rounded-md border", children: _jsx(FileManager, { files: toFileManagerFiles(entries), isLoading: isLoading, height: "400px", width: "100%", layout: "list", enableFilePreview: false, permissions: {
98
+ upload: false,
99
+ delete: false,
100
+ create: false,
101
+ download: false,
102
+ copy: false,
103
+ move: false,
104
+ rename: false,
105
+ }, onFileOpen: handleFileOpen, onSelectionChange: handleSelectionChange }) }), _jsxs(DialogFooter, { children: [_jsx(Button, { variant: "outline", onClick: handleCancel, children: "Cancel" }), _jsx(Button, { variant: "secondary", onClick: handleSelectCurrentPath, disabled: !currentPath, children: "Select Current Folder" }), _jsx(Button, { onClick: handleSelect, disabled: !selectedPath, children: "Select Folder" })] })] }) }));
106
+ }
@@ -0,0 +1,9 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { ReactFileManagerDialog } from './react-file-manager-dialog.js';
3
+ declare const meta: Meta<typeof ReactFileManagerDialog>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof ReactFileManagerDialog>;
6
+ export declare const Default: Story;
7
+ export declare const WithInitialPath: Story;
8
+ export declare const Closed: Story;
9
+ //# sourceMappingURL=react-file-manager-dialog.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-file-manager-dialog.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/react-file-manager-dialog/react-file-manager-dialog.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,sBAAsB,CAY7C,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAErD,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC,eAAO,MAAM,eAAe,EAAE,KAI7B,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAIpB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { fn } from '@storybook/test';
2
+ import { ReactFileManagerDialog } from './react-file-manager-dialog.js';
3
+ const meta = {
4
+ title: 'Composed/ReactFileManagerDialog',
5
+ component: ReactFileManagerDialog,
6
+ tags: ['autodocs'],
7
+ parameters: {
8
+ layout: 'centered',
9
+ },
10
+ args: {
11
+ open: true,
12
+ onOpenChange: fn().mockName('onOpenChange'),
13
+ onSelect: fn().mockName('onSelect'),
14
+ },
15
+ };
16
+ export default meta;
17
+ export const Default = {};
18
+ export const WithInitialPath = {
19
+ args: {
20
+ initialPath: '/tmp',
21
+ },
22
+ };
23
+ export const Closed = {
24
+ args: {
25
+ open: false,
26
+ },
27
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"repository-drawer.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/repository-node/repository-drawer.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAGnE,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAChC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,qBAAqB,2CAwGxE"}
1
+ {"version":3,"file":"repository-drawer.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/repository-node/repository-drawer.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAGnE,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAChC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,qBAAqB,2CA+ExE"}
@@ -1,24 +1,22 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import { useCallback } from 'react';
4
- import { Code2, Terminal, FolderOpen, RefreshCw } from 'lucide-react';
4
+ import { Code2, Terminal, FolderOpen } from 'lucide-react';
5
5
  import { BaseDrawer } from '../../common/base-drawer/index.js';
6
6
  import { DrawerTitle, DrawerDescription } from '../../ui/drawer.js';
7
7
  import { Separator } from '../../ui/separator.js';
8
8
  import { ActionButton } from '../../common/action-button/index.js';
9
- import { useFeatureFlags } from '../../../hooks/feature-flags-context.js';
10
9
  import { useRepositoryActions } from './use-repository-actions.js';
11
10
  export function RepositoryDrawer({ data, onClose }) {
12
- const featureFlags = useFeatureFlags();
13
11
  const handleClose = useCallback(() => {
14
12
  onClose();
15
13
  }, [onClose]);
16
- const actions = useRepositoryActions(data?.repositoryPath ? { repositoryId: data.id, repositoryPath: data.repositoryPath } : null);
14
+ const actions = useRepositoryActions(data?.repositoryPath ? { repositoryPath: data.repositoryPath } : null);
17
15
  return (_jsx(BaseDrawer, { open: data !== null, onClose: handleClose, size: "md", modal: false, "data-testid": "repository-drawer", deployTarget: data?.repositoryPath
18
16
  ? {
19
17
  targetId: data.repositoryPath,
20
18
  targetType: 'repository',
21
19
  repositoryPath: data.repositoryPath,
22
20
  }
23
- : undefined, header: data ? (_jsxs("div", { "data-testid": "repository-drawer-header", children: [_jsx(DrawerTitle, { children: data.name }), data.repositoryPath ? (_jsx(DrawerDescription, { className: "truncate font-mono text-xs", children: data.repositoryPath })) : null] })) : undefined, children: data?.repositoryPath ? (_jsxs(_Fragment, { children: [_jsx(Separator, {}), _jsxs("div", { className: "flex flex-col gap-3 p-4", children: [_jsx("div", { className: "text-muted-foreground text-xs font-semibold tracking-wider", children: "OPEN WITH" }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(ActionButton, { label: "Open in IDE", onClick: actions.openInIde, loading: actions.ideLoading, error: !!actions.ideError, icon: Code2, variant: "outline", size: "sm" }), _jsx(ActionButton, { label: "Open in Shell", onClick: actions.openInShell, loading: actions.shellLoading, error: !!actions.shellError, icon: Terminal, variant: "outline", size: "sm" }), _jsx(ActionButton, { label: "Open Folder", onClick: actions.openFolder, loading: actions.folderLoading, error: !!actions.folderError, icon: FolderOpen, variant: "outline", size: "sm" })] })] }), data.id && featureFlags.gitRebaseSync ? (_jsxs(_Fragment, { children: [_jsx(Separator, {}), _jsxs("div", { className: "flex flex-col gap-3 p-4", children: [_jsx("div", { className: "text-muted-foreground text-xs font-semibold tracking-wider", children: "GIT OPERATIONS" }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(ActionButton, { label: "Sync Main", onClick: actions.syncMain, loading: actions.syncLoading, error: !!actions.syncError, icon: RefreshCw, variant: "outline", size: "sm" }), actions.syncError ? (_jsx("p", { className: "text-destructive text-xs", children: actions.syncError })) : null] })] })] })) : null] })) : null }));
21
+ : undefined, header: data ? (_jsxs("div", { "data-testid": "repository-drawer-header", children: [_jsx(DrawerTitle, { children: data.name }), data.repositoryPath ? (_jsx(DrawerDescription, { className: "truncate font-mono text-xs", children: data.repositoryPath })) : null] })) : undefined, children: data?.repositoryPath ? (_jsxs(_Fragment, { children: [_jsx(Separator, {}), _jsxs("div", { className: "flex flex-col gap-3 p-4", children: [_jsx("div", { className: "text-muted-foreground text-xs font-semibold tracking-wider", children: "OPEN WITH" }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(ActionButton, { label: "Open in IDE", onClick: actions.openInIde, loading: actions.ideLoading, error: !!actions.ideError, icon: Code2, variant: "outline", size: "sm" }), _jsx(ActionButton, { label: "Open in Shell", onClick: actions.openInShell, loading: actions.shellLoading, error: !!actions.shellError, icon: Terminal, variant: "outline", size: "sm" }), _jsx(ActionButton, { label: "Open Folder", onClick: actions.openFolder, loading: actions.folderLoading, error: !!actions.folderError, icon: FolderOpen, variant: "outline", size: "sm" })] })] })] })) : null }));
24
22
  }
@@ -17,7 +17,7 @@ export function RepositoryNode({ data }) {
17
17
  const router = useRouter();
18
18
  const featureFlags = useFeatureFlags();
19
19
  const [confirmOpen, setConfirmOpen] = useState(false);
20
- const actions = useRepositoryActions(data.repositoryPath ? { repositoryId: data.id, repositoryPath: data.repositoryPath } : null);
20
+ const actions = useRepositoryActions(data.repositoryPath ? { repositoryPath: data.repositoryPath } : null);
21
21
  const deployAction = useDeployAction(data.repositoryPath
22
22
  ? {
23
23
  targetId: data.repositoryPath,
@@ -1,20 +1,16 @@
1
1
  export interface RepositoryActionsInput {
2
- repositoryId?: string;
3
2
  repositoryPath: string;
4
3
  }
5
4
  export interface RepositoryActionsState {
6
5
  openInIde: () => Promise<void>;
7
6
  openInShell: () => Promise<void>;
8
7
  openFolder: () => Promise<void>;
9
- syncMain: () => Promise<void>;
10
8
  ideLoading: boolean;
11
9
  shellLoading: boolean;
12
10
  folderLoading: boolean;
13
- syncLoading: boolean;
14
11
  ideError: string | null;
15
12
  shellError: string | null;
16
13
  folderError: string | null;
17
- syncError: string | null;
18
14
  }
19
15
  export declare function useRepositoryActions(input: RepositoryActionsInput | null): RepositoryActionsState;
20
16
  //# sourceMappingURL=use-repository-actions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-repository-actions.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/repository-node/use-repository-actions.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,sBAAsB;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAID,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI,GAAG,sBAAsB,CA6HjG"}
1
+ {"version":3,"file":"use-repository-actions.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/repository-node/use-repository-actions.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAID,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI,GAAG,sBAAsB,CAyGjG"}
@@ -3,27 +3,22 @@ import { useState, useCallback, useRef, useEffect } from 'react';
3
3
  import { openIde } from '../../../app/actions/open-ide.js';
4
4
  import { openShell } from '../../../app/actions/open-shell.js';
5
5
  import { openFolder } from '../../../app/actions/open-folder.js';
6
- import { syncRepository } from '../../../app/actions/sync-repository.js';
7
6
  const ERROR_CLEAR_DELAY = 5000;
8
7
  export function useRepositoryActions(input) {
9
8
  const [ideLoading, setIdeLoading] = useState(false);
10
9
  const [shellLoading, setShellLoading] = useState(false);
11
10
  const [folderLoading, setFolderLoading] = useState(false);
12
- const [syncLoading, setSyncLoading] = useState(false);
13
11
  const [ideError, setIdeError] = useState(null);
14
12
  const [shellError, setShellError] = useState(null);
15
13
  const [folderError, setFolderError] = useState(null);
16
- const [syncError, setSyncError] = useState(null);
17
14
  const ideTimerRef = useRef(null);
18
15
  const shellTimerRef = useRef(null);
19
16
  const folderTimerRef = useRef(null);
20
- const syncTimerRef = useRef(null);
21
17
  // Clear timers on unmount
22
18
  useEffect(() => {
23
19
  const ideRef = ideTimerRef;
24
20
  const shellRef = shellTimerRef;
25
21
  const folderRef = folderTimerRef;
26
- const syncRef = syncTimerRef;
27
22
  return () => {
28
23
  if (ideRef.current)
29
24
  clearTimeout(ideRef.current);
@@ -31,8 +26,6 @@ export function useRepositoryActions(input) {
31
26
  clearTimeout(shellRef.current);
32
27
  if (folderRef.current)
33
28
  clearTimeout(folderRef.current);
34
- if (syncRef.current)
35
- clearTimeout(syncRef.current);
36
29
  };
37
30
  }, []);
38
31
  const performAction = useCallback(async (action, setLoading, setError, timerRef, isLoading) => {
@@ -62,19 +55,15 @@ export function useRepositoryActions(input) {
62
55
  const handleOpenIde = useCallback(() => performAction(() => openIde({ repositoryPath: input.repositoryPath }), setIdeLoading, setIdeError, ideTimerRef, ideLoading), [performAction, ideLoading, input]);
63
56
  const handleOpenShell = useCallback(() => performAction(() => openShell({ repositoryPath: input.repositoryPath }), setShellLoading, setShellError, shellTimerRef, shellLoading), [performAction, shellLoading, input]);
64
57
  const handleOpenFolder = useCallback(() => performAction(() => openFolder(input.repositoryPath), setFolderLoading, setFolderError, folderTimerRef, folderLoading), [performAction, folderLoading, input]);
65
- const handleSyncMain = useCallback(() => performAction(() => syncRepository(input.repositoryId ?? ''), setSyncLoading, setSyncError, syncTimerRef, syncLoading), [performAction, syncLoading, input]);
66
58
  return {
67
59
  openInIde: handleOpenIde,
68
60
  openInShell: handleOpenShell,
69
61
  openFolder: handleOpenFolder,
70
- syncMain: handleSyncMain,
71
62
  ideLoading,
72
63
  shellLoading,
73
64
  folderLoading,
74
- syncLoading,
75
65
  ideError,
76
66
  shellError,
77
67
  folderError,
78
- syncError,
79
68
  };
80
69
  }
@@ -1 +1 @@
1
- {"version":3,"file":"control-center-empty-state.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/control-center/control-center-empty-state.tsx"],"names":[],"mappings":"AAoBA,MAAM,WAAW,4BAA4B;IAC3C,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,wBAAgB,uBAAuB,CAAC,EACtC,kBAAkB,EAClB,SAAS,GACV,EAAE,4BAA4B,kDA8J9B"}
1
+ {"version":3,"file":"control-center-empty-state.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/control-center/control-center-empty-state.tsx"],"names":[],"mappings":"AAsBA,MAAM,WAAW,4BAA4B;IAC3C,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,wBAAgB,uBAAuB,CAAC,EACtC,kBAAkB,EAClB,SAAS,GACV,EAAE,4BAA4B,kDAuL9B"}