@shepai/cli 1.122.2-pr394.daae4c9 → 1.122.2-pr395.c8c0b94

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 (279) hide show
  1. package/dist/packages/core/src/application/ports/output/repositories/feature-repository.interface.d.ts +0 -11
  2. package/dist/packages/core/src/application/ports/output/repositories/feature-repository.interface.d.ts.map +1 -1
  3. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts +55 -1
  4. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts.map +1 -1
  5. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.js +2 -0
  6. package/dist/packages/core/src/application/ports/output/services/worktree-service.interface.d.ts +0 -15
  7. package/dist/packages/core/src/application/ports/output/services/worktree-service.interface.d.ts.map +1 -1
  8. package/dist/packages/core/src/application/use-cases/features/rebase-feature.use-case.d.ts +21 -0
  9. package/dist/packages/core/src/application/use-cases/features/rebase-feature.use-case.d.ts.map +1 -0
  10. package/dist/packages/core/src/application/use-cases/features/rebase-feature.use-case.js +58 -0
  11. package/dist/packages/core/src/application/use-cases/sync-fork-main.use-case.d.ts +18 -0
  12. package/dist/packages/core/src/application/use-cases/sync-fork-main.use-case.d.ts.map +1 -0
  13. package/dist/packages/core/src/application/use-cases/sync-fork-main.use-case.js +40 -0
  14. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  15. package/dist/packages/core/src/infrastructure/di/container.js +10 -5
  16. package/dist/packages/core/src/infrastructure/repositories/sqlite-feature.repository.d.ts +0 -1
  17. package/dist/packages/core/src/infrastructure/repositories/sqlite-feature.repository.d.ts.map +1 -1
  18. package/dist/packages/core/src/infrastructure/repositories/sqlite-feature.repository.js +0 -8
  19. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts +9 -0
  20. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts.map +1 -1
  21. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.js +93 -0
  22. package/dist/packages/core/src/infrastructure/services/git/worktree.service.d.ts +0 -1
  23. package/dist/packages/core/src/infrastructure/services/git/worktree.service.d.ts.map +1 -1
  24. package/dist/packages/core/src/infrastructure/services/git/worktree.service.js +0 -15
  25. package/dist/src/presentation/cli/commands/feat/index.js +2 -2
  26. package/dist/src/presentation/cli/commands/feat/rebase.command.d.ts +13 -0
  27. package/dist/src/presentation/cli/commands/feat/rebase.command.d.ts.map +1 -0
  28. package/dist/src/presentation/cli/commands/feat/rebase.command.js +45 -0
  29. package/dist/src/presentation/cli/commands/repo/index.d.ts.map +1 -1
  30. package/dist/src/presentation/cli/commands/repo/index.js +3 -1
  31. package/dist/src/presentation/cli/commands/repo/sync.command.d.ts +12 -0
  32. package/dist/src/presentation/cli/commands/repo/sync.command.d.ts.map +1 -0
  33. package/dist/src/presentation/cli/commands/repo/sync.command.js +38 -0
  34. package/dist/src/presentation/web/components/layouts/app-shell/app-shell.d.ts.map +1 -1
  35. package/dist/src/presentation/web/components/layouts/app-shell/app-shell.js +3 -12
  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/app-path-routes-manifest.json +0 -1
  40. package/web/.next/build-manifest.json +4 -4
  41. package/web/.next/fallback-build-manifest.json +2 -2
  42. package/web/.next/prerender-manifest.json +3 -3
  43. package/web/.next/required-server-files.js +1 -1
  44. package/web/.next/required-server-files.json +1 -1
  45. package/web/.next/routes-manifest.json +0 -6
  46. package/web/.next/server/app/(dashboard)/@drawer/create/page/build-manifest.json +2 -2
  47. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +22 -22
  48. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  49. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  50. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/build-manifest.json +2 -2
  51. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +28 -28
  52. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  53. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  54. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/build-manifest.json +2 -2
  55. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +28 -28
  56. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  57. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  58. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/build-manifest.json +2 -2
  59. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +20 -20
  60. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  61. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  62. package/web/.next/server/app/(dashboard)/create/page/build-manifest.json +2 -2
  63. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +22 -22
  64. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  65. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  66. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/build-manifest.json +2 -2
  67. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +28 -28
  68. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  69. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  70. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/build-manifest.json +2 -2
  71. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +28 -28
  72. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  73. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  74. package/web/.next/server/app/(dashboard)/page/build-manifest.json +2 -2
  75. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +20 -20
  76. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  77. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  78. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/build-manifest.json +2 -2
  79. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +20 -20
  80. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  81. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  82. package/web/.next/server/app/_global-error/page/build-manifest.json +2 -2
  83. package/web/.next/server/app/_global-error.html +2 -2
  84. package/web/.next/server/app/_global-error.rsc +1 -1
  85. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  86. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  87. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  88. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  89. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  90. package/web/.next/server/app/_not-found/page/build-manifest.json +2 -2
  91. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  92. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  93. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  94. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  95. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  96. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  97. package/web/.next/server/app/settings/page/build-manifest.json +2 -2
  98. package/web/.next/server/app/settings/page/server-reference-manifest.json +6 -6
  99. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  100. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  101. package/web/.next/server/app/skills/page/build-manifest.json +2 -2
  102. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  103. package/web/.next/server/app/skills/page.js +4 -4
  104. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  105. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  106. package/web/.next/server/app/tools/page/build-manifest.json +2 -2
  107. package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  108. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  109. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  110. package/web/.next/server/app/version/page/build-manifest.json +2 -2
  111. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  112. package/web/.next/server/app/version/page.js.nft.json +1 -1
  113. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  114. package/web/.next/server/app-paths-manifest.json +0 -1
  115. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  116. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  117. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  118. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_f30d0343.js +1 -1
  119. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_f30d0343.js.map +1 -1
  120. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_9f1775bb.js +1 -1
  121. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_9f1775bb.js.map +1 -1
  122. package/web/.next/server/chunks/ssr/[root-of-the-server]__06fef644._.js +1 -1
  123. package/web/.next/server/chunks/ssr/[root-of-the-server]__2698e9f4._.js +1 -1
  124. package/web/.next/server/chunks/ssr/[root-of-the-server]__2698e9f4._.js.map +1 -1
  125. package/web/.next/server/chunks/ssr/[root-of-the-server]__52485955._.js +3 -0
  126. package/web/.next/server/chunks/ssr/[root-of-the-server]__52485955._.js.map +1 -0
  127. package/web/.next/server/chunks/ssr/[root-of-the-server]__545792ab._.js +3 -0
  128. package/web/.next/server/chunks/ssr/[root-of-the-server]__545792ab._.js.map +1 -0
  129. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  130. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js.map +1 -1
  131. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js +2 -2
  132. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js.map +1 -1
  133. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  134. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js.map +1 -1
  135. package/web/.next/server/chunks/ssr/[root-of-the-server]__8c553503._.js +2 -2
  136. package/web/.next/server/chunks/ssr/[root-of-the-server]__8e3bf5d7._.js +1 -1
  137. package/web/.next/server/chunks/ssr/[root-of-the-server]__8e3bf5d7._.js.map +1 -1
  138. package/web/.next/server/chunks/ssr/[root-of-the-server]__9f155c0e._.js +3 -0
  139. package/web/.next/server/chunks/ssr/[root-of-the-server]__9f155c0e._.js.map +1 -0
  140. package/web/.next/server/chunks/ssr/[root-of-the-server]__a022445f._.js +2 -2
  141. package/web/.next/server/chunks/ssr/[root-of-the-server]__a7de2711._.js +2 -2
  142. package/web/.next/server/chunks/ssr/[root-of-the-server]__c07f9f79._.js +1 -1
  143. package/web/.next/server/chunks/ssr/[root-of-the-server]__c07f9f79._.js.map +1 -1
  144. package/web/.next/server/chunks/ssr/[root-of-the-server]__c605a375._.js +1 -1
  145. package/web/.next/server/chunks/ssr/[root-of-the-server]__c605a375._.js.map +1 -1
  146. package/web/.next/server/chunks/ssr/_0dc2cfd3._.js +3 -0
  147. package/web/.next/server/chunks/ssr/_0dc2cfd3._.js.map +1 -0
  148. package/web/.next/server/chunks/ssr/_135edb9c._.js +1 -1
  149. package/web/.next/server/chunks/ssr/_135edb9c._.js.map +1 -1
  150. package/web/.next/server/chunks/ssr/_2f6f48b8._.js +1 -1
  151. package/web/.next/server/chunks/ssr/_2f6f48b8._.js.map +1 -1
  152. package/web/.next/server/chunks/ssr/_3a4c94e3._.js +3 -0
  153. package/web/.next/server/chunks/ssr/_3a4c94e3._.js.map +1 -0
  154. package/web/.next/server/chunks/ssr/_75f4ccb3._.js +3 -0
  155. package/web/.next/server/chunks/ssr/_75f4ccb3._.js.map +1 -0
  156. package/web/.next/server/chunks/ssr/_8a96978f._.js +3 -0
  157. package/web/.next/server/chunks/ssr/_8a96978f._.js.map +1 -0
  158. package/web/.next/server/chunks/ssr/_9ac70f88._.js +5 -0
  159. package/web/.next/server/chunks/ssr/_9ac70f88._.js.map +1 -0
  160. package/web/.next/server/chunks/ssr/_a82cf2e0._.js +3 -0
  161. package/web/.next/server/chunks/ssr/_a82cf2e0._.js.map +1 -0
  162. package/web/.next/server/chunks/ssr/_cc77a143._.js +1 -1
  163. package/web/.next/server/chunks/ssr/_cc77a143._.js.map +1 -1
  164. package/web/.next/server/chunks/ssr/{_5317c57e._.js → _ed3caf29._.js} +2 -2
  165. package/web/.next/server/chunks/ssr/{_5317c57e._.js.map → _ed3caf29._.js.map} +1 -1
  166. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  167. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  168. package/web/.next/server/chunks/ssr/src_presentation_web_5f039db1._.js +2 -2
  169. package/web/.next/server/chunks/ssr/src_presentation_web_5f039db1._.js.map +1 -1
  170. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_2a52b697.js +1 -1
  171. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_2a52b697.js.map +1 -1
  172. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js +1 -1
  173. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js.map +1 -1
  174. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js +1 -1
  175. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js.map +1 -1
  176. package/web/.next/server/chunks/ssr/src_presentation_web_c4337169._.js +2 -2
  177. package/web/.next/server/chunks/ssr/src_presentation_web_c4337169._.js.map +1 -1
  178. package/web/.next/server/chunks/ssr/src_presentation_web_components_bf50c527._.js +1 -1
  179. package/web/.next/server/chunks/ssr/src_presentation_web_components_de814675._.js +1 -1
  180. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  181. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  182. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  183. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  184. package/web/.next/server/middleware-build-manifest.js +2 -2
  185. package/web/.next/server/pages/500.html +2 -2
  186. package/web/.next/server/server-reference-manifest.js +1 -1
  187. package/web/.next/server/server-reference-manifest.json +34 -189
  188. package/web/.next/static/chunks/15232259f3098c49.js +1 -0
  189. package/web/.next/static/chunks/169f570dd55c8af3.js +11 -0
  190. package/web/.next/static/chunks/{b14644925c7af7f5.js → 25883241e453fc9d.js} +2 -2
  191. package/web/.next/static/chunks/{9f4eb9f1618c8bd9.js → 3a5c7e619d0ab309.js} +1 -1
  192. package/web/.next/static/chunks/{7f0206527c67e121.js → 43ffa72d140bcb7b.js} +1 -1
  193. package/web/.next/static/chunks/455cf7ec8510845a.js +1 -0
  194. package/web/.next/static/chunks/4562ee849ea13c3a.js +1 -0
  195. package/web/.next/static/chunks/{f83551c20dcda199.js → 52188c40dc4dd250.js} +1 -1
  196. package/web/.next/static/chunks/52b56677c842e45f.js +3 -0
  197. package/web/.next/static/chunks/845d8e58a91014e6.js +1 -0
  198. package/web/.next/static/chunks/96eeeb28e06de78c.js +1 -0
  199. package/web/.next/static/chunks/{b4a6061718adb25e.js → b41e8f8ecf3a8574.js} +2 -2
  200. package/web/.next/static/chunks/cc8ef76547eec4a5.js +1 -0
  201. package/web/.next/static/chunks/{4796c6e7d84294d7.js → d0c4033f96cac0c7.js} +1 -1
  202. package/web/.next/static/chunks/{89aac43287d73b02.js → ed3a602003bcb31b.js} +1 -1
  203. package/web/.next/static/chunks/{turbopack-080e470ea902d0ba.js → turbopack-426d9bc2450816ba.js} +1 -1
  204. package/dist/packages/core/src/application/use-cases/features/adopt-branch.use-case.d.ts +0 -40
  205. package/dist/packages/core/src/application/use-cases/features/adopt-branch.use-case.d.ts.map +0 -1
  206. package/dist/packages/core/src/application/use-cases/features/adopt-branch.use-case.js +0 -146
  207. package/dist/packages/core/src/application/use-cases/features/branch-name-utils.d.ts +0 -33
  208. package/dist/packages/core/src/application/use-cases/features/branch-name-utils.d.ts.map +0 -1
  209. package/dist/packages/core/src/application/use-cases/features/branch-name-utils.js +0 -77
  210. package/dist/src/presentation/cli/commands/feat/adopt.command.d.ts +0 -14
  211. package/dist/src/presentation/cli/commands/feat/adopt.command.d.ts.map +0 -1
  212. package/dist/src/presentation/cli/commands/feat/adopt.command.js +0 -43
  213. package/dist/src/presentation/web/app/(dashboard)/@drawer/adopt/page.d.ts +0 -10
  214. package/dist/src/presentation/web/app/(dashboard)/@drawer/adopt/page.d.ts.map +0 -1
  215. package/dist/src/presentation/web/app/(dashboard)/@drawer/adopt/page.js +0 -22
  216. package/dist/src/presentation/web/app/actions/adopt-branch.d.ts +0 -11
  217. package/dist/src/presentation/web/app/actions/adopt-branch.d.ts.map +0 -1
  218. package/dist/src/presentation/web/app/actions/adopt-branch.js +0 -20
  219. package/dist/src/presentation/web/components/common/control-center-drawer/adopt-branch-drawer.d.ts +0 -9
  220. package/dist/src/presentation/web/components/common/control-center-drawer/adopt-branch-drawer.d.ts.map +0 -1
  221. package/dist/src/presentation/web/components/common/control-center-drawer/adopt-branch-drawer.js +0 -27
  222. package/dist/src/presentation/web/components/common/control-center-drawer/adopt-branch-drawer.stories.d.ts +0 -32
  223. package/dist/src/presentation/web/components/common/control-center-drawer/adopt-branch-drawer.stories.d.ts.map +0 -1
  224. package/dist/src/presentation/web/components/common/control-center-drawer/adopt-branch-drawer.stories.js +0 -115
  225. package/dist/src/presentation/web/components/common/control-center-drawer/adopt-drawer-client.d.ts +0 -5
  226. package/dist/src/presentation/web/components/common/control-center-drawer/adopt-drawer-client.d.ts.map +0 -1
  227. package/dist/src/presentation/web/components/common/control-center-drawer/adopt-drawer-client.js +0 -56
  228. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/app-paths-manifest.json +0 -3
  229. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/build-manifest.json +0 -18
  230. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/next-font-manifest.json +0 -6
  231. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/react-loadable-manifest.json +0 -1
  232. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +0 -320
  233. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +0 -20
  234. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.map +0 -5
  235. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +0 -1
  236. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +0 -2
  237. package/web/.next/server/chunks/ssr/403f9_next_dist_client_components_94d75bc3._.js +0 -3
  238. package/web/.next/server/chunks/ssr/403f9_next_dist_client_components_94d75bc3._.js.map +0 -1
  239. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_0b3f4f0d.js +0 -3
  240. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_0b3f4f0d.js.map +0 -1
  241. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_adopt-drawer-client_tsx_6c5e4bbb._.js +0 -3
  242. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_adopt-drawer-client_tsx_6c5e4bbb._.js.map +0 -1
  243. package/web/.next/server/chunks/ssr/[root-of-the-server]__e2227c0f._.js +0 -3
  244. package/web/.next/server/chunks/ssr/[root-of-the-server]__e2227c0f._.js.map +0 -1
  245. package/web/.next/server/chunks/ssr/[root-of-the-server]__e7258841._.js +0 -3
  246. package/web/.next/server/chunks/ssr/[root-of-the-server]__e7258841._.js.map +0 -1
  247. package/web/.next/server/chunks/ssr/[root-of-the-server]__ec26e818._.js +0 -3
  248. package/web/.next/server/chunks/ssr/[root-of-the-server]__ec26e818._.js.map +0 -1
  249. package/web/.next/server/chunks/ssr/[root-of-the-server]__f0589cc3._.js +0 -3
  250. package/web/.next/server/chunks/ssr/[root-of-the-server]__f0589cc3._.js.map +0 -1
  251. package/web/.next/server/chunks/ssr/_19a2fb35._.js +0 -3
  252. package/web/.next/server/chunks/ssr/_19a2fb35._.js.map +0 -1
  253. package/web/.next/server/chunks/ssr/_1e1b2639._.js +0 -3
  254. package/web/.next/server/chunks/ssr/_1e1b2639._.js.map +0 -1
  255. package/web/.next/server/chunks/ssr/_4093a637._.js +0 -5
  256. package/web/.next/server/chunks/ssr/_4093a637._.js.map +0 -1
  257. package/web/.next/server/chunks/ssr/_a4a44cc0._.js +0 -3
  258. package/web/.next/server/chunks/ssr/_a4a44cc0._.js.map +0 -1
  259. package/web/.next/server/chunks/ssr/_b56e7571._.js +0 -3
  260. package/web/.next/server/chunks/ssr/_b56e7571._.js.map +0 -1
  261. package/web/.next/server/chunks/ssr/_d5206f22._.js +0 -4
  262. package/web/.next/server/chunks/ssr/_d5206f22._.js.map +0 -1
  263. package/web/.next/server/chunks/ssr/f7870_sonner_dist_index_mjs_dbf63824._.js +0 -3
  264. package/web/.next/server/chunks/ssr/f7870_sonner_dist_index_mjs_dbf63824._.js.map +0 -1
  265. package/web/.next/server/chunks/ssr/node_modules__pnpm_026172d1._.js +0 -3
  266. package/web/.next/server/chunks/ssr/node_modules__pnpm_026172d1._.js.map +0 -1
  267. package/web/.next/static/chunks/430ef376bd249b14.js +0 -1
  268. package/web/.next/static/chunks/52c0456129cb8a10.js +0 -1
  269. package/web/.next/static/chunks/767cf20dbde41522.js +0 -1
  270. package/web/.next/static/chunks/78e2f79d08767e8d.js +0 -9
  271. package/web/.next/static/chunks/a8d65187623d628b.js +0 -5
  272. package/web/.next/static/chunks/bf108ed551e585e6.js +0 -1
  273. package/web/.next/static/chunks/c6356369a45d19d6.js +0 -1
  274. package/web/.next/static/chunks/ca946dcbfbb2df74.js +0 -1
  275. package/web/.next/static/chunks/cafcbd67d82d65db.js +0 -1
  276. package/web/.next/static/chunks/d6d6af31b7ef545b.js +0 -1
  277. /package/web/.next/static/{eu15XGqVtBSCUjVy2GmoQ → 8Z0oWq7GDF-vhzMhqsuL1}/_buildManifest.js +0 -0
  278. /package/web/.next/static/{eu15XGqVtBSCUjVy2GmoQ → 8Z0oWq7GDF-vhzMhqsuL1}/_clientMiddlewareManifest.json +0 -0
  279. /package/web/.next/static/{eu15XGqVtBSCUjVy2GmoQ → 8Z0oWq7GDF-vhzMhqsuL1}/_ssgManifest.js +0 -0
@@ -57,17 +57,6 @@ export interface IFeatureRepository {
57
57
  * @returns The feature or null if not found
58
58
  */
59
59
  findBySlug(slug: string, repositoryPath: string): Promise<Feature | null>;
60
- /**
61
- * Find a feature by its branch name within a repository (excludes soft-deleted).
62
- *
63
- * Used for duplicate adoption detection — ensures a branch is not already
64
- * tracked as a feature before adopting it.
65
- *
66
- * @param branch - The exact git branch name
67
- * @param repositoryPath - The repository path to scope the search
68
- * @returns The feature or null if not found
69
- */
70
- findByBranch(branch: string, repositoryPath: string): Promise<Feature | null>;
71
60
  /**
72
61
  * List features with optional filters.
73
62
  * Excludes soft-deleted features unless includeDeleted is true.
@@ -1 +1 @@
1
- {"version":3,"file":"feature-repository.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/repositories/feature-repository.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAErF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,2EAA2E;IAC3E,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAE9C;;;;;;OAMG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAExD;;;;;;OAMG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAE1E;;;;;;;;;OASG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAE9E;;;;;;OAMG;IACH,IAAI,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAEvD;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC;;;;;;;OAOG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAErD;;;;OAIG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAElC;;;;OAIG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC"}
1
+ {"version":3,"file":"feature-repository.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/repositories/feature-repository.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAErF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,2EAA2E;IAC3E,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAE9C;;;;;;OAMG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAExD;;;;;;OAMG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAE1E;;;;;;OAMG;IACH,IAAI,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAEvD;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC;;;;;;;OAOG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAErD;;;;OAIG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAElC;;;;OAIG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC"}
@@ -17,7 +17,9 @@ export declare enum GitPrErrorCode {
17
17
  BRANCH_NOT_FOUND = "BRANCH_NOT_FOUND",
18
18
  GIT_ERROR = "GIT_ERROR",
19
19
  MERGE_FAILED = "MERGE_FAILED",
20
- PR_NOT_FOUND = "PR_NOT_FOUND"
20
+ PR_NOT_FOUND = "PR_NOT_FOUND",
21
+ REBASE_CONFLICT = "REBASE_CONFLICT",
22
+ NOT_A_FORK = "NOT_A_FORK"
21
23
  }
22
24
  /**
23
25
  * Typed error for git PR operations.
@@ -318,5 +320,57 @@ export interface IGitPrService {
318
320
  * @throws GitPrError with GH_NOT_FOUND or GIT_ERROR code on failure
319
321
  */
320
322
  getFailureLogs(cwd: string, runId: string, branch: string, logMaxChars?: number): Promise<string>;
323
+ /**
324
+ * Detect whether the current repository is a GitHub fork.
325
+ * Calls `gh repo view --json parent` once and returns both the boolean result and the
326
+ * parent clone URL so callers can pass it to ensureUpstreamRemote() without a second
327
+ * gh invocation (NFR-9).
328
+ *
329
+ * @param cwd - Working directory path (inside the git repo)
330
+ * @returns Object with isFork boolean and optional upstreamUrl from parent
331
+ * @throws GitPrError with GIT_ERROR code on unexpected failures
332
+ */
333
+ isFork(cwd: string): Promise<{
334
+ isFork: boolean;
335
+ upstreamUrl?: string;
336
+ }>;
337
+ /**
338
+ * Ensure a remote named "upstream" exists in the repo.
339
+ * If it does not exist, adds it using the provided upstreamUrl.
340
+ * Idempotent: if the remote already exists, this is a no-op.
341
+ *
342
+ * @param cwd - Working directory path (inside the git repo)
343
+ * @param upstreamUrl - Clone URL of the upstream (parent) repository
344
+ * @throws GitPrError with GIT_ERROR code on failure
345
+ */
346
+ ensureUpstreamRemote(cwd: string, upstreamUrl: string): Promise<void>;
347
+ /**
348
+ * Fetch the latest refs from the upstream remote.
349
+ *
350
+ * @param cwd - Working directory path (inside the git repo)
351
+ * @throws GitPrError with GIT_ERROR or NETWORK_ERROR code on failure
352
+ */
353
+ fetchUpstream(cwd: string): Promise<void>;
354
+ /**
355
+ * Sync the local main branch to exactly match upstream/main using
356
+ * `git reset --hard upstream/main`. The upstream remote must already exist.
357
+ * Idempotent: if local main already matches upstream/main, this is a no-op.
358
+ *
359
+ * @param cwd - Working directory path (inside the git repo)
360
+ * @throws GitPrError with GIT_ERROR code on failure
361
+ */
362
+ syncForkMain(cwd: string): Promise<void>;
363
+ /**
364
+ * Rebase the specified branch onto the target branch (e.g., main).
365
+ * On conflict, automatically runs `git rebase --abort` to keep the worktree clean,
366
+ * then throws GitPrError with REBASE_CONFLICT listing the conflicting files.
367
+ *
368
+ * @param cwd - Working directory of the feature worktree
369
+ * @param branch - The branch to rebase (must be checked out in cwd)
370
+ * @param onto - The target branch to rebase onto (e.g., 'main')
371
+ * @throws GitPrError with REBASE_CONFLICT code (includes conflicting file list)
372
+ * @throws GitPrError with GIT_ERROR code on other failures
373
+ */
374
+ rebase(cwd: string, branch: string, onto: string): Promise<void>;
321
375
  }
322
376
  //# 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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"}
@@ -18,6 +18,8 @@ export var GitPrErrorCode;
18
18
  GitPrErrorCode["GIT_ERROR"] = "GIT_ERROR";
19
19
  GitPrErrorCode["MERGE_FAILED"] = "MERGE_FAILED";
20
20
  GitPrErrorCode["PR_NOT_FOUND"] = "PR_NOT_FOUND";
21
+ GitPrErrorCode["REBASE_CONFLICT"] = "REBASE_CONFLICT";
22
+ GitPrErrorCode["NOT_A_FORK"] = "NOT_A_FORK";
21
23
  })(GitPrErrorCode || (GitPrErrorCode = {}));
22
24
  /**
23
25
  * Typed error for git PR operations.
@@ -50,21 +50,6 @@ export interface IWorktreeService {
50
50
  * @throws WorktreeError with appropriate code
51
51
  */
52
52
  create(repoPath: string, branch: string, worktreePath: string, startPoint?: string): Promise<WorktreeInfo>;
53
- /**
54
- * Create a worktree for an already-existing branch (no -b flag).
55
- *
56
- * Unlike create(), this does not create a new branch. It attaches a worktree
57
- * to a branch that already exists locally or as a remote tracking ref.
58
- * For remote-only branches, pass "origin/<branch>" as the branch argument
59
- * so that git automatically sets up local tracking.
60
- *
61
- * @param repoPath - Path to the git repository
62
- * @param branch - Existing branch name or remote tracking ref (e.g., "origin/my-branch")
63
- * @param worktreePath - Path for the new worktree directory
64
- * @returns Information about the created worktree
65
- * @throws WorktreeError with appropriate code
66
- */
67
- addExisting(repoPath: string, branch: string, worktreePath: string): Promise<WorktreeInfo>;
68
53
  /**
69
54
  * Remove an existing worktree.
70
55
  *
@@ -1 +1 @@
1
- {"version":3,"file":"worktree-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/worktree-service.interface.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,oBAAY,iBAAiB;IAC3B,cAAc,mBAAmB;IACjC,aAAa,kBAAkB;IAC/B,SAAS,cAAc;IACvB,cAAc,mBAAmB;IACjC,SAAS,cAAc;CACxB;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;aAGpB,IAAI,EAAE,iBAAiB;aACvB,KAAK,CAAC,EAAE,KAAK;gBAF7B,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,iBAAiB,EACvB,KAAK,CAAC,EAAE,KAAK,YAAA;CAKhC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;OASG;IACH,MAAM,CACJ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzB;;;;;;;;;;;;;OAaG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAE3F;;;;;;;OAOG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/E;;;;;OAKG;IACH,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAEhD;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3D;;;;;;OAMG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjE;;;;;;OAMG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEvE;;;;;;OAMG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAE1D;;;;OAIG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvC;;;;;;;OAOG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD"}
1
+ {"version":3,"file":"worktree-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/worktree-service.interface.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,oBAAY,iBAAiB;IAC3B,cAAc,mBAAmB;IACjC,aAAa,kBAAkB;IAC/B,SAAS,cAAc;IACvB,cAAc,mBAAmB;IACjC,SAAS,cAAc;CACxB;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;aAGpB,IAAI,EAAE,iBAAiB;aACvB,KAAK,CAAC,EAAE,KAAK;gBAF7B,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,iBAAiB,EACvB,KAAK,CAAC,EAAE,KAAK,YAAA;CAKhC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;OASG;IACH,MAAM,CACJ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzB;;;;;;;OAOG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/E;;;;;OAKG;IACH,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAEhD;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3D;;;;;;OAMG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjE;;;;;;OAMG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEvE;;;;;;OAMG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAE1D;;;;OAIG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvC;;;;;;;OAOG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Rebase Feature Use Case
3
+ *
4
+ * Rebases a feature branch on top of the current main branch.
5
+ * When the repository is a fork, syncs local main with upstream first.
6
+ * On conflict, aborts cleanly and surfaces a GitPrError with REBASE_CONFLICT.
7
+ */
8
+ import type { IFeatureRepository } from '../../ports/output/repositories/feature-repository.interface.js';
9
+ import type { IGitPrService } from '../../ports/output/services/git-pr-service.interface.js';
10
+ export interface RebaseFeatureResult {
11
+ success: boolean;
12
+ branch: string;
13
+ rebased: boolean;
14
+ }
15
+ export declare class RebaseFeatureUseCase {
16
+ private readonly featureRepo;
17
+ private readonly gitPrService;
18
+ constructor(featureRepo: IFeatureRepository, gitPrService: IGitPrService);
19
+ execute(featureId: string): Promise<RebaseFeatureResult>;
20
+ }
21
+ //# sourceMappingURL=rebase-feature.use-case.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rebase-feature.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/features/rebase-feature.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AAC1G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yDAAyD,CAAC;AAE7F,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qBACa,oBAAoB;IAG7B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAFZ,WAAW,EAAE,kBAAkB,EAE/B,YAAY,EAAE,aAAa;IAGxC,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAiC/D"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Rebase Feature Use Case
3
+ *
4
+ * Rebases a feature branch on top of the current main branch.
5
+ * When the repository is a fork, syncs local main with upstream first.
6
+ * On conflict, aborts cleanly and surfaces a GitPrError with REBASE_CONFLICT.
7
+ */
8
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
9
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
10
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
11
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
12
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
13
+ };
14
+ var __metadata = (this && this.__metadata) || function (k, v) {
15
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
16
+ };
17
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
18
+ return function (target, key) { decorator(target, key, paramIndex); }
19
+ };
20
+ import { injectable, inject } from 'tsyringe';
21
+ let RebaseFeatureUseCase = class RebaseFeatureUseCase {
22
+ featureRepo;
23
+ gitPrService;
24
+ constructor(featureRepo, gitPrService) {
25
+ this.featureRepo = featureRepo;
26
+ this.gitPrService = gitPrService;
27
+ }
28
+ async execute(featureId) {
29
+ const feature = (await this.featureRepo.findById(featureId)) ??
30
+ (await this.featureRepo.findByIdPrefix(featureId));
31
+ if (!feature) {
32
+ throw new Error(`Feature not found: ${featureId}`);
33
+ }
34
+ if (!feature.worktreePath) {
35
+ throw new Error(`Feature "${feature.name}" has no worktreePath. The worktree must be initialized before rebasing.`);
36
+ }
37
+ const cwd = feature.worktreePath;
38
+ const repoRoot = feature.repositoryPath;
39
+ const { isFork, upstreamUrl } = await this.gitPrService.isFork(repoRoot);
40
+ if (isFork) {
41
+ await this.gitPrService.ensureUpstreamRemote(cwd, upstreamUrl);
42
+ await this.gitPrService.syncForkMain(cwd);
43
+ }
44
+ await this.gitPrService.rebase(cwd, feature.branch, 'main');
45
+ return {
46
+ success: true,
47
+ branch: feature.branch,
48
+ rebased: true,
49
+ };
50
+ }
51
+ };
52
+ RebaseFeatureUseCase = __decorate([
53
+ injectable(),
54
+ __param(0, inject('IFeatureRepository')),
55
+ __param(1, inject('IGitPrService')),
56
+ __metadata("design:paramtypes", [Object, Object])
57
+ ], RebaseFeatureUseCase);
58
+ export { RebaseFeatureUseCase };
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Sync Fork Main Use Case
3
+ *
4
+ * Syncs the local main branch with upstream/main for fork repositories.
5
+ * For non-fork repos, returns a no-op result with an informational reason.
6
+ */
7
+ import type { IGitPrService } from '../ports/output/services/git-pr-service.interface.js';
8
+ export interface SyncForkMainResult {
9
+ synced: boolean;
10
+ reason?: string;
11
+ upstreamUrl?: string;
12
+ }
13
+ export declare class SyncForkMainUseCase {
14
+ private readonly gitPrService;
15
+ constructor(gitPrService: IGitPrService);
16
+ execute(cwd: string): Promise<SyncForkMainResult>;
17
+ }
18
+ //# sourceMappingURL=sync-fork-main.use-case.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-fork-main.use-case.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/application/use-cases/sync-fork-main.use-case.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sDAAsD,CAAC;AAE1F,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBACa,mBAAmB;IAG5B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE,aAAa;IAGxC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAYxD"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Sync Fork Main Use Case
3
+ *
4
+ * Syncs the local main branch with upstream/main for fork repositories.
5
+ * For non-fork repos, returns a no-op result with an informational reason.
6
+ */
7
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
8
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
9
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
10
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
11
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
12
+ };
13
+ var __metadata = (this && this.__metadata) || function (k, v) {
14
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
15
+ };
16
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
17
+ return function (target, key) { decorator(target, key, paramIndex); }
18
+ };
19
+ import { injectable, inject } from 'tsyringe';
20
+ let SyncForkMainUseCase = class SyncForkMainUseCase {
21
+ gitPrService;
22
+ constructor(gitPrService) {
23
+ this.gitPrService = gitPrService;
24
+ }
25
+ async execute(cwd) {
26
+ const { isFork, upstreamUrl } = await this.gitPrService.isFork(cwd);
27
+ if (!isFork) {
28
+ return { synced: false, reason: 'not-a-fork' };
29
+ }
30
+ await this.gitPrService.ensureUpstreamRemote(cwd, upstreamUrl);
31
+ await this.gitPrService.syncForkMain(cwd);
32
+ return { synced: true, upstreamUrl };
33
+ }
34
+ };
35
+ SyncForkMainUseCase = __decorate([
36
+ injectable(),
37
+ __param(0, inject('IGitPrService')),
38
+ __metadata("design:paramtypes", [Object])
39
+ ], SyncForkMainUseCase);
40
+ export { SyncForkMainUseCase };
@@ -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;AAqHrC;;;;;;GAMG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,SAAS,CAAC,CAqUrE;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;AAsHrC;;;;;;GAMG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,SAAS,CAAC,CAyUrE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -65,7 +65,6 @@ import { ShowFeatureUseCase } from '../../application/use-cases/features/show-fe
65
65
  import { DeleteFeatureUseCase } from '../../application/use-cases/features/delete-feature.use-case.js';
66
66
  import { ResumeFeatureUseCase } from '../../application/use-cases/features/resume-feature.use-case.js';
67
67
  import { StartFeatureUseCase } from '../../application/use-cases/features/start-feature.use-case.js';
68
- import { AdoptBranchUseCase } from '../../application/use-cases/features/adopt-branch.use-case.js';
69
68
  import { GetFeatureArtifactUseCase } from '../../application/use-cases/features/get-feature-artifact.use-case.js';
70
69
  import { GetResearchArtifactUseCase } from '../../application/use-cases/features/get-research-artifact.use-case.js';
71
70
  import { GetPlanArtifactUseCase } from '../../application/use-cases/features/get-plan-artifact.use-case.js';
@@ -81,6 +80,8 @@ import { CheckAndUnblockFeaturesUseCase } from '../../application/use-cases/feat
81
80
  import { UpdateFeatureLifecycleUseCase } from '../../application/use-cases/features/update/update-feature-lifecycle.use-case.js';
82
81
  import { CleanupFeatureWorktreeUseCase } from '../../application/use-cases/features/cleanup-feature-worktree.use-case.js';
83
82
  import { UpgradeCliUseCase } from '../../application/use-cases/upgrade/upgrade-cli.use-case.js';
83
+ import { SyncForkMainUseCase } from '../../application/use-cases/sync-fork-main.use-case.js';
84
+ import { RebaseFeatureUseCase } from '../../application/use-cases/features/rebase-feature.use-case.js';
84
85
  // Session listing
85
86
  import { ClaudeCodeSessionRepository } from '../services/agents/sessions/claude-code-session.repository.js';
86
87
  import { StubSessionRepository } from '../services/agents/sessions/stub-session.repository.js';
@@ -279,7 +280,6 @@ export async function initializeContainer() {
279
280
  container.registerSingleton(DeleteFeatureUseCase);
280
281
  container.registerSingleton(ResumeFeatureUseCase);
281
282
  container.registerSingleton(StartFeatureUseCase);
282
- container.registerSingleton(AdoptBranchUseCase);
283
283
  container.registerSingleton(GetFeatureArtifactUseCase);
284
284
  container.registerSingleton(GetResearchArtifactUseCase);
285
285
  container.registerSingleton(GetPlanArtifactUseCase);
@@ -297,6 +297,8 @@ export async function initializeContainer() {
297
297
  container.registerSingleton(UpdateFeatureLifecycleUseCase);
298
298
  container.registerSingleton(CleanupFeatureWorktreeUseCase);
299
299
  container.registerSingleton(UpgradeCliUseCase);
300
+ container.registerSingleton(SyncForkMainUseCase);
301
+ container.registerSingleton(RebaseFeatureUseCase);
300
302
  // Session repositories (per-AgentType string tokens)
301
303
  container.register(`IAgentSessionRepository:${AgentType.ClaudeCode}`, {
302
304
  useFactory: () => new ClaudeCodeSessionRepository(),
@@ -330,9 +332,6 @@ export async function initializeContainer() {
330
332
  container.register('StartFeatureUseCase', {
331
333
  useFactory: (c) => c.resolve(StartFeatureUseCase),
332
334
  });
333
- container.register('AdoptBranchUseCase', {
334
- useFactory: (c) => c.resolve(AdoptBranchUseCase),
335
- });
336
335
  container.register('ApproveAgentRunUseCase', {
337
336
  useFactory: (c) => c.resolve(ApproveAgentRunUseCase),
338
337
  });
@@ -390,6 +389,12 @@ export async function initializeContainer() {
390
389
  container.register('UpgradeCliUseCase', {
391
390
  useFactory: (c) => c.resolve(UpgradeCliUseCase),
392
391
  });
392
+ container.register('SyncForkMainUseCase', {
393
+ useFactory: (c) => c.resolve(SyncForkMainUseCase),
394
+ });
395
+ container.register('RebaseFeatureUseCase', {
396
+ useFactory: (c) => c.resolve(RebaseFeatureUseCase),
397
+ });
393
398
  _initialized = true;
394
399
  return container;
395
400
  }
@@ -19,7 +19,6 @@ export declare class SQLiteFeatureRepository implements IFeatureRepository {
19
19
  findById(id: string): Promise<Feature | null>;
20
20
  findByIdPrefix(prefix: string): Promise<Feature | null>;
21
21
  findBySlug(slug: string, repositoryPath: string): Promise<Feature | null>;
22
- findByBranch(branch: string, repositoryPath: string): Promise<Feature | null>;
23
22
  list(filters?: FeatureListFilters): Promise<Feature[]>;
24
23
  findByParentId(parentId: string): Promise<Feature[]>;
25
24
  update(feature: Feature): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite-feature.repository.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/repositories/sqlite-feature.repository.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,6EAA6E,CAAC;AACrF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAOhE;;;GAGG;AACH,qBACa,uBAAwB,YAAW,kBAAkB;IACpD,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAE5C,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BvC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAW7C,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAcvD,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAazE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAa7E,IAAI,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAyBtD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAQpD,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAyCvC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAK5C"}
1
+ {"version":3,"file":"sqlite-feature.repository.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/repositories/sqlite-feature.repository.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,6EAA6E,CAAC;AACrF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAOhE;;;GAGG;AACH,qBACa,uBAAwB,YAAW,kBAAkB;IACpD,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAE5C,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BvC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAW7C,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAcvD,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAazE,IAAI,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAyBtD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAQpD,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAyCvC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAK5C"}
@@ -78,14 +78,6 @@ let SQLiteFeatureRepository = class SQLiteFeatureRepository {
78
78
  }
79
79
  return fromDatabase(row);
80
80
  }
81
- async findByBranch(branch, repositoryPath) {
82
- const stmt = this.db.prepare("SELECT * FROM features WHERE branch = ? AND REPLACE(repository_path, '\\', '/') = ? AND deleted_at IS NULL");
83
- const row = stmt.get(branch, repositoryPath.replace(/\\/g, '/'));
84
- if (!row) {
85
- return null;
86
- }
87
- return fromDatabase(row);
88
- }
89
81
  async list(filters) {
90
82
  const conditions = [];
91
83
  const params = [];
@@ -45,5 +45,14 @@ export declare class GitPrService implements IGitPrService {
45
45
  private parseGhError;
46
46
  private parsePrNumberFromUrl;
47
47
  private parseDiffStat;
48
+ isFork(cwd: string): Promise<{
49
+ isFork: boolean;
50
+ upstreamUrl?: string;
51
+ }>;
52
+ ensureUpstreamRemote(cwd: string, upstreamUrl: string): Promise<void>;
53
+ fetchUpstream(cwd: string): Promise<void>;
54
+ syncForkMain(cwd: string): Promise<void>;
55
+ rebase(cwd: string, branch: string, onto: string): Promise<void>;
56
+ private parseConflictFiles;
48
57
  }
49
58
  //# 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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"}
@@ -652,6 +652,99 @@ let GitPrService = class GitPrService {
652
652
  commitCount,
653
653
  };
654
654
  }
655
+ async isFork(cwd) {
656
+ try {
657
+ const { stdout } = await this.execFile('gh', ['repo', 'view', '--json', 'parent', '--jq', '.parent.url'], { cwd });
658
+ const url = stdout.trim();
659
+ if (!url || url === 'null') {
660
+ return { isFork: false };
661
+ }
662
+ return { isFork: true, upstreamUrl: url };
663
+ }
664
+ catch {
665
+ return { isFork: false };
666
+ }
667
+ }
668
+ async ensureUpstreamRemote(cwd, upstreamUrl) {
669
+ try {
670
+ await this.execFile('git', ['remote', 'get-url', 'upstream'], { cwd });
671
+ // Remote already exists — no-op
672
+ }
673
+ catch {
674
+ // Remote does not exist — add it
675
+ try {
676
+ await this.execFile('git', ['remote', 'add', 'upstream', upstreamUrl], { cwd });
677
+ }
678
+ catch (error) {
679
+ throw this.parseGitError(error);
680
+ }
681
+ }
682
+ }
683
+ async fetchUpstream(cwd) {
684
+ try {
685
+ await this.execFile('git', ['fetch', 'upstream'], { cwd });
686
+ }
687
+ catch (error) {
688
+ throw this.parseGitError(error);
689
+ }
690
+ }
691
+ async syncForkMain(cwd) {
692
+ // Save current branch to restore after sync
693
+ let currentBranch;
694
+ try {
695
+ const { stdout } = await this.execFile('git', ['symbolic-ref', '--short', 'HEAD'], { cwd });
696
+ currentBranch = stdout.trim();
697
+ }
698
+ catch {
699
+ // Detached HEAD — save commit hash instead
700
+ const { stdout } = await this.execFile('git', ['rev-parse', 'HEAD'], { cwd });
701
+ currentBranch = stdout.trim();
702
+ }
703
+ try {
704
+ await this.fetchUpstream(cwd);
705
+ await this.execFile('git', ['checkout', 'main'], { cwd });
706
+ await this.execFile('git', ['reset', '--hard', 'upstream/main'], { cwd });
707
+ }
708
+ finally {
709
+ // Restore previous branch even if sync partially fails
710
+ try {
711
+ await this.execFile('git', ['checkout', currentBranch], { cwd });
712
+ }
713
+ catch {
714
+ // best effort — ignore restore failure
715
+ }
716
+ }
717
+ }
718
+ async rebase(cwd, branch, onto) {
719
+ try {
720
+ await this.execFile('git', ['rebase', onto], { cwd });
721
+ }
722
+ catch (error) {
723
+ // Extract stdout/stderr from the exec error to find conflict file names
724
+ const stdout = error.stdout ?? '';
725
+ const stderr = error.stderr ?? '';
726
+ const combined = `${stdout}\n${stderr}`;
727
+ const conflictFiles = this.parseConflictFiles(combined);
728
+ // Abort to keep the worktree clean
729
+ try {
730
+ await this.execFile('git', ['rebase', '--abort'], { cwd });
731
+ }
732
+ catch {
733
+ // abort is best-effort — ignore failure
734
+ }
735
+ if (conflictFiles.length > 0) {
736
+ const fileList = conflictFiles.map((f) => ` - ${f}`).join('\n');
737
+ throw new GitPrError(`Rebase of '${branch}' onto '${onto}' failed due to conflicts.\n` +
738
+ `Conflicting files:\n${fileList}\n\n` +
739
+ `Resolve the conflicts manually then re-run the rebase command.`, GitPrErrorCode.REBASE_CONFLICT, error instanceof Error ? error : undefined);
740
+ }
741
+ throw this.parseGitError(error);
742
+ }
743
+ }
744
+ parseConflictFiles(output) {
745
+ const matches = output.matchAll(/CONFLICT \(content\): Merge conflict in (.+)/g);
746
+ return [...matches].map((m) => m[1].trim());
747
+ }
655
748
  };
656
749
  GitPrService = __decorate([
657
750
  injectable(),
@@ -18,7 +18,6 @@ export declare class WorktreeService implements IWorktreeService {
18
18
  private readonly execFile;
19
19
  constructor(execFile: ExecFunction);
20
20
  create(repoPath: string, branch: string, worktreePath: string, startPoint?: string): Promise<WorktreeInfo>;
21
- addExisting(repoPath: string, branch: string, worktreePath: string): Promise<WorktreeInfo>;
22
21
  remove(repoPath: string, worktreePath: string, force?: boolean): Promise<void>;
23
22
  prune(repoPath: string): Promise<void>;
24
23
  list(repoPath: string): Promise<WorktreeInfo[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"worktree.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/git/worktree.service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACb,MAAM,0EAA0E,CAAC;AAQlF;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CACzB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,MAAM,KACb,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEjD,qBACa,eAAgB,YAAW,gBAAgB;IAClB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,YAAY;IAErE,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,CAAC;IAuBlB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAoB1F,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAW9E,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAO/C,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK1D,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWhE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWtE,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwC1D,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAQzD,OAAO,CAAC,mBAAmB;IA2B3B,OAAO,CAAC,aAAa;IAgCrB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,qBAAqB;CAsB9B"}
1
+ {"version":3,"file":"worktree.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/git/worktree.service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACb,MAAM,0EAA0E,CAAC;AAQlF;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CACzB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,MAAM,KACb,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEjD,qBACa,eAAgB,YAAW,gBAAgB;IAClB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,YAAY;IAErE,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,CAAC;IAuBlB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAW9E,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAO/C,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK1D,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWhE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWtE,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwC1D,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAQzD,OAAO,CAAC,mBAAmB;IA2B3B,OAAO,CAAC,aAAa;IAgCrB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,qBAAqB;CAsB9B"}
@@ -50,21 +50,6 @@ let WorktreeService = class WorktreeService {
50
50
  }
51
51
  return created;
52
52
  }
53
- async addExisting(repoPath, branch, worktreePath) {
54
- try {
55
- await this.execFile('git', ['worktree', 'add', worktreePath, branch], { cwd: repoPath });
56
- }
57
- catch (error) {
58
- throw this.parseGitError(error);
59
- }
60
- const worktrees = await this.list(repoPath);
61
- const created = worktrees.find((w) => w.branch === branch) ??
62
- worktrees.find((w) => this.arePathsEquivalent(w.path, worktreePath));
63
- if (!created) {
64
- throw new WorktreeError('Worktree created but not found in list', WorktreeErrorCode.GIT_ERROR);
65
- }
66
- return created;
67
- }
68
53
  async remove(repoPath, worktreePath, force) {
69
54
  try {
70
55
  const args = ['worktree', 'remove'];
@@ -20,7 +20,7 @@ import { createReviewCommand } from './review.command.js';
20
20
  import { createApproveCommand } from './approve.command.js';
21
21
  import { createRejectCommand } from './reject.command.js';
22
22
  import { createLogsCommand } from './logs.command.js';
23
- import { createAdoptCommand } from './adopt.command.js';
23
+ import { createRebaseCommand } from './rebase.command.js';
24
24
  /**
25
25
  * Create the feat command group
26
26
  */
@@ -37,5 +37,5 @@ export function createFeatCommand() {
37
37
  .addCommand(createApproveCommand())
38
38
  .addCommand(createRejectCommand())
39
39
  .addCommand(createLogsCommand())
40
- .addCommand(createAdoptCommand());
40
+ .addCommand(createRebaseCommand());
41
41
  }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Feature Rebase Command
3
+ *
4
+ * Rebases a feature branch on top of the current main branch.
5
+ * For fork repositories, syncs local main with upstream first.
6
+ * Aborts and surfaces conflicting file names on rebase conflict.
7
+ *
8
+ * Usage:
9
+ * shep feat rebase <feature-id>
10
+ */
11
+ import { Command } from 'commander';
12
+ export declare function createRebaseCommand(): Command;
13
+ //# sourceMappingURL=rebase.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rebase.command.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/feat/rebase.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,mBAAmB,IAAI,OAAO,CA4B7C"}