@shepai/cli 1.124.0-pr396.2dd2ae6 → 1.124.0-pr401.74b2155

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 (239) hide show
  1. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts +5 -68
  2. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts.map +1 -1
  3. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.js +4 -6
  4. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  5. package/dist/packages/core/src/infrastructure/di/container.js +0 -15
  6. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts +0 -6
  7. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts.map +1 -1
  8. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.js +0 -125
  9. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.d.ts.map +1 -1
  10. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.js +1 -2
  11. package/dist/src/presentation/web/components/common/control-center-drawer/repository-drawer-client.d.ts.map +1 -1
  12. package/dist/src/presentation/web/components/common/control-center-drawer/repository-drawer-client.js +20 -3
  13. package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.d.ts +0 -4
  14. package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.d.ts.map +1 -1
  15. package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.js +1 -32
  16. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts +1 -4
  17. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts.map +1 -1
  18. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.js +2 -2
  19. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.d.ts +1 -4
  20. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.d.ts.map +1 -1
  21. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.js +3 -8
  22. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.d.ts +0 -6
  23. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.d.ts.map +1 -1
  24. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.js +0 -30
  25. package/dist/src/presentation/web/components/common/open-action-menu/open-action-menu.stories.d.ts.map +1 -1
  26. package/dist/src/presentation/web/components/common/open-action-menu/open-action-menu.stories.js +0 -3
  27. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.d.ts.map +1 -1
  28. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.js +20 -3
  29. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.d.ts +5 -0
  30. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.d.ts.map +1 -1
  31. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.js +38 -9
  32. package/dist/src/presentation/web/components/common/repository-node/repository-node.js +1 -1
  33. package/dist/src/presentation/web/components/common/repository-node/use-repository-actions.d.ts +0 -4
  34. package/dist/src/presentation/web/components/common/repository-node/use-repository-actions.d.ts.map +1 -1
  35. package/dist/src/presentation/web/components/common/repository-node/use-repository-actions.js +0 -11
  36. package/dist/tsconfig.build.tsbuildinfo +1 -1
  37. package/package.json +1 -1
  38. package/web/.next/BUILD_ID +1 -1
  39. package/web/.next/build-manifest.json +2 -2
  40. package/web/.next/fallback-build-manifest.json +2 -2
  41. package/web/.next/prerender-manifest.json +3 -3
  42. package/web/.next/required-server-files.js +1 -1
  43. package/web/.next/required-server-files.json +1 -1
  44. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +44 -59
  45. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
  46. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  47. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  48. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +56 -86
  49. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +1 -1
  50. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  51. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  52. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +56 -86
  53. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -1
  54. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  55. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  56. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +40 -55
  57. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
  58. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  59. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  60. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +44 -59
  61. package/web/.next/server/app/(dashboard)/create/page.js +1 -1
  62. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  63. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  64. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +56 -86
  65. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +1 -1
  66. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  67. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  68. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +56 -86
  69. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -1
  70. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  71. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  72. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +40 -55
  73. package/web/.next/server/app/(dashboard)/page.js +1 -1
  74. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  75. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  76. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +40 -55
  77. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
  78. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  79. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  80. package/web/.next/server/app/_global-error.html +2 -2
  81. package/web/.next/server/app/_global-error.rsc +1 -1
  82. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  83. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  84. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  85. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  86. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  87. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  88. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  89. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  90. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  91. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  92. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  93. package/web/.next/server/app/settings/page/server-reference-manifest.json +6 -6
  94. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  95. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  96. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  97. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  98. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  99. package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  100. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  101. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  102. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  103. package/web/.next/server/app/version/page.js.nft.json +1 -1
  104. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  105. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  106. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  107. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  108. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_f30d0343.js +3 -0
  109. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_f30d0343.js.map +1 -0
  110. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_9f1775bb.js +3 -0
  111. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_9f1775bb.js.map +1 -0
  112. package/web/.next/server/chunks/ssr/[root-of-the-server]__06fef644._.js +1 -1
  113. package/web/.next/server/chunks/ssr/[root-of-the-server]__14664e9b._.js +2 -2
  114. package/web/.next/server/chunks/ssr/[root-of-the-server]__14664e9b._.js.map +1 -1
  115. package/web/.next/server/chunks/ssr/[root-of-the-server]__545792ab._.js +1 -1
  116. package/web/.next/server/chunks/ssr/[root-of-the-server]__545792ab._.js.map +1 -1
  117. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  118. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js.map +1 -1
  119. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js +2 -2
  120. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js.map +1 -1
  121. package/web/.next/server/chunks/ssr/[root-of-the-server]__7cbda1ea._.js +3 -0
  122. package/web/.next/server/chunks/ssr/{[root-of-the-server]__a32640a5._.js.map → [root-of-the-server]__7cbda1ea._.js.map} +1 -1
  123. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  124. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js.map +1 -1
  125. package/web/.next/server/chunks/ssr/[root-of-the-server]__8c553503._.js +2 -2
  126. package/web/.next/server/chunks/ssr/[root-of-the-server]__9e8b25ad._.js +3 -0
  127. package/web/.next/server/chunks/ssr/[root-of-the-server]__9e8b25ad._.js.map +1 -0
  128. package/web/.next/server/chunks/ssr/[root-of-the-server]__a7de2711._.js +2 -2
  129. package/web/.next/server/chunks/ssr/[root-of-the-server]__aed1d6f8._.js +3 -0
  130. package/web/.next/server/chunks/ssr/[root-of-the-server]__aed1d6f8._.js.map +1 -0
  131. package/web/.next/server/chunks/ssr/[root-of-the-server]__ce6057f6._.js +3 -0
  132. package/web/.next/server/chunks/ssr/{[root-of-the-server]__7a715c73._.js.map → [root-of-the-server]__ce6057f6._.js.map} +1 -1
  133. package/web/.next/server/chunks/ssr/_109ee019._.js +3 -0
  134. package/web/.next/server/chunks/ssr/_109ee019._.js.map +1 -0
  135. package/web/.next/server/chunks/ssr/_135edb9c._.js +1 -1
  136. package/web/.next/server/chunks/ssr/_135edb9c._.js.map +1 -1
  137. package/web/.next/server/chunks/ssr/_2f6f48b8._.js +1 -1
  138. package/web/.next/server/chunks/ssr/_2f6f48b8._.js.map +1 -1
  139. package/web/.next/server/chunks/ssr/_5d43c3db._.js +3 -0
  140. package/web/.next/server/chunks/ssr/_5d43c3db._.js.map +1 -0
  141. package/web/.next/server/chunks/ssr/_a161be0a._.js +3 -0
  142. package/web/.next/server/chunks/ssr/_a161be0a._.js.map +1 -0
  143. package/web/.next/server/chunks/ssr/{_e2638d5f._.js → _b86eec90._.js} +2 -2
  144. package/web/.next/server/chunks/ssr/_b86eec90._.js.map +1 -0
  145. package/web/.next/server/chunks/ssr/_cc77a143._.js +1 -1
  146. package/web/.next/server/chunks/ssr/_cc77a143._.js.map +1 -1
  147. package/web/.next/server/chunks/ssr/{_f1a649e3._.js → _f605354c._.js} +3 -3
  148. package/web/.next/server/chunks/ssr/_f605354c._.js.map +1 -0
  149. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  150. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  151. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
  152. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +1 -1
  153. package/web/.next/server/chunks/ssr/node_modules__pnpm_70f6d54e._.js +3 -0
  154. package/web/.next/server/chunks/ssr/node_modules__pnpm_70f6d54e._.js.map +1 -0
  155. package/web/.next/server/chunks/ssr/{403f9_next_d6c8d28d._.js → node_modules__pnpm_f9ac7604._.js} +2 -2
  156. package/web/.next/server/chunks/ssr/node_modules__pnpm_f9ac7604._.js.map +1 -0
  157. package/web/.next/server/chunks/ssr/src_presentation_web_5f039db1._.js +5 -0
  158. package/web/.next/server/chunks/ssr/{src_presentation_web_e4e3c09b._.js.map → src_presentation_web_5f039db1._.js.map} +1 -1
  159. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_2a52b697.js +3 -0
  160. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_2a52b697.js.map +1 -0
  161. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js +1 -1
  162. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js.map +1 -1
  163. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js +1 -1
  164. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js.map +1 -1
  165. package/web/.next/server/chunks/ssr/src_presentation_web_c4337169._.js +5 -0
  166. package/web/.next/server/chunks/ssr/{src_presentation_web_d1d40a09._.js.map → src_presentation_web_c4337169._.js.map} +1 -1
  167. package/web/.next/server/chunks/ssr/src_presentation_web_components_bf50c527._.js +1 -1
  168. package/web/.next/server/chunks/ssr/src_presentation_web_components_bf50c527._.js.map +1 -1
  169. package/web/.next/server/chunks/ssr/src_presentation_web_components_de814675._.js +1 -1
  170. package/web/.next/server/chunks/ssr/src_presentation_web_components_de814675._.js.map +1 -1
  171. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  172. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  173. package/web/.next/server/pages/500.html +2 -2
  174. package/web/.next/server/server-reference-manifest.js +1 -1
  175. package/web/.next/server/server-reference-manifest.json +250 -357
  176. package/web/.next/static/chunks/{77304c4f9c5bb158.js → 15e868c5ed24e68d.js} +1 -1
  177. package/web/.next/static/chunks/1dd878b6feb55d2e.js +1 -0
  178. package/web/.next/static/chunks/44f74b62f897f41c.css +1 -0
  179. package/web/.next/static/chunks/{8b87caa5e8e72539.js → 683f1449a7acbe69.js} +2 -2
  180. package/web/.next/static/chunks/{11fbcb908d07e234.js → 8f09849a5cb49bc8.js} +1 -1
  181. package/web/.next/static/chunks/{cd008e10baaeae9a.js → 94861aa7270facbd.js} +1 -1
  182. package/web/.next/static/chunks/a09c0c629f88ee12.js +1 -0
  183. package/web/.next/static/chunks/a7231c3b616020d8.js +2 -0
  184. package/web/.next/static/chunks/c4e46fbe479ebd88.js +11 -0
  185. package/web/.next/static/chunks/{9b7dbb75030aac3e.js → e39cee9f73d1fda2.js} +1 -1
  186. package/web/.next/static/chunks/{db8d50abcf46d8b3.js → efb06f2eab920f11.js} +1 -1
  187. package/web/.next/static/chunks/{80f9e0cade7d717b.js → fb8b8be474a3e2b5.js} +1 -1
  188. package/web/.next/static/chunks/{4443ee9c7733399b.js → ffcc006639ba2fd8.js} +1 -1
  189. package/dist/packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.d.ts +0 -28
  190. package/dist/packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.d.ts.map +0 -1
  191. package/dist/packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.js +0 -81
  192. package/dist/packages/core/src/application/use-cases/repositories/sync-repository-main.use-case.d.ts +0 -16
  193. package/dist/packages/core/src/application/use-cases/repositories/sync-repository-main.use-case.d.ts.map +0 -1
  194. package/dist/packages/core/src/application/use-cases/repositories/sync-repository-main.use-case.js +0 -43
  195. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.prompt.d.ts +0 -35
  196. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.prompt.d.ts.map +0 -1
  197. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.prompt.js +0 -66
  198. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.d.ts +0 -42
  199. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.d.ts.map +0 -1
  200. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.js +0 -169
  201. package/dist/src/presentation/web/app/actions/rebase-feature.d.ts +0 -5
  202. package/dist/src/presentation/web/app/actions/rebase-feature.d.ts.map +0 -1
  203. package/dist/src/presentation/web/app/actions/rebase-feature.js +0 -16
  204. package/dist/src/presentation/web/app/actions/sync-repository.d.ts +0 -5
  205. package/dist/src/presentation/web/app/actions/sync-repository.d.ts.map +0 -1
  206. package/dist/src/presentation/web/app/actions/sync-repository.js +0 -16
  207. package/web/.next/server/chunks/ssr/403f9_next_d6c8d28d._.js.map +0 -1
  208. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_9efdd752.js +0 -3
  209. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_9efdd752.js.map +0 -1
  210. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_6ce19942.js +0 -3
  211. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_6ce19942.js.map +0 -1
  212. package/web/.next/server/chunks/ssr/[root-of-the-server]__16a547fc._.js +0 -3
  213. package/web/.next/server/chunks/ssr/[root-of-the-server]__16a547fc._.js.map +0 -1
  214. package/web/.next/server/chunks/ssr/[root-of-the-server]__7a715c73._.js +0 -3
  215. package/web/.next/server/chunks/ssr/[root-of-the-server]__a32640a5._.js +0 -3
  216. package/web/.next/server/chunks/ssr/[root-of-the-server]__c94704d6._.js +0 -3
  217. package/web/.next/server/chunks/ssr/[root-of-the-server]__c94704d6._.js.map +0 -1
  218. package/web/.next/server/chunks/ssr/_966c4532._.js +0 -3
  219. package/web/.next/server/chunks/ssr/_966c4532._.js.map +0 -1
  220. package/web/.next/server/chunks/ssr/_e2638d5f._.js.map +0 -1
  221. package/web/.next/server/chunks/ssr/_e9703421._.js +0 -3
  222. package/web/.next/server/chunks/ssr/_e9703421._.js.map +0 -1
  223. package/web/.next/server/chunks/ssr/_f1a649e3._.js.map +0 -1
  224. package/web/.next/server/chunks/ssr/node_modules__pnpm_bc66dcc6._.js +0 -3
  225. package/web/.next/server/chunks/ssr/node_modules__pnpm_bc66dcc6._.js.map +0 -1
  226. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_883074bc.js +0 -3
  227. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_883074bc.js.map +0 -1
  228. package/web/.next/server/chunks/ssr/src_presentation_web_d1d40a09._.js +0 -5
  229. package/web/.next/server/chunks/ssr/src_presentation_web_e4e3c09b._.js +0 -5
  230. package/web/.next/server/chunks/ssr/src_presentation_web_f6b57368._.js +0 -3
  231. package/web/.next/server/chunks/ssr/src_presentation_web_f6b57368._.js.map +0 -1
  232. package/web/.next/static/chunks/0a25d970e4abd189.js +0 -1
  233. package/web/.next/static/chunks/3925626b99dcd57a.css +0 -1
  234. package/web/.next/static/chunks/4b51f8f4e49665b8.js +0 -1
  235. package/web/.next/static/chunks/513b719e49ca003a.js +0 -11
  236. package/web/.next/static/chunks/d71ce7044ed5a85a.js +0 -2
  237. /package/web/.next/static/{MpP2wa-zjPqcZxmpuDBjj → FEBom5Y7caLa2hXBqPiA-}/_buildManifest.js +0 -0
  238. /package/web/.next/static/{MpP2wa-zjPqcZxmpuDBjj → FEBom5Y7caLa2hXBqPiA-}/_clientMiddlewareManifest.json +0 -0
  239. /package/web/.next/static/{MpP2wa-zjPqcZxmpuDBjj → FEBom5Y7caLa2hXBqPiA-}/_ssgManifest.js +0 -0
@@ -9,17 +9,15 @@ import type { PrStatus } from '../../../../domain/generated/output.js';
9
9
  * Error codes for git PR operations.
10
10
  */
11
11
  export declare enum GitPrErrorCode {
12
+ MERGE_CONFLICT = "MERGE_CONFLICT",
12
13
  AUTH_FAILURE = "AUTH_FAILURE",
13
- BRANCH_NOT_FOUND = "BRANCH_NOT_FOUND",
14
- CI_TIMEOUT = "CI_TIMEOUT",
15
14
  GH_NOT_FOUND = "GH_NOT_FOUND",
15
+ NETWORK_ERROR = "NETWORK_ERROR",
16
+ CI_TIMEOUT = "CI_TIMEOUT",
17
+ BRANCH_NOT_FOUND = "BRANCH_NOT_FOUND",
16
18
  GIT_ERROR = "GIT_ERROR",
17
- MERGE_CONFLICT = "MERGE_CONFLICT",
18
19
  MERGE_FAILED = "MERGE_FAILED",
19
- NETWORK_ERROR = "NETWORK_ERROR",
20
- PR_NOT_FOUND = "PR_NOT_FOUND",
21
- REBASE_CONFLICT = "REBASE_CONFLICT",
22
- SYNC_FAILED = "SYNC_FAILED"
20
+ PR_NOT_FOUND = "PR_NOT_FOUND"
23
21
  }
24
22
  /**
25
23
  * Typed error for git PR operations.
@@ -320,66 +318,5 @@ export interface IGitPrService {
320
318
  * @throws GitPrError with GH_NOT_FOUND or GIT_ERROR code on failure
321
319
  */
322
320
  getFailureLogs(cwd: string, runId: string, branch: string, logMaxChars?: number): Promise<string>;
323
- /**
324
- * Fast-forward the local base branch to match its remote counterpart.
325
- * If currently on the base branch, uses `git pull --ff-only`.
326
- * If on a different branch, uses `git fetch origin <baseBranch>:<baseBranch>`.
327
- *
328
- * @param cwd - Working directory path
329
- * @param baseBranch - The base branch to sync (e.g. "main")
330
- * @throws GitPrError with SYNC_FAILED code if the branch has diverged and cannot fast-forward
331
- * @throws GitPrError with GIT_ERROR code on other git failures
332
- */
333
- syncMain(cwd: string, baseBranch: string): Promise<void>;
334
- /**
335
- * Rebase the feature branch onto the latest base branch.
336
- * Checks for dirty worktree before starting. Detects conflict state
337
- * from git exit code and stderr — throws REBASE_CONFLICT if conflicts
338
- * are encountered (caller is responsible for resolution or abort).
339
- *
340
- * @param cwd - Working directory path
341
- * @param featureBranch - The feature branch to rebase
342
- * @param baseBranch - The base branch to rebase onto
343
- * @throws GitPrError with GIT_ERROR code if the worktree is dirty
344
- * @throws GitPrError with REBASE_CONFLICT code if conflicts are detected
345
- * @throws GitPrError with BRANCH_NOT_FOUND code if a branch does not exist
346
- */
347
- rebaseOnMain(cwd: string, featureBranch: string, baseBranch: string): Promise<void>;
348
- /**
349
- * Get the list of files with unresolved conflicts (unmerged paths).
350
- * Uses `git diff --name-only --diff-filter=U` to identify conflicted files.
351
- *
352
- * @param cwd - Working directory path
353
- * @returns Array of file paths with unresolved conflicts
354
- * @throws GitPrError with GIT_ERROR code on failure
355
- */
356
- getConflictedFiles(cwd: string): Promise<string[]>;
357
- /**
358
- * Stage specific files in the working directory.
359
- * Uses `git add` for the specified file paths.
360
- *
361
- * @param cwd - Working directory path
362
- * @param files - Array of file paths to stage
363
- * @throws GitPrError with GIT_ERROR code on failure
364
- */
365
- stageFiles(cwd: string, files: string[]): Promise<void>;
366
- /**
367
- * Continue an in-progress rebase after conflicts have been resolved.
368
- * Runs `git rebase --continue`. May throw REBASE_CONFLICT if the next
369
- * commit in the rebase also has conflicts.
370
- *
371
- * @param cwd - Working directory path
372
- * @throws GitPrError with REBASE_CONFLICT code if new conflicts are detected
373
- * @throws GitPrError with GIT_ERROR code on other git failures
374
- */
375
- rebaseContinue(cwd: string): Promise<void>;
376
- /**
377
- * Abort an in-progress rebase, restoring the branch to its pre-rebase state.
378
- * Runs `git rebase --abort`.
379
- *
380
- * @param cwd - Working directory path
381
- * @throws GitPrError with GIT_ERROR code on failure
382
- */
383
- rebaseAbort(cwd: string): Promise<void>;
384
321
  }
385
322
  //# sourceMappingURL=git-pr-service.interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-pr-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/git-pr-service.interface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-pr-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/git-pr-service.interface.ts"],"names":[],"mappings":"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"}
@@ -9,17 +9,15 @@
9
9
  */
10
10
  export var GitPrErrorCode;
11
11
  (function (GitPrErrorCode) {
12
+ GitPrErrorCode["MERGE_CONFLICT"] = "MERGE_CONFLICT";
12
13
  GitPrErrorCode["AUTH_FAILURE"] = "AUTH_FAILURE";
13
- GitPrErrorCode["BRANCH_NOT_FOUND"] = "BRANCH_NOT_FOUND";
14
- GitPrErrorCode["CI_TIMEOUT"] = "CI_TIMEOUT";
15
14
  GitPrErrorCode["GH_NOT_FOUND"] = "GH_NOT_FOUND";
15
+ GitPrErrorCode["NETWORK_ERROR"] = "NETWORK_ERROR";
16
+ GitPrErrorCode["CI_TIMEOUT"] = "CI_TIMEOUT";
17
+ GitPrErrorCode["BRANCH_NOT_FOUND"] = "BRANCH_NOT_FOUND";
16
18
  GitPrErrorCode["GIT_ERROR"] = "GIT_ERROR";
17
- GitPrErrorCode["MERGE_CONFLICT"] = "MERGE_CONFLICT";
18
19
  GitPrErrorCode["MERGE_FAILED"] = "MERGE_FAILED";
19
- GitPrErrorCode["NETWORK_ERROR"] = "NETWORK_ERROR";
20
20
  GitPrErrorCode["PR_NOT_FOUND"] = "PR_NOT_FOUND";
21
- GitPrErrorCode["REBASE_CONFLICT"] = "REBASE_CONFLICT";
22
- GitPrErrorCode["SYNC_FAILED"] = "SYNC_FAILED";
23
21
  })(GitPrErrorCode || (GitPrErrorCode = {}));
24
22
  /**
25
23
  * Typed error for git PR operations.
@@ -1 +1 @@
1
- {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/di/container.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAuHrC;;;;;;GAMG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,SAAS,CAAC,CA6UrE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/di/container.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAoHrC;;;;;;GAMG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,SAAS,CAAC,CAiUrE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -80,9 +80,6 @@ import { CheckAndUnblockFeaturesUseCase } from '../../application/use-cases/feat
80
80
  import { UpdateFeatureLifecycleUseCase } from '../../application/use-cases/features/update/update-feature-lifecycle.use-case.js';
81
81
  import { CleanupFeatureWorktreeUseCase } from '../../application/use-cases/features/cleanup-feature-worktree.use-case.js';
82
82
  import { UpgradeCliUseCase } from '../../application/use-cases/upgrade/upgrade-cli.use-case.js';
83
- import { SyncRepositoryMainUseCase } from '../../application/use-cases/repositories/sync-repository-main.use-case.js';
84
- import { RebaseFeatureOnMainUseCase } from '../../application/use-cases/features/rebase-feature-on-main.use-case.js';
85
- import { ConflictResolutionService } from '../services/agents/conflict-resolution/conflict-resolution.service.js';
86
83
  // Session listing
87
84
  import { ClaudeCodeSessionRepository } from '../services/agents/sessions/claude-code-session.repository.js';
88
85
  import { StubSessionRepository } from '../services/agents/sessions/stub-session.repository.js';
@@ -298,12 +295,6 @@ export async function initializeContainer() {
298
295
  container.registerSingleton(UpdateFeatureLifecycleUseCase);
299
296
  container.registerSingleton(CleanupFeatureWorktreeUseCase);
300
297
  container.registerSingleton(UpgradeCliUseCase);
301
- container.registerSingleton(ConflictResolutionService);
302
- container.register('ConflictResolutionService', {
303
- useFactory: (c) => c.resolve(ConflictResolutionService),
304
- });
305
- container.registerSingleton(SyncRepositoryMainUseCase);
306
- container.registerSingleton(RebaseFeatureOnMainUseCase);
307
298
  // Session repositories (per-AgentType string tokens)
308
299
  container.register(`IAgentSessionRepository:${AgentType.ClaudeCode}`, {
309
300
  useFactory: () => new ClaudeCodeSessionRepository(),
@@ -394,12 +385,6 @@ export async function initializeContainer() {
394
385
  container.register('UpgradeCliUseCase', {
395
386
  useFactory: (c) => c.resolve(UpgradeCliUseCase),
396
387
  });
397
- container.register('SyncRepositoryMainUseCase', {
398
- useFactory: (c) => c.resolve(SyncRepositoryMainUseCase),
399
- });
400
- container.register('RebaseFeatureOnMainUseCase', {
401
- useFactory: (c) => c.resolve(RebaseFeatureOnMainUseCase),
402
- });
403
388
  _initialized = true;
404
389
  return container;
405
390
  }
@@ -45,11 +45,5 @@ export declare class GitPrService implements IGitPrService {
45
45
  private parseGhError;
46
46
  private parsePrNumberFromUrl;
47
47
  private parseDiffStat;
48
- syncMain(cwd: string, baseBranch: string): Promise<void>;
49
- rebaseOnMain(cwd: string, featureBranch: string, baseBranch: string): Promise<void>;
50
- getConflictedFiles(cwd: string): Promise<string[]>;
51
- stageFiles(cwd: string, files: string[]): Promise<void>;
52
- rebaseContinue(cwd: string): Promise<void>;
53
- rebaseAbort(cwd: string): Promise<void>;
54
48
  }
55
49
  //# sourceMappingURL=git-pr.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-pr.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/git/git-pr.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-pr.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/git/git-pr.service.ts"],"names":[],"mappings":"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"}
@@ -612,14 +612,6 @@ let GitPrService = class GitPrService {
612
612
  parseGitError(error) {
613
613
  const message = error instanceof Error ? error.message : String(error);
614
614
  const cause = error instanceof Error ? error : undefined;
615
- // Rebase-specific: detect "CONFLICT" during rebase operations
616
- if (message.includes('CONFLICT') && message.includes('rebase')) {
617
- return new GitPrError(message, GitPrErrorCode.REBASE_CONFLICT, cause);
618
- }
619
- // Sync-specific: non-fast-forward or diverged branch
620
- if (message.includes('non-fast-forward') || message.includes('diverged')) {
621
- return new GitPrError(message, GitPrErrorCode.SYNC_FAILED, cause);
622
- }
623
615
  if (message.includes('rejected') || message.includes('conflict')) {
624
616
  return new GitPrError(message, GitPrErrorCode.MERGE_CONFLICT, cause);
625
617
  }
@@ -660,123 +652,6 @@ let GitPrService = class GitPrService {
660
652
  commitCount,
661
653
  };
662
654
  }
663
- // --- Rebase & Sync operations ---
664
- async syncMain(cwd, baseBranch) {
665
- try {
666
- // Detect current branch
667
- const { stdout } = await this.execFile('git', ['rev-parse', '--abbrev-ref', 'HEAD'], { cwd });
668
- const currentBranch = stdout.trim();
669
- if (currentBranch === baseBranch) {
670
- // On the base branch — use git pull --ff-only
671
- await this.execFile('git', ['pull', '--ff-only', 'origin', baseBranch], { cwd });
672
- }
673
- else {
674
- // On a different branch — use git fetch to update the base branch ref without switching
675
- await this.execFile('git', ['fetch', 'origin', `${baseBranch}:${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') || message.includes('diverged')) {
682
- throw new GitPrError(`Cannot fast-forward '${baseBranch}': local branch has diverged from remote. ` +
683
- `Resolve the divergence manually with 'git checkout ${baseBranch} && git reset --hard origin/${baseBranch}' ` +
684
- `if you want to discard local changes on ${baseBranch}.`, GitPrErrorCode.SYNC_FAILED, cause);
685
- }
686
- throw new GitPrError(`Failed to sync '${baseBranch}' with remote: ${message}`, GitPrErrorCode.GIT_ERROR, cause);
687
- }
688
- }
689
- async rebaseOnMain(cwd, featureBranch, baseBranch) {
690
- // Check for dirty worktree before starting
691
- const dirty = await this.hasUncommittedChanges(cwd);
692
- if (dirty) {
693
- throw new GitPrError(`Cannot rebase: working directory has uncommitted changes. ` +
694
- `Please commit or stash your changes before rebasing.`, GitPrErrorCode.GIT_ERROR);
695
- }
696
- // Checkout the feature branch
697
- try {
698
- await this.execFile('git', ['checkout', featureBranch], { cwd });
699
- }
700
- catch (error) {
701
- const message = error instanceof Error ? error.message : String(error);
702
- const cause = error instanceof Error ? error : undefined;
703
- if (message.includes('did not match') ||
704
- message.includes('not a commit') ||
705
- message.includes('pathspec')) {
706
- throw new GitPrError(`Branch '${featureBranch}' not found.`, GitPrErrorCode.BRANCH_NOT_FOUND, cause);
707
- }
708
- throw new GitPrError(`Failed to checkout '${featureBranch}': ${message}`, GitPrErrorCode.GIT_ERROR, cause);
709
- }
710
- // Rebase onto the base branch
711
- try {
712
- await this.execFile('git', ['rebase', baseBranch], { cwd });
713
- }
714
- catch (error) {
715
- const message = error instanceof Error ? error.message : String(error);
716
- const cause = error instanceof Error ? error : undefined;
717
- // Detect rebase conflict from git stderr/exit code
718
- if (message.includes('CONFLICT') || message.includes('could not apply')) {
719
- // Get the list of conflicted files to include in the error message
720
- let conflictedFiles = [];
721
- try {
722
- conflictedFiles = await this.getConflictedFiles(cwd);
723
- }
724
- catch {
725
- // Failed to get conflicted files — still report the conflict
726
- }
727
- const fileList = conflictedFiles.length > 0 ? ` Conflicted files: ${conflictedFiles.join(', ')}` : '';
728
- throw new GitPrError(`Rebase of '${featureBranch}' onto '${baseBranch}' encountered conflicts.${fileList}`, GitPrErrorCode.REBASE_CONFLICT, cause);
729
- }
730
- throw new GitPrError(`Rebase of '${featureBranch}' onto '${baseBranch}' failed: ${message}`, GitPrErrorCode.GIT_ERROR, cause);
731
- }
732
- }
733
- async getConflictedFiles(cwd) {
734
- try {
735
- const { stdout } = await this.execFile('git', ['diff', '--name-only', '--diff-filter=U'], {
736
- cwd,
737
- });
738
- return stdout
739
- .trim()
740
- .split('\n')
741
- .filter((f) => f.length > 0)
742
- .map((f) => f.replace(/\\/g, '/'));
743
- }
744
- catch (error) {
745
- throw this.parseGitError(error);
746
- }
747
- }
748
- async stageFiles(cwd, files) {
749
- try {
750
- await this.execFile('git', ['add', ...files], { cwd });
751
- }
752
- catch (error) {
753
- throw this.parseGitError(error);
754
- }
755
- }
756
- async rebaseContinue(cwd) {
757
- try {
758
- await this.execFile('git', ['rebase', '--continue'], {
759
- cwd,
760
- env: { ...process.env, GIT_EDITOR: 'true' },
761
- });
762
- }
763
- catch (error) {
764
- const message = error instanceof Error ? error.message : String(error);
765
- const cause = error instanceof Error ? error : undefined;
766
- if (message.includes('CONFLICT') || message.includes('could not apply')) {
767
- throw new GitPrError(`Rebase continue encountered new conflicts: ${message}`, GitPrErrorCode.REBASE_CONFLICT, cause);
768
- }
769
- throw this.parseGitError(error);
770
- }
771
- }
772
- async rebaseAbort(cwd) {
773
- try {
774
- await this.execFile('git', ['rebase', '--abort'], { cwd });
775
- }
776
- catch (error) {
777
- throw this.parseGitError(error);
778
- }
779
- }
780
655
  };
781
656
  GitPrService = __decorate([
782
657
  injectable(),
@@ -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,2CAykB1F"}
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,2CAqkB1F"}
@@ -303,7 +303,6 @@ export function FeatureDrawerClient({ view: initialView, urlTab }) {
303
303
  // ── Hooks (always called unconditionally per Rules of Hooks) ──────────
304
304
  const featureActionsInput = featureNode?.repositoryPath && featureNode?.branch
305
305
  ? {
306
- featureId: featureNode.featureId,
307
306
  repositoryPath: featureNode.repositoryPath,
308
307
  branch: featureNode.branch,
309
308
  specPath: featureNode.specPath,
@@ -347,7 +346,7 @@ export function FeatureDrawerClient({ view: initialView, urlTab }) {
347
346
  ...(featureNode.state === 'error' && { onRetry: handleRetry }),
348
347
  ...(featureNode.state === 'pending' && { onStart: handleStart }),
349
348
  };
350
- 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: featureActions.rebaseOnMain, rebaseLoading: featureActions.rebaseLoading, rebaseError: featureActions.rebaseError, isRejecting: isRejecting, chatInput: chatInput, onChatInputChange: setChatInput }));
349
+ 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 }));
351
350
  }
352
351
  return (_jsx(BaseDrawer, { open: isOpen, onClose: attemptClose, size: "md", modal: false, header: header, "data-testid": view.type === 'feature' ? 'feature-drawer' : 'repository-drawer', children: body }));
353
352
  }
@@ -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":"AAqBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAE9E,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,kBAAkB,CAAC;CAC1B;AAcD,wBAAgB,sBAAsB,CAAC,EAAE,IAAI,EAAE,EAAE,2BAA2B,2CAoL3E"}
@@ -2,19 +2,35 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } 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, GitBranch, GitCommitHorizontal, User, ArrowDown, Clock, } 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';
9
9
  import { Separator } from '../../ui/separator.js';
10
+ import { Badge } from '../../ui/badge.js';
10
11
  import { useRepositoryActions } from '../../common/repository-node/use-repository-actions.js';
11
12
  import { useFeatureFlags } from '../../../hooks/feature-flags-context.js';
13
+ function formatRelativeTime(epochMs) {
14
+ const diff = Date.now() - epochMs;
15
+ const days = Math.floor(diff / (1000 * 60 * 60 * 24));
16
+ if (days === 0)
17
+ return 'Today';
18
+ if (days === 1)
19
+ return 'Yesterday';
20
+ if (days < 30)
21
+ return `${days} days ago`;
22
+ const months = Math.floor(days / 30);
23
+ if (months < 12)
24
+ return `${months} month${months > 1 ? 's' : ''} ago`;
25
+ const years = Math.floor(months / 12);
26
+ return `${years} year${years > 1 ? 's' : ''} ago`;
27
+ }
12
28
  export function RepositoryDrawerClient({ data }) {
13
29
  const featureFlags = useFeatureFlags();
14
30
  const router = useRouter();
15
31
  const pathname = usePathname();
16
32
  const isOpen = pathname.startsWith('/repository/');
17
- const repoActions = useRepositoryActions(data.repositoryPath ? { repositoryId: data.id, repositoryPath: data.repositoryPath } : null);
33
+ const repoActions = useRepositoryActions(data.repositoryPath ? { repositoryPath: data.repositoryPath } : null);
18
34
  const onClose = useCallback(() => {
19
35
  router.push('/');
20
36
  }, [router]);
@@ -26,5 +42,6 @@ export function RepositoryDrawerClient({ data }) {
26
42
  }
27
43
  : undefined;
28
44
  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 ? (_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 }));
45
+ const hasGitInfo = !!(data.branch ?? data.commitMessage);
46
+ return (_jsx(BaseDrawer, { open: isOpen, onClose: onClose, size: "md", modal: false, header: header, deployTarget: featureFlags.envDeploy ? repoDeployTarget : undefined, "data-testid": "repository-drawer", children: _jsxs("div", { className: "flex flex-1 flex-col overflow-y-auto", children: [hasGitInfo ? (_jsxs(_Fragment, { children: [_jsx(Separator, {}), _jsxs("div", { className: "flex flex-col gap-3 p-4", "data-testid": "repository-drawer-git-section", children: [_jsx("div", { className: "text-muted-foreground text-xs font-semibold tracking-wider", children: "GIT STATUS" }), _jsxs("div", { className: "flex flex-col gap-2", children: [data.branch ? (_jsxs("div", { className: "flex items-center justify-between gap-2", "data-testid": "repository-drawer-branch-row", children: [_jsxs("div", { className: "text-muted-foreground flex items-center gap-2 text-sm", children: [_jsx(GitBranch, { className: "h-4 w-4 shrink-0" }), _jsx("span", { className: "text-foreground font-medium", children: "Branch" })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Badge, { variant: "secondary", className: "font-mono text-xs", "data-testid": "repository-drawer-branch", children: data.branch }), data.behindCount != null && data.behindCount > 0 ? (_jsxs(Badge, { variant: "outline", className: "border-amber-500/40 bg-amber-50 text-xs text-amber-600 dark:bg-amber-900/20 dark:text-amber-400", "data-testid": "repository-drawer-behind", children: [_jsx(ArrowDown, { className: "mr-1 h-3 w-3" }), data.behindCount, " behind"] })) : null] })] })) : null, data.commitMessage ? (_jsx("div", { className: "bg-muted/50 rounded-lg p-3", "data-testid": "repository-drawer-commit-section", children: _jsxs("div", { className: "flex items-start gap-2", children: [_jsx(GitCommitHorizontal, { className: "text-muted-foreground mt-0.5 h-4 w-4 shrink-0" }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("p", { className: "text-foreground text-sm leading-snug font-medium", "data-testid": "repository-drawer-commit-message", children: data.commitMessage }), data.committer ? (_jsxs("div", { className: "text-muted-foreground mt-1 flex items-center gap-1 text-xs", children: [_jsx(User, { className: "h-3 w-3 shrink-0" }), _jsx("span", { "data-testid": "repository-drawer-committer", children: data.committer })] })) : null] })] }) })) : null] })] })] })) : null, 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: 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, data.createdAt ? (_jsxs(_Fragment, { children: [_jsx(Separator, {}), _jsxs("div", { className: "flex flex-col gap-3 p-4", "data-testid": "repository-drawer-metadata", children: [_jsx("div", { className: "text-muted-foreground text-xs font-semibold tracking-wider", children: "INFO" }), _jsxs("div", { className: "flex items-center justify-between text-sm", children: [_jsxs("div", { className: "text-muted-foreground flex items-center gap-2", children: [_jsx(Clock, { className: "h-4 w-4 shrink-0" }), _jsx("span", { children: "Added" })] }), _jsx("span", { className: "text-foreground text-xs", title: new Date(data.createdAt).toLocaleString(), "data-testid": "repository-drawer-created-at", children: formatRelativeTime(data.createdAt) })] })] })] })) : null] }) }));
30
47
  }
@@ -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;AA8C3F,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,2CAmVxB"}
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;AA8C3F,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,2CA8UxB"}
@@ -64,7 +64,7 @@ const TAB_FETCHERS = {
64
64
  activity: fetchActivity,
65
65
  plan: fetchPlan,
66
66
  };
67
- 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, }) {
67
+ 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, }) {
68
68
  const pathname = usePathname();
69
69
  const visibleTabs = useMemo(() => computeVisibleTabs(featureNode), [featureNode]);
70
70
  const visibleTabDefs = useMemo(() => ALL_TABS.filter((t) => visibleTabs.includes(t.key)).map((t) => t.key === 'merge-review' && featureNode.lifecycle === 'maintain'
@@ -241,7 +241,7 @@ export function FeatureDrawerTabs({ featureNode, featureId, initialTab, urlTab,
241
241
  fetchTab(tab);
242
242
  }
243
243
  }, [fetchTab]);
244
- 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] }) }));
244
+ 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] }) }));
245
245
  }
246
246
  // ── Private helper ──────────────────────────────────────────────────────
247
247
  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"}