@shepai/cli 1.130.1-pr396.844e95f → 1.130.1-pr420.4dd61bd

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 (276) hide show
  1. package/apis/json-schema/FeatureFlags.yaml +0 -5
  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.d.ts.map +1 -1
  6. package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +0 -1
  7. package/dist/packages/core/src/domain/generated/output.d.ts +0 -4
  8. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  9. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  10. package/dist/packages/core/src/infrastructure/di/container.js +0 -15
  11. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +0 -1
  12. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
  13. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +0 -2
  14. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
  15. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +2 -3
  16. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/ci-watch-fix-loop.d.ts.map +1 -1
  17. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/ci-watch-fix-loop.js +34 -3
  18. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts +0 -6
  19. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts.map +1 -1
  20. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.js +0 -134
  21. package/dist/src/presentation/web/app/(dashboard)/get-graph-data.d.ts.map +1 -1
  22. package/dist/src/presentation/web/app/(dashboard)/get-graph-data.js +12 -5
  23. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.d.ts.map +1 -1
  24. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.js +1 -2
  25. package/dist/src/presentation/web/components/common/control-center-drawer/repository-drawer-client.d.ts.map +1 -1
  26. package/dist/src/presentation/web/components/common/control-center-drawer/repository-drawer-client.js +4 -4
  27. package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.d.ts +0 -4
  28. package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.d.ts.map +1 -1
  29. package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.js +1 -32
  30. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts +1 -4
  31. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts.map +1 -1
  32. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.js +2 -2
  33. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.d.ts +1 -4
  34. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.d.ts.map +1 -1
  35. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.js +3 -8
  36. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.d.ts +0 -6
  37. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.d.ts.map +1 -1
  38. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.js +0 -30
  39. package/dist/src/presentation/web/components/common/open-action-menu/open-action-menu.stories.d.ts.map +1 -1
  40. package/dist/src/presentation/web/components/common/open-action-menu/open-action-menu.stories.js +0 -3
  41. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.d.ts.map +1 -1
  42. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.js +3 -5
  43. package/dist/src/presentation/web/components/common/repository-node/repository-node.js +1 -1
  44. package/dist/src/presentation/web/components/common/repository-node/use-repository-actions.d.ts +0 -4
  45. package/dist/src/presentation/web/components/common/repository-node/use-repository-actions.d.ts.map +1 -1
  46. package/dist/src/presentation/web/components/common/repository-node/use-repository-actions.js +0 -11
  47. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.d.ts.map +1 -1
  48. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.js +0 -3
  49. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.d.ts.map +1 -1
  50. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.js +0 -3
  51. package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
  52. package/dist/src/presentation/web/components/features/settings/settings-page-client.js +0 -5
  53. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.d.ts.map +1 -1
  54. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.js +0 -1
  55. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.d.ts.map +1 -1
  56. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.js +0 -1
  57. package/dist/src/presentation/web/hooks/feature-flags-context.d.ts.map +1 -1
  58. package/dist/src/presentation/web/hooks/feature-flags-context.js +0 -1
  59. package/dist/src/presentation/web/lib/feature-flags.d.ts +0 -2
  60. package/dist/src/presentation/web/lib/feature-flags.d.ts.map +1 -1
  61. package/dist/src/presentation/web/lib/feature-flags.js +0 -5
  62. package/dist/tsconfig.build.tsbuildinfo +1 -1
  63. package/package.json +1 -1
  64. package/web/.next/BUILD_ID +1 -1
  65. package/web/.next/build-manifest.json +2 -2
  66. package/web/.next/fallback-build-manifest.json +2 -2
  67. package/web/.next/prerender-manifest.json +3 -3
  68. package/web/.next/required-server-files.js +1 -1
  69. package/web/.next/required-server-files.json +1 -1
  70. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +48 -63
  71. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +2 -2
  72. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  73. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  74. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +48 -63
  75. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +2 -2
  76. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  77. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  78. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +60 -90
  79. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +2 -2
  80. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  81. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  82. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +60 -90
  83. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +2 -2
  84. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  85. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  86. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +44 -59
  87. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +2 -2
  88. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  89. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  90. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +48 -63
  91. package/web/.next/server/app/(dashboard)/create/page.js +2 -2
  92. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  93. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  94. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +60 -90
  95. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +2 -2
  96. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  97. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  98. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +60 -90
  99. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +2 -2
  100. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  101. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  102. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +44 -59
  103. package/web/.next/server/app/(dashboard)/page.js +2 -2
  104. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  105. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  106. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +44 -59
  107. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +2 -2
  108. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  109. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  110. package/web/.next/server/app/_global-error.html +2 -2
  111. package/web/.next/server/app/_global-error.rsc +1 -1
  112. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  113. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  114. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  115. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  116. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  117. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +3 -3
  118. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  119. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  120. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  121. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  122. package/web/.next/server/app/settings/page/server-reference-manifest.json +8 -8
  123. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  124. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  125. package/web/.next/server/app/skills/page/server-reference-manifest.json +8 -8
  126. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  127. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  128. package/web/.next/server/app/tools/page/server-reference-manifest.json +8 -8
  129. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  130. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  131. package/web/.next/server/app/version/page/server-reference-manifest.json +3 -3
  132. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  133. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js +1 -1
  134. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js.map +1 -1
  135. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  136. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
  137. package/web/.next/server/chunks/[root-of-the-server]__d1dc8fcd._.js.map +1 -1
  138. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4e741df2.js +3 -0
  139. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4e741df2.js.map +1 -0
  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/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_026fdffa.js +3 -0
  143. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_026fdffa.js.map +1 -0
  144. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_8b91e197.js +3 -0
  145. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_8b91e197.js.map +1 -0
  146. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  147. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js +1 -1
  148. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js.map +1 -1
  149. package/web/.next/server/chunks/ssr/[root-of-the-server]__5142820f._.js +2 -2
  150. package/web/.next/server/chunks/ssr/[root-of-the-server]__5142820f._.js.map +1 -1
  151. package/web/.next/server/chunks/ssr/[root-of-the-server]__57018345._.js.map +1 -1
  152. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js +2 -2
  153. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js.map +1 -1
  154. package/web/.next/server/chunks/ssr/[root-of-the-server]__755cfe02._.js +3 -0
  155. package/web/.next/server/chunks/ssr/[root-of-the-server]__755cfe02._.js.map +1 -0
  156. package/web/.next/server/chunks/ssr/[root-of-the-server]__7894f27f._.js +1 -1
  157. package/web/.next/server/chunks/ssr/[root-of-the-server]__7894f27f._.js.map +1 -1
  158. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js +1 -1
  159. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js.map +1 -1
  160. package/web/.next/server/chunks/ssr/[root-of-the-server]__84f72684._.js +1 -1
  161. package/web/.next/server/chunks/ssr/[root-of-the-server]__99ab2519._.js +4 -0
  162. package/web/.next/server/chunks/ssr/[root-of-the-server]__99ab2519._.js.map +1 -0
  163. package/web/.next/server/chunks/ssr/[root-of-the-server]__a628fb91._.js +3 -0
  164. package/web/.next/server/chunks/ssr/[root-of-the-server]__a628fb91._.js.map +1 -0
  165. package/web/.next/server/chunks/ssr/[root-of-the-server]__bfba58e6._.js +3 -0
  166. package/web/.next/server/chunks/ssr/[root-of-the-server]__bfba58e6._.js.map +1 -0
  167. package/web/.next/server/chunks/ssr/[root-of-the-server]__c3ab8422._.js +3 -0
  168. package/web/.next/server/chunks/ssr/[root-of-the-server]__c3ab8422._.js.map +1 -0
  169. package/web/.next/server/chunks/ssr/_0020fddd._.js +1 -1
  170. package/web/.next/server/chunks/ssr/_0020fddd._.js.map +1 -1
  171. package/web/.next/server/chunks/ssr/_02ec1aea._.js +1 -1
  172. package/web/.next/server/chunks/ssr/_02ec1aea._.js.map +1 -1
  173. package/web/.next/server/chunks/ssr/_23e3d943._.js +3 -0
  174. package/web/.next/server/chunks/ssr/_23e3d943._.js.map +1 -0
  175. package/web/.next/server/chunks/ssr/_7dca1882._.js +1 -1
  176. package/web/.next/server/chunks/ssr/_7dca1882._.js.map +1 -1
  177. package/web/.next/server/chunks/ssr/_a37f5f18._.js +1 -1
  178. package/web/.next/server/chunks/ssr/_a37f5f18._.js.map +1 -1
  179. package/web/.next/server/chunks/ssr/_a9f57758._.js +1 -1
  180. package/web/.next/server/chunks/ssr/_a9f57758._.js.map +1 -1
  181. package/web/.next/server/chunks/ssr/{_140d896d._.js → _b879f068._.js} +2 -2
  182. package/web/.next/server/chunks/ssr/{_140d896d._.js.map → _b879f068._.js.map} +1 -1
  183. package/web/.next/server/chunks/ssr/_d4b20e29._.js.map +1 -1
  184. package/web/.next/server/chunks/ssr/_d8575088._.js +1 -1
  185. package/web/.next/server/chunks/ssr/_d8575088._.js.map +1 -1
  186. package/web/.next/server/chunks/ssr/_f39a1adb._.js +1 -1
  187. package/web/.next/server/chunks/ssr/_f39a1adb._.js.map +1 -1
  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_1c9cbdd9._.js +3 -0
  193. package/web/.next/server/chunks/ssr/{src_presentation_web_e0b3ea67._.js.map → src_presentation_web_1c9cbdd9._.js.map} +1 -1
  194. package/web/.next/server/chunks/ssr/src_presentation_web_8e7fe0d1._.js +5 -0
  195. package/web/.next/server/chunks/ssr/src_presentation_web_8e7fe0d1._.js.map +1 -0
  196. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_ca051134.js +3 -0
  197. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_ca051134.js.map +1 -0
  198. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js +1 -1
  199. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js.map +1 -1
  200. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js +1 -1
  201. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js.map +1 -1
  202. package/web/.next/server/chunks/ssr/src_presentation_web_b9023017._.js +5 -0
  203. package/web/.next/server/chunks/ssr/src_presentation_web_b9023017._.js.map +1 -0
  204. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
  205. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js.map +1 -1
  206. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  207. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  208. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  209. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  210. package/web/.next/server/pages/500.html +2 -2
  211. package/web/.next/server/server-reference-manifest.js +1 -1
  212. package/web/.next/server/server-reference-manifest.json +296 -410
  213. package/web/.next/static/chunks/{4c141b4e9a55bce7.js → 092458456c555020.js} +1 -1
  214. package/web/.next/static/chunks/{f070c67389a686ff.js → 0b7fe2ac4f078f54.js} +1 -1
  215. package/web/.next/static/chunks/{1abca3015dac5760.js → 1cbae981722e9201.js} +1 -1
  216. package/web/.next/static/chunks/{bb21c9f0d314b89b.js → 352b7d9a9fc5ada1.js} +1 -1
  217. package/web/.next/static/chunks/{c016b9d991594eef.js → 38105a14ee0ddd89.js} +1 -1
  218. package/web/.next/static/chunks/{67d61a2c2eba7344.js → 3e21681bdadb7b00.js} +1 -1
  219. package/web/.next/static/chunks/{ba4f86a38068e68f.js → 5a8116533498987f.js} +1 -1
  220. package/web/.next/static/chunks/{2a8589502f1a3fee.js → 693c48c0c6ec34d4.js} +1 -1
  221. package/web/.next/static/chunks/{3862a16b8161e178.js → 8127147881370b9d.js} +1 -1
  222. package/web/.next/static/chunks/{c329033db1c63a56.js → 9212a20a9b621944.js} +2 -2
  223. package/web/.next/static/chunks/{81b305ae4f28a883.js → b9f5045c5853c178.js} +1 -1
  224. package/web/.next/static/chunks/{30ebb9e7d1c85344.js → d4cd5c07092daccd.js} +1 -1
  225. package/web/.next/static/chunks/eb9841ec4d80af01.js +1 -0
  226. package/web/.next/static/chunks/{e9d1ed018e858117.js → f734a9949172d2b8.js} +2 -2
  227. package/dist/packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.d.ts +0 -28
  228. package/dist/packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.d.ts.map +0 -1
  229. package/dist/packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.js +0 -81
  230. package/dist/packages/core/src/application/use-cases/repositories/sync-repository-main.use-case.d.ts +0 -16
  231. package/dist/packages/core/src/application/use-cases/repositories/sync-repository-main.use-case.d.ts.map +0 -1
  232. package/dist/packages/core/src/application/use-cases/repositories/sync-repository-main.use-case.js +0 -43
  233. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/042-add-feature-flag-git-rebase-sync.d.ts +0 -11
  234. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/042-add-feature-flag-git-rebase-sync.d.ts.map +0 -1
  235. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/042-add-feature-flag-git-rebase-sync.js +0 -17
  236. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.prompt.d.ts +0 -35
  237. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.prompt.d.ts.map +0 -1
  238. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.prompt.js +0 -66
  239. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.d.ts +0 -42
  240. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.d.ts.map +0 -1
  241. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.js +0 -169
  242. package/dist/src/presentation/web/app/actions/rebase-feature.d.ts +0 -5
  243. package/dist/src/presentation/web/app/actions/rebase-feature.d.ts.map +0 -1
  244. package/dist/src/presentation/web/app/actions/rebase-feature.js +0 -16
  245. package/dist/src/presentation/web/app/actions/sync-repository.d.ts +0 -5
  246. package/dist/src/presentation/web/app/actions/sync-repository.d.ts.map +0 -1
  247. package/dist/src/presentation/web/app/actions/sync-repository.js +0 -16
  248. package/web/.next/server/chunks/ssr/[root-of-the-server]__39ecb785._.js +0 -4
  249. package/web/.next/server/chunks/ssr/[root-of-the-server]__39ecb785._.js.map +0 -1
  250. package/web/.next/server/chunks/ssr/[root-of-the-server]__465c0deb._.js +0 -4
  251. package/web/.next/server/chunks/ssr/[root-of-the-server]__465c0deb._.js.map +0 -1
  252. package/web/.next/server/chunks/ssr/[root-of-the-server]__8b6d1e18._.js +0 -4
  253. package/web/.next/server/chunks/ssr/[root-of-the-server]__8b6d1e18._.js.map +0 -1
  254. package/web/.next/server/chunks/ssr/[root-of-the-server]__8f6c27af._.js +0 -6
  255. package/web/.next/server/chunks/ssr/[root-of-the-server]__8f6c27af._.js.map +0 -1
  256. package/web/.next/server/chunks/ssr/[root-of-the-server]__910e9de5._.js +0 -4
  257. package/web/.next/server/chunks/ssr/[root-of-the-server]__910e9de5._.js.map +0 -1
  258. package/web/.next/server/chunks/ssr/[root-of-the-server]__a04af228._.js +0 -4
  259. package/web/.next/server/chunks/ssr/[root-of-the-server]__a04af228._.js.map +0 -1
  260. package/web/.next/server/chunks/ssr/[root-of-the-server]__a32728d0._.js +0 -4
  261. package/web/.next/server/chunks/ssr/[root-of-the-server]__a32728d0._.js.map +0 -1
  262. package/web/.next/server/chunks/ssr/[root-of-the-server]__d6ab9c36._.js +0 -6
  263. package/web/.next/server/chunks/ssr/[root-of-the-server]__d6ab9c36._.js.map +0 -1
  264. package/web/.next/server/chunks/ssr/[root-of-the-server]__f2eb7d62._.js +0 -4
  265. package/web/.next/server/chunks/ssr/[root-of-the-server]__f2eb7d62._.js.map +0 -1
  266. package/web/.next/server/chunks/ssr/[root-of-the-server]__f3036814._.js +0 -4
  267. package/web/.next/server/chunks/ssr/[root-of-the-server]__f3036814._.js.map +0 -1
  268. package/web/.next/server/chunks/ssr/_b3f6e6e9._.js +0 -3
  269. package/web/.next/server/chunks/ssr/_b3f6e6e9._.js.map +0 -1
  270. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +0 -3
  271. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js.map +0 -1
  272. package/web/.next/server/chunks/ssr/src_presentation_web_e0b3ea67._.js +0 -3
  273. package/web/.next/static/chunks/bfda4e4194a4a633.js +0 -1
  274. /package/web/.next/static/{g-QN4RQQtXsVFedVM1Dcs → DSBFCa-a4aY0jxoIl6MKA}/_buildManifest.js +0 -0
  275. /package/web/.next/static/{g-QN4RQQtXsVFedVM1Dcs → DSBFCa-a4aY0jxoIl6MKA}/_clientMiddlewareManifest.json +0 -0
  276. /package/web/.next/static/{g-QN4RQQtXsVFedVM1Dcs → DSBFCa-a4aY0jxoIl6MKA}/_ssgManifest.js +0 -0
@@ -609,14 +609,6 @@ let GitPrService = class GitPrService {
609
609
  parseGitError(error) {
610
610
  const message = error instanceof Error ? error.message : String(error);
611
611
  const cause = error instanceof Error ? error : undefined;
612
- // Rebase-specific: detect "CONFLICT" during rebase operations
613
- if (message.includes('CONFLICT') && message.includes('rebase')) {
614
- return new GitPrError(message, GitPrErrorCode.REBASE_CONFLICT, cause);
615
- }
616
- // Sync-specific: non-fast-forward or diverged branch
617
- if (message.includes('non-fast-forward') || message.includes('diverged')) {
618
- return new GitPrError(message, GitPrErrorCode.SYNC_FAILED, cause);
619
- }
620
612
  if (message.includes('rejected') || message.includes('conflict')) {
621
613
  return new GitPrError(message, GitPrErrorCode.MERGE_CONFLICT, cause);
622
614
  }
@@ -657,132 +649,6 @@ let GitPrService = class GitPrService {
657
649
  commitCount,
658
650
  };
659
651
  }
660
- // --- Rebase & Sync operations ---
661
- async syncMain(cwd, baseBranch) {
662
- try {
663
- // Detect current branch
664
- const { stdout } = await this.execFile('git', ['rev-parse', '--abbrev-ref', 'HEAD'], { cwd });
665
- const currentBranch = stdout.trim();
666
- if (currentBranch === baseBranch) {
667
- // On the base branch — use git pull --ff-only
668
- await this.execFile('git', ['pull', '--ff-only', 'origin', baseBranch], { cwd });
669
- }
670
- else {
671
- // On a different branch — fetch the remote ref only (updates origin/<baseBranch>).
672
- // We intentionally do NOT update the local <baseBranch> ref because it may be
673
- // checked out in another worktree, which causes git to refuse the update with:
674
- // "fatal: refusing to fetch into branch 'refs/heads/main' checked out at ..."
675
- await this.execFile('git', ['fetch', 'origin', baseBranch], { cwd });
676
- }
677
- }
678
- catch (error) {
679
- const message = error instanceof Error ? error.message : String(error);
680
- const cause = error instanceof Error ? error : undefined;
681
- if (message.includes('non-fast-forward') ||
682
- message.includes('Not possible to fast-forward') ||
683
- message.includes('diverged')) {
684
- throw new GitPrError(`Cannot fast-forward '${baseBranch}': local branch has diverged from remote. ` +
685
- `Resolve the divergence manually with 'git checkout ${baseBranch} && git reset --hard origin/${baseBranch}' ` +
686
- `if you want to discard local changes on ${baseBranch}.`, GitPrErrorCode.SYNC_FAILED, cause);
687
- }
688
- throw new GitPrError(`Failed to sync '${baseBranch}' with remote: ${message}`, GitPrErrorCode.GIT_ERROR, cause);
689
- }
690
- }
691
- async rebaseOnMain(cwd, featureBranch, baseBranch) {
692
- // Check for dirty worktree before starting
693
- const dirty = await this.hasUncommittedChanges(cwd);
694
- if (dirty) {
695
- throw new GitPrError(`Cannot rebase: working directory has uncommitted changes. ` +
696
- `Please commit or stash your changes before rebasing.`, GitPrErrorCode.GIT_ERROR);
697
- }
698
- // Checkout the feature branch
699
- try {
700
- await this.execFile('git', ['checkout', featureBranch], { cwd });
701
- }
702
- catch (error) {
703
- const message = error instanceof Error ? error.message : String(error);
704
- const cause = error instanceof Error ? error : undefined;
705
- if (message.includes('did not match') ||
706
- message.includes('not a commit') ||
707
- message.includes('pathspec')) {
708
- throw new GitPrError(`Branch '${featureBranch}' not found.`, GitPrErrorCode.BRANCH_NOT_FOUND, cause);
709
- }
710
- throw new GitPrError(`Failed to checkout '${featureBranch}': ${message}`, GitPrErrorCode.GIT_ERROR, cause);
711
- }
712
- // Rebase onto origin/<baseBranch> (the remote-tracking ref).
713
- // We use origin/<baseBranch> rather than the local <baseBranch> because:
714
- // 1. syncMain fetches origin/<baseBranch> — it's always up-to-date
715
- // 2. The local <baseBranch> may be checked out in another worktree and stale
716
- const rebaseTarget = `origin/${baseBranch}`;
717
- try {
718
- await this.execFile('git', ['rebase', rebaseTarget], { cwd });
719
- }
720
- catch (error) {
721
- const message = error instanceof Error ? error.message : String(error);
722
- const cause = error instanceof Error ? error : undefined;
723
- // Detect rebase conflict from git stderr/exit code
724
- if (message.includes('CONFLICT') || message.includes('could not apply')) {
725
- // Get the list of conflicted files to include in the error message
726
- let conflictedFiles = [];
727
- try {
728
- conflictedFiles = await this.getConflictedFiles(cwd);
729
- }
730
- catch {
731
- // Failed to get conflicted files — still report the conflict
732
- }
733
- const fileList = conflictedFiles.length > 0 ? ` Conflicted files: ${conflictedFiles.join(', ')}` : '';
734
- throw new GitPrError(`Rebase of '${featureBranch}' onto '${baseBranch}' encountered conflicts.${fileList}`, GitPrErrorCode.REBASE_CONFLICT, cause);
735
- }
736
- throw new GitPrError(`Rebase of '${featureBranch}' onto '${baseBranch}' failed: ${message}`, GitPrErrorCode.GIT_ERROR, cause);
737
- }
738
- }
739
- async getConflictedFiles(cwd) {
740
- try {
741
- const { stdout } = await this.execFile('git', ['diff', '--name-only', '--diff-filter=U'], {
742
- cwd,
743
- });
744
- return stdout
745
- .trim()
746
- .split('\n')
747
- .filter((f) => f.length > 0)
748
- .map((f) => f.replace(/\\/g, '/'));
749
- }
750
- catch (error) {
751
- throw this.parseGitError(error);
752
- }
753
- }
754
- async stageFiles(cwd, files) {
755
- try {
756
- await this.execFile('git', ['add', ...files], { cwd });
757
- }
758
- catch (error) {
759
- throw this.parseGitError(error);
760
- }
761
- }
762
- async rebaseContinue(cwd) {
763
- try {
764
- await this.execFile('git', ['rebase', '--continue'], {
765
- cwd,
766
- env: { ...process.env, GIT_EDITOR: 'true' },
767
- });
768
- }
769
- catch (error) {
770
- const message = error instanceof Error ? error.message : String(error);
771
- const cause = error instanceof Error ? error : undefined;
772
- if (message.includes('CONFLICT') || message.includes('could not apply')) {
773
- throw new GitPrError(`Rebase continue encountered new conflicts: ${message}`, GitPrErrorCode.REBASE_CONFLICT, cause);
774
- }
775
- throw this.parseGitError(error);
776
- }
777
- }
778
- async rebaseAbort(cwd) {
779
- try {
780
- await this.execFile('git', ['rebase', '--abort'], { cwd });
781
- }
782
- catch (error) {
783
- throw this.parseGitError(error);
784
- }
785
- }
786
652
  };
787
653
  GitPrService = __decorate([
788
654
  injectable(),
@@ -1 +1 @@
1
- {"version":3,"file":"get-graph-data.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/(dashboard)/get-graph-data.ts"],"names":[],"mappings":"AAYA,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,CA6DxF"}
1
+ {"version":3,"file":"get-graph-data.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/(dashboard)/get-graph-data.ts"],"names":[],"mappings":"AAYA,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;AAwFD,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,CA6DxF"}
@@ -31,7 +31,13 @@ async function refreshRepoGitInfo(repo) {
31
31
  gitInfoCache.set(repo.path, { kind: 'not-a-repo', checkedAt: Date.now() });
32
32
  return;
33
33
  }
34
- // Fetch branch + subject & author in parallel
34
+ const cached = gitInfoCache.get(repo.path);
35
+ if (cached?.kind === 'repo' && cached.sha === headSha) {
36
+ // HEAD unchanged — just bump checkedAt
37
+ cached.checkedAt = Date.now();
38
+ return;
39
+ }
40
+ // HEAD changed — fetch branch + subject & author in parallel
35
41
  const [currentBranch, logLine] = await Promise.all([
36
42
  gitCommand(repo.path, ['symbolic-ref', '--short', 'HEAD']),
37
43
  gitCommand(repo.path, ['log', '-1', `--format=%s${FIELD_SEP}%an`]),
@@ -39,8 +45,7 @@ async function refreshRepoGitInfo(repo) {
39
45
  if (!currentBranch)
40
46
  return;
41
47
  const [commitMessage, committer] = (logLine ?? '').split(FIELD_SEP);
42
- // Behind count — always compute, even when on the default branch,
43
- // because local main can be behind origin/main.
48
+ // Behind count
44
49
  let behindCount = null;
45
50
  const defaultBranchRef = await gitCommand(repo.path, [
46
51
  'symbolic-ref',
@@ -48,8 +53,7 @@ async function refreshRepoGitInfo(repo) {
48
53
  'refs/remotes/origin/HEAD',
49
54
  ]);
50
55
  const defaultBranch = defaultBranchRef?.replace('origin/', '') ?? null;
51
- if (defaultBranch) {
52
- // Compare current branch (or default branch itself) against origin
56
+ if (defaultBranch && currentBranch !== defaultBranch) {
53
57
  const behind = await gitCommand(repo.path, [
54
58
  'rev-list',
55
59
  '--count',
@@ -59,6 +63,9 @@ async function refreshRepoGitInfo(repo) {
59
63
  if (isNaN(behindCount))
60
64
  behindCount = null;
61
65
  }
66
+ else {
67
+ behindCount = 0;
68
+ }
62
69
  gitInfoCache.set(repo.path, {
63
70
  kind: 'repo',
64
71
  sha: headSha,
@@ -1 +1 @@
1
- {"version":3,"file":"feature-drawer-client.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/control-center-drawer/feature-drawer-client.tsx"],"names":[],"mappings":"AAuCA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAI/D,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,UAAU,CAAC;IACjB,8FAA8F;IAC9F,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,wBAAgB,mBAAmB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,wBAAwB,2CAkmB1F"}
1
+ {"version":3,"file":"feature-drawer-client.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/control-center-drawer/feature-drawer-client.tsx"],"names":[],"mappings":"AAuCA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAI/D,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,UAAU,CAAC;IACjB,8FAA8F;IAC9F,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,wBAAgB,mBAAmB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,wBAAwB,2CA8lB1F"}
@@ -319,7 +319,6 @@ export function FeatureDrawerClient({ view: initialView, urlTab }) {
319
319
  // ── Hooks (always called unconditionally per Rules of Hooks) ──────────
320
320
  const featureActionsInput = featureNode?.repositoryPath && featureNode?.branch
321
321
  ? {
322
- featureId: featureNode.featureId,
323
322
  repositoryPath: featureNode.repositoryPath,
324
323
  branch: featureNode.branch,
325
324
  specPath: featureNode.specPath,
@@ -363,7 +362,7 @@ export function FeatureDrawerClient({ view: initialView, urlTab }) {
363
362
  ...(featureNode.state === 'error' && { onRetry: handleRetry }),
364
363
  ...(featureNode.state === 'pending' && { onStart: handleStart }),
365
364
  };
366
- body = (_jsx(FeatureDrawerTabs, { featureNode: enrichedNode, featureId: featureNode.featureId, initialTab: view.initialTab, urlTab: urlTab, sseEvents: events, prdData: prdData, prdSelections: prdSelections, onPrdSelect: (qId, oId) => setPrdSelections((prev) => ({ ...prev, [qId]: oId })), onPrdApprove: handlePrdApprove, onPrdReject: handlePrdReject, isPrdLoading: isLoadingPrd, techData: techData, onTechApprove: handleTechApprove, onTechReject: handleTechReject, isTechLoading: isLoadingTech, productData: isLoadingTechProduct ? null : techProductData, mergeData: mergeData, onMergeApprove: handleMergeApprove, onMergeReject: handleMergeReject, isMergeLoading: isLoadingMerge, onRebaseOnMain: featureFlags.gitRebaseSync ? featureActions.rebaseOnMain : undefined, rebaseLoading: featureActions.rebaseLoading, rebaseError: featureActions.rebaseError, isRejecting: isRejecting, chatInput: chatInput, onChatInputChange: setChatInput }));
365
+ body = (_jsx(FeatureDrawerTabs, { featureNode: enrichedNode, featureId: featureNode.featureId, initialTab: view.initialTab, urlTab: urlTab, sseEvents: events, prdData: prdData, prdSelections: prdSelections, onPrdSelect: (qId, oId) => setPrdSelections((prev) => ({ ...prev, [qId]: oId })), onPrdApprove: handlePrdApprove, onPrdReject: handlePrdReject, isPrdLoading: isLoadingPrd, techData: techData, onTechApprove: handleTechApprove, onTechReject: handleTechReject, isTechLoading: isLoadingTech, productData: isLoadingTechProduct ? null : techProductData, mergeData: mergeData, onMergeApprove: handleMergeApprove, onMergeReject: handleMergeReject, isMergeLoading: isLoadingMerge, isRejecting: isRejecting, chatInput: chatInput, onChatInputChange: setChatInput }));
367
366
  }
368
367
  return (_jsx(BaseDrawer, { open: isOpen, onClose: attemptClose, size: "md", modal: false, header: header, "data-testid": view.type === 'feature' ? 'feature-drawer' : 'repository-drawer', children: body }));
369
368
  }
@@ -1 +1 @@
1
- {"version":3,"file":"repository-drawer-client.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/control-center-drawer/repository-drawer-client.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAE9E,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,kBAAkB,CAAC;CAC1B;AAED,wBAAgB,sBAAsB,CAAC,EAAE,IAAI,EAAE,EAAE,2BAA2B,2CA2G3E"}
1
+ {"version":3,"file":"repository-drawer-client.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/control-center-drawer/repository-drawer-client.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAE9E,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,kBAAkB,CAAC;CAC1B;AAED,wBAAgB,sBAAsB,CAAC,EAAE,IAAI,EAAE,EAAE,2BAA2B,2CAmF3E"}
@@ -1,8 +1,8 @@
1
1
  'use client';
2
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useCallback } from 'react';
4
4
  import { useRouter, usePathname } from 'next/navigation';
5
- import { Code2, Terminal, FolderOpen, RefreshCw } from 'lucide-react';
5
+ import { Code2, Terminal, FolderOpen } from 'lucide-react';
6
6
  import { BaseDrawer } from '../../common/base-drawer/index.js';
7
7
  import { ActionButton } from '../../common/action-button/index.js';
8
8
  import { DrawerTitle, DrawerDescription } from '../../ui/drawer.js';
@@ -14,7 +14,7 @@ export function RepositoryDrawerClient({ data }) {
14
14
  const router = useRouter();
15
15
  const pathname = usePathname();
16
16
  const isOpen = pathname.startsWith('/repository/');
17
- const repoActions = useRepositoryActions(data.repositoryPath ? { repositoryId: data.id, repositoryPath: data.repositoryPath } : null);
17
+ const repoActions = useRepositoryActions(data.repositoryPath ? { repositoryPath: data.repositoryPath } : null);
18
18
  const onClose = useCallback(() => {
19
19
  router.push('/');
20
20
  }, [router]);
@@ -26,5 +26,5 @@ export function RepositoryDrawerClient({ data }) {
26
26
  }
27
27
  : undefined;
28
28
  const header = (_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] }));
29
- return (_jsx(BaseDrawer, { open: isOpen, onClose: onClose, size: "md", modal: false, header: header, deployTarget: featureFlags.envDeploy ? repoDeployTarget : undefined, "data-testid": "repository-drawer", children: data.repositoryPath ? (_jsxs("div", { className: "flex-1 overflow-y-auto", 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: repoActions.openInIde, loading: repoActions.ideLoading, error: !!repoActions.ideError, icon: Code2, variant: "outline", size: "sm" }), _jsx(ActionButton, { label: "Open in Shell", onClick: repoActions.openInShell, loading: repoActions.shellLoading, error: !!repoActions.shellError, icon: Terminal, variant: "outline", size: "sm" }), _jsx(ActionButton, { label: "Open Folder", onClick: repoActions.openFolder, loading: repoActions.folderLoading, error: !!repoActions.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: repoActions.syncMain, loading: repoActions.syncLoading, error: !!repoActions.syncError, icon: RefreshCw, variant: "outline", size: "sm" }), repoActions.syncError ? (_jsx("p", { className: "text-destructive text-xs", children: repoActions.syncError })) : null] })] })] })) : null] })) : null }));
29
+ return (_jsx(BaseDrawer, { open: isOpen, onClose: onClose, size: "md", modal: false, header: header, deployTarget: featureFlags.envDeploy ? repoDeployTarget : undefined, "data-testid": "repository-drawer", children: data.repositoryPath ? (_jsxs("div", { className: "flex-1 overflow-y-auto", 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: repoActions.openInIde, loading: repoActions.ideLoading, error: !!repoActions.ideError, icon: Code2, variant: "outline", size: "sm" }), _jsx(ActionButton, { label: "Open in Shell", onClick: repoActions.openInShell, loading: repoActions.shellLoading, error: !!repoActions.shellError, icon: Terminal, variant: "outline", size: "sm" }), _jsx(ActionButton, { label: "Open Folder", onClick: repoActions.openFolder, loading: repoActions.folderLoading, error: !!repoActions.folderError, icon: FolderOpen, variant: "outline", size: "sm" })] })] })] })) : null }));
30
30
  }
@@ -1,5 +1,4 @@
1
1
  export interface FeatureActionsInput {
2
- featureId: string;
3
2
  repositoryPath: string;
4
3
  branch: string;
5
4
  specPath?: string;
@@ -8,15 +7,12 @@ export interface FeatureActionsState {
8
7
  openInIde: () => Promise<void>;
9
8
  openInShell: () => Promise<void>;
10
9
  openSpecsFolder: () => Promise<void>;
11
- rebaseOnMain: () => Promise<void>;
12
10
  ideLoading: boolean;
13
11
  shellLoading: boolean;
14
12
  specsLoading: boolean;
15
- rebaseLoading: boolean;
16
13
  ideError: string | null;
17
14
  shellError: string | null;
18
15
  specsError: string | null;
19
- rebaseError: string | null;
20
16
  }
21
17
  export declare function useFeatureActions(input: FeatureActionsInput | null): FeatureActionsState;
22
18
  //# sourceMappingURL=use-feature-actions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-feature-actions.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-drawer/use-feature-actions.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAID,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,GAAG,mBAAmB,CA6IxF"}
1
+ {"version":3,"file":"use-feature-actions.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-drawer/use-feature-actions.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAID,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,GAAG,mBAAmB,CA8GxF"}
@@ -3,25 +3,21 @@ 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 { rebaseFeature } from '../../../app/actions/rebase-feature.js';
7
6
  const ERROR_CLEAR_DELAY = 5000;
8
7
  export function useFeatureActions(input) {
9
8
  const [ideLoading, setIdeLoading] = useState(false);
10
9
  const [shellLoading, setShellLoading] = useState(false);
11
10
  const [specsLoading, setSpecsLoading] = useState(false);
12
- const [rebaseLoading, setRebaseLoading] = useState(false);
13
11
  const [ideError, setIdeError] = useState(null);
14
12
  const [shellError, setShellError] = useState(null);
15
13
  const [specsError, setSpecsError] = useState(null);
16
- const [rebaseError, setRebaseError] = useState(null);
17
14
  const ideTimerRef = useRef(null);
18
15
  const shellTimerRef = useRef(null);
19
16
  const specsTimerRef = useRef(null);
20
- const rebaseTimerRef = useRef(null);
21
17
  // Clear timers on unmount — read .current inside cleanup so we get the
22
18
  // actual timer value at teardown time, not the always-null value at mount.
23
19
  useEffect(() => {
24
- const refs = [ideTimerRef, shellTimerRef, specsTimerRef, rebaseTimerRef];
20
+ const refs = [ideTimerRef, shellTimerRef, specsTimerRef];
25
21
  return () => {
26
22
  for (const ref of refs) {
27
23
  if (ref.current)
@@ -83,42 +79,15 @@ export function useFeatureActions(input) {
83
79
  setSpecsLoading(false);
84
80
  }
85
81
  }, [input, specsLoading]);
86
- const handleRebaseOnMain = useCallback(async () => {
87
- if (!input?.featureId || rebaseLoading)
88
- return;
89
- if (rebaseTimerRef.current)
90
- clearTimeout(rebaseTimerRef.current);
91
- setRebaseLoading(true);
92
- setRebaseError(null);
93
- try {
94
- const result = await rebaseFeature(input.featureId);
95
- if (!result.success) {
96
- const errorMessage = result.error ?? 'An unexpected error occurred';
97
- setRebaseError(errorMessage);
98
- rebaseTimerRef.current = setTimeout(() => setRebaseError(null), ERROR_CLEAR_DELAY);
99
- }
100
- }
101
- catch (err) {
102
- const errorMessage = err instanceof Error ? err.message : 'An unexpected error occurred';
103
- setRebaseError(errorMessage);
104
- rebaseTimerRef.current = setTimeout(() => setRebaseError(null), ERROR_CLEAR_DELAY);
105
- }
106
- finally {
107
- setRebaseLoading(false);
108
- }
109
- }, [input, rebaseLoading]);
110
82
  return {
111
83
  openInIde: handleOpenIde,
112
84
  openInShell: handleOpenShell,
113
85
  openSpecsFolder: handleOpenSpecsFolder,
114
- rebaseOnMain: handleRebaseOnMain,
115
86
  ideLoading,
116
87
  shellLoading,
117
88
  specsLoading,
118
- rebaseLoading,
119
89
  ideError,
120
90
  shellError,
121
91
  specsError,
122
- rebaseError,
123
92
  };
124
93
  }
@@ -29,12 +29,9 @@ export interface FeatureDrawerTabsProps {
29
29
  onMergeApprove?: () => void;
30
30
  onMergeReject?: (feedback: string, attachments: RejectAttachment[]) => void;
31
31
  isMergeLoading?: boolean;
32
- onRebaseOnMain?: () => void;
33
- rebaseLoading?: boolean;
34
- rebaseError?: string | null;
35
32
  isRejecting?: boolean;
36
33
  chatInput?: string;
37
34
  onChatInputChange?: (value: string) => void;
38
35
  }
39
- export declare 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, }: FeatureDrawerTabsProps): import("react/jsx-runtime").JSX.Element;
36
+ export declare 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, }: FeatureDrawerTabsProps): import("react/jsx-runtime").JSX.Element;
40
37
  //# sourceMappingURL=feature-drawer-tabs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"feature-drawer-tabs.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAS9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AACzF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAC;AACjG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAMxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAQ9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uDAAuD,CAAC;AAkD3F,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,eAAe,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,gFAAgF;IAChF,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,mFAAmF;IACnF,SAAS,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAGzC,OAAO,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,IAAI,CAAC;IAC1E,YAAY,CAAC,EAAE,OAAO,CAAC;IAGvB,QAAQ,CAAC,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAC1C,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,IAAI,CAAC;IAC3E,aAAa,CAAC,EAAE,OAAO,CAAC;IAGxB,WAAW,CAAC,EAAE,2BAA2B,GAAG,IAAI,CAAC;IAGjD,SAAS,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,IAAI,CAAC;IAC5E,cAAc,CAAC,EAAE,OAAO,CAAC;IAGzB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAG5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAwBD,wBAAgB,iBAAiB,CAAC,EAChC,WAAW,EACX,SAAS,EACT,UAAU,EACV,MAAM,EACN,OAAO,EACP,aAAa,EACb,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,aAAa,EACb,WAAW,EACX,SAAS,EACT,cAAc,EACd,aAAa,EACb,cAAc,EACd,cAAc,EACd,aAAa,EACb,WAAW,EACX,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,SAAS,GACV,EAAE,sBAAsB,2CA0VxB"}
1
+ {"version":3,"file":"feature-drawer-tabs.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAS9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AACzF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAC;AACjG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAMxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAQ9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uDAAuD,CAAC;AAkD3F,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,eAAe,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,gFAAgF;IAChF,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,mFAAmF;IACnF,SAAS,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAGzC,OAAO,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,IAAI,CAAC;IAC1E,YAAY,CAAC,EAAE,OAAO,CAAC;IAGvB,QAAQ,CAAC,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAC1C,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,IAAI,CAAC;IAC3E,aAAa,CAAC,EAAE,OAAO,CAAC;IAGxB,WAAW,CAAC,EAAE,2BAA2B,GAAG,IAAI,CAAC;IAGjD,SAAS,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,IAAI,CAAC;IAC5E,cAAc,CAAC,EAAE,OAAO,CAAC;IAGzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAwBD,wBAAgB,iBAAiB,CAAC,EAChC,WAAW,EACX,SAAS,EACT,UAAU,EACV,MAAM,EACN,OAAO,EACP,aAAa,EACb,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,aAAa,EACb,WAAW,EACX,SAAS,EACT,cAAc,EACd,aAAa,EACb,cAAc,EACd,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,SAAS,GACV,EAAE,sBAAsB,2CAqVxB"}
@@ -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: isMergeLoading ? (_jsx(Loader2, { className: "text-muted-foreground h-6 w-6 animate-spin" })) : (_jsxs("div", { className: "text-muted-foreground flex flex-col items-center gap-2 text-sm", children: [_jsx(AlertCircle, { className: "h-6 w-6" }), _jsx("span", { children: "Merge review data unavailable" })] })) })) })) : 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: isMergeLoading ? (_jsx(Loader2, { className: "text-muted-foreground h-6 w-6 animate-spin" })) : (_jsxs("div", { className: "text-muted-foreground flex flex-col items-center gap-2 text-sm", children: [_jsx(AlertCircle, { className: "h-6 w-6" }), _jsx("span", { children: "Merge review data unavailable" })] })) })) })) : 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 +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',
@@ -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"}