@shepai/cli 1.136.1 → 1.137.0

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 (305) hide show
  1. package/apis/json-schema/FeatureFlags.yaml +5 -0
  2. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts +91 -5
  3. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts.map +1 -1
  4. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.js +6 -4
  5. package/dist/packages/core/src/application/use-cases/features/get-branch-sync-status.use-case.d.ts +25 -0
  6. package/dist/packages/core/src/application/use-cases/features/get-branch-sync-status.use-case.d.ts.map +1 -0
  7. package/dist/packages/core/src/application/use-cases/features/get-branch-sync-status.use-case.js +62 -0
  8. package/dist/packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.d.ts +34 -0
  9. package/dist/packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.d.ts.map +1 -0
  10. package/dist/packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.js +139 -0
  11. package/dist/packages/core/src/application/use-cases/repositories/sync-repository-main.use-case.d.ts +16 -0
  12. package/dist/packages/core/src/application/use-cases/repositories/sync-repository-main.use-case.d.ts.map +1 -0
  13. package/dist/packages/core/src/application/use-cases/repositories/sync-repository-main.use-case.js +43 -0
  14. package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
  15. package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +1 -0
  16. package/dist/packages/core/src/domain/generated/output.d.ts +4 -0
  17. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  18. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  19. package/dist/packages/core/src/infrastructure/di/container.js +20 -0
  20. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +1 -0
  21. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
  22. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +2 -0
  23. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/042-add-feature-flag-git-rebase-sync.d.ts +11 -0
  24. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/042-add-feature-flag-git-rebase-sync.d.ts.map +1 -0
  25. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/042-add-feature-flag-git-rebase-sync.js +17 -0
  26. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
  27. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +3 -2
  28. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.prompt.d.ts +35 -0
  29. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.prompt.d.ts.map +1 -0
  30. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.prompt.js +66 -0
  31. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.d.ts +42 -0
  32. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.d.ts.map +1 -0
  33. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.js +169 -0
  34. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts +10 -0
  35. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts.map +1 -1
  36. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.js +150 -0
  37. package/dist/src/presentation/web/app/(dashboard)/get-graph-data.d.ts.map +1 -1
  38. package/dist/src/presentation/web/app/(dashboard)/get-graph-data.js +5 -12
  39. package/dist/src/presentation/web/app/actions/get-branch-sync-status.d.ts +11 -0
  40. package/dist/src/presentation/web/app/actions/get-branch-sync-status.d.ts.map +1 -0
  41. package/dist/src/presentation/web/app/actions/get-branch-sync-status.js +22 -0
  42. package/dist/src/presentation/web/app/actions/rebase-feature.d.ts +5 -0
  43. package/dist/src/presentation/web/app/actions/rebase-feature.d.ts.map +1 -0
  44. package/dist/src/presentation/web/app/actions/rebase-feature.js +16 -0
  45. package/dist/src/presentation/web/app/actions/sync-repository.d.ts +5 -0
  46. package/dist/src/presentation/web/app/actions/sync-repository.d.ts.map +1 -0
  47. package/dist/src/presentation/web/app/actions/sync-repository.js +16 -0
  48. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.d.ts.map +1 -1
  49. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.js +16 -1
  50. package/dist/src/presentation/web/components/common/control-center-drawer/repository-drawer-client.d.ts.map +1 -1
  51. package/dist/src/presentation/web/components/common/control-center-drawer/repository-drawer-client.js +4 -4
  52. package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.d.ts +4 -0
  53. package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.d.ts.map +1 -1
  54. package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.js +32 -1
  55. package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.d.ts.map +1 -1
  56. package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.js +1 -0
  57. package/dist/src/presentation/web/components/common/feature-drawer-tabs/branch-sync-status.d.ts +12 -0
  58. package/dist/src/presentation/web/components/common/feature-drawer-tabs/branch-sync-status.d.ts.map +1 -0
  59. package/dist/src/presentation/web/components/common/feature-drawer-tabs/branch-sync-status.js +13 -0
  60. package/dist/src/presentation/web/components/common/feature-drawer-tabs/branch-sync-status.stories.d.ts +15 -0
  61. package/dist/src/presentation/web/components/common/feature-drawer-tabs/branch-sync-status.stories.d.ts.map +1 -0
  62. package/dist/src/presentation/web/components/common/feature-drawer-tabs/branch-sync-status.stories.js +86 -0
  63. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts +9 -1
  64. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts.map +1 -1
  65. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.js +2 -2
  66. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.d.ts +9 -1
  67. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.d.ts.map +1 -1
  68. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.js +3 -2
  69. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.d.ts +6 -0
  70. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.d.ts.map +1 -1
  71. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.js +34 -0
  72. package/dist/src/presentation/web/components/common/open-action-menu/open-action-menu.stories.d.ts.map +1 -1
  73. package/dist/src/presentation/web/components/common/open-action-menu/open-action-menu.stories.js +3 -0
  74. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.d.ts.map +1 -1
  75. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.js +5 -3
  76. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.d.ts +2 -0
  77. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.d.ts.map +1 -1
  78. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.js +21 -0
  79. package/dist/src/presentation/web/components/common/repository-node/repository-node.js +1 -1
  80. package/dist/src/presentation/web/components/common/repository-node/use-repository-actions.d.ts +4 -0
  81. package/dist/src/presentation/web/components/common/repository-node/use-repository-actions.d.ts.map +1 -1
  82. package/dist/src/presentation/web/components/common/repository-node/use-repository-actions.js +11 -0
  83. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.d.ts.map +1 -1
  84. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.js +3 -0
  85. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.d.ts.map +1 -1
  86. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.js +3 -0
  87. package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
  88. package/dist/src/presentation/web/components/features/settings/settings-page-client.js +5 -0
  89. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.d.ts.map +1 -1
  90. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.js +1 -0
  91. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.d.ts.map +1 -1
  92. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.js +1 -0
  93. package/dist/src/presentation/web/hooks/feature-flags-context.d.ts.map +1 -1
  94. package/dist/src/presentation/web/hooks/feature-flags-context.js +1 -0
  95. package/dist/src/presentation/web/hooks/use-branch-sync-status.d.ts +14 -0
  96. package/dist/src/presentation/web/hooks/use-branch-sync-status.d.ts.map +1 -0
  97. package/dist/src/presentation/web/hooks/use-branch-sync-status.js +67 -0
  98. package/dist/src/presentation/web/lib/feature-flags.d.ts +2 -0
  99. package/dist/src/presentation/web/lib/feature-flags.d.ts.map +1 -1
  100. package/dist/src/presentation/web/lib/feature-flags.js +5 -0
  101. package/dist/tsconfig.build.tsbuildinfo +1 -1
  102. package/package.json +1 -1
  103. package/web/.next/BUILD_ID +1 -1
  104. package/web/.next/build-manifest.json +2 -2
  105. package/web/.next/fallback-build-manifest.json +2 -2
  106. package/web/.next/prerender-manifest.json +3 -3
  107. package/web/.next/required-server-files.js +2 -2
  108. package/web/.next/required-server-files.json +2 -2
  109. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +65 -50
  110. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +2 -2
  111. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  112. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  113. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +65 -50
  114. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +2 -2
  115. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  116. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  117. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +107 -62
  118. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +2 -2
  119. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  120. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  121. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +107 -62
  122. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +2 -2
  123. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  124. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  125. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +61 -46
  126. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +2 -2
  127. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  128. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  129. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +65 -50
  130. package/web/.next/server/app/(dashboard)/create/page.js +2 -2
  131. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  132. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  133. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +107 -62
  134. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +2 -2
  135. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  136. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  137. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +107 -62
  138. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +2 -2
  139. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  140. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  141. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +61 -46
  142. package/web/.next/server/app/(dashboard)/page.js +2 -2
  143. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  144. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  145. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +61 -46
  146. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +2 -2
  147. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  148. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  149. package/web/.next/server/app/_global-error.html +2 -2
  150. package/web/.next/server/app/_global-error.rsc +1 -1
  151. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  152. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  153. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  154. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  155. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  156. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +3 -3
  157. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  158. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  159. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  160. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  161. package/web/.next/server/app/settings/page/server-reference-manifest.json +8 -8
  162. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  163. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  164. package/web/.next/server/app/skills/page/server-reference-manifest.json +8 -8
  165. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  166. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  167. package/web/.next/server/app/tools/page/server-reference-manifest.json +8 -8
  168. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  169. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  170. package/web/.next/server/app/version/page/server-reference-manifest.json +3 -3
  171. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  172. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js +1 -1
  173. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js.map +1 -1
  174. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  175. package/web/.next/server/chunks/[root-of-the-server]__c6e32a23._.js.map +1 -1
  176. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
  177. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  178. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  179. package/web/.next/server/chunks/ssr/[root-of-the-server]__1626f5d7._.js +4 -0
  180. package/web/.next/server/chunks/ssr/[root-of-the-server]__1626f5d7._.js.map +1 -0
  181. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  182. package/web/.next/server/chunks/ssr/[root-of-the-server]__3ef34e4c._.js +1 -1
  183. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js +1 -1
  184. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js.map +1 -1
  185. package/web/.next/server/chunks/ssr/[root-of-the-server]__49557873._.js +4 -0
  186. package/web/.next/server/chunks/ssr/[root-of-the-server]__49557873._.js.map +1 -0
  187. package/web/.next/server/chunks/ssr/[root-of-the-server]__6ec59045._.js.map +1 -1
  188. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js +1 -1
  189. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js.map +1 -1
  190. package/web/.next/server/chunks/ssr/[root-of-the-server]__90fdc0ee._.js +4 -0
  191. package/web/.next/server/chunks/ssr/[root-of-the-server]__90fdc0ee._.js.map +1 -0
  192. package/web/.next/server/chunks/ssr/[root-of-the-server]__a5f9c6e5._.js +2 -2
  193. package/web/.next/server/chunks/ssr/[root-of-the-server]__a5f9c6e5._.js.map +1 -1
  194. package/web/.next/server/chunks/ssr/[root-of-the-server]__a7259d16._.js +4 -0
  195. package/web/.next/server/chunks/ssr/[root-of-the-server]__a7259d16._.js.map +1 -0
  196. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +2 -2
  197. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  198. package/web/.next/server/chunks/ssr/[root-of-the-server]__cb850066._.js +3 -0
  199. package/web/.next/server/chunks/ssr/[root-of-the-server]__cb850066._.js.map +1 -0
  200. package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js +1 -1
  201. package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js.map +1 -1
  202. package/web/.next/server/chunks/ssr/_0020fddd._.js +1 -1
  203. package/web/.next/server/chunks/ssr/_0020fddd._.js.map +1 -1
  204. package/web/.next/server/chunks/ssr/_02ec1aea._.js +1 -1
  205. package/web/.next/server/chunks/ssr/_02ec1aea._.js.map +1 -1
  206. package/web/.next/server/chunks/ssr/{_fafd03ec._.js → _037421b9._.js} +2 -2
  207. package/web/.next/server/chunks/ssr/_037421b9._.js.map +1 -0
  208. package/web/.next/server/chunks/ssr/_149f6559._.js +4 -0
  209. package/web/.next/server/chunks/ssr/_149f6559._.js.map +1 -0
  210. package/web/.next/server/chunks/ssr/_1a09002f._.js +4 -0
  211. package/web/.next/server/chunks/ssr/_1a09002f._.js.map +1 -0
  212. package/web/.next/server/chunks/ssr/_48a8ee28._.js +6 -0
  213. package/web/.next/server/chunks/ssr/_48a8ee28._.js.map +1 -0
  214. package/web/.next/server/chunks/ssr/_6e8c85b1._.js +6 -0
  215. package/web/.next/server/chunks/ssr/_6e8c85b1._.js.map +1 -0
  216. package/web/.next/server/chunks/ssr/_7dca1882._.js +1 -1
  217. package/web/.next/server/chunks/ssr/_7dca1882._.js.map +1 -1
  218. package/web/.next/server/chunks/ssr/_83220ba0._.js +4 -0
  219. package/web/.next/server/chunks/ssr/_83220ba0._.js.map +1 -0
  220. package/web/.next/server/chunks/ssr/_939287c5._.js +4 -0
  221. package/web/.next/server/chunks/ssr/_939287c5._.js.map +1 -0
  222. package/web/.next/server/chunks/ssr/{_3a8b11f5._.js → _9cb5f6e3._.js} +2 -2
  223. package/web/.next/server/chunks/ssr/{_3a8b11f5._.js.map → _9cb5f6e3._.js.map} +1 -1
  224. package/web/.next/server/chunks/ssr/_a37f5f18._.js +1 -1
  225. package/web/.next/server/chunks/ssr/_a37f5f18._.js.map +1 -1
  226. package/web/.next/server/chunks/ssr/_a9f57758._.js +1 -1
  227. package/web/.next/server/chunks/ssr/_a9f57758._.js.map +1 -1
  228. package/web/.next/server/chunks/ssr/_cfbd1d7e._.js +3 -0
  229. package/web/.next/server/chunks/ssr/_cfbd1d7e._.js.map +1 -0
  230. package/web/.next/server/chunks/ssr/_d4b20e29._.js.map +1 -1
  231. package/web/.next/server/chunks/ssr/_d8575088._.js +1 -1
  232. package/web/.next/server/chunks/ssr/_d8575088._.js.map +1 -1
  233. package/web/.next/server/chunks/ssr/_f39a1adb._.js +1 -1
  234. package/web/.next/server/chunks/ssr/_f39a1adb._.js.map +1 -1
  235. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  236. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  237. package/web/.next/server/chunks/ssr/src_presentation_web_951640a3._.js +3 -0
  238. package/web/.next/server/chunks/ssr/{src_presentation_web_9d7292c4._.js.map → src_presentation_web_951640a3._.js.map} +1 -1
  239. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js +1 -1
  240. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js.map +1 -1
  241. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js +1 -1
  242. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js.map +1 -1
  243. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +3 -0
  244. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js.map +1 -0
  245. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
  246. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js.map +1 -1
  247. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  248. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  249. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  250. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  251. package/web/.next/server/pages/500.html +2 -2
  252. package/web/.next/server/server-reference-manifest.js +1 -1
  253. package/web/.next/server/server-reference-manifest.json +457 -307
  254. package/web/.next/static/chunks/{d44bf63a94fd5d79.js → 0bd451437bb30264.js} +1 -1
  255. package/web/.next/static/chunks/{73fd16bb130a559c.js → 29fe67f664ff2dc6.js} +1 -1
  256. package/web/.next/static/chunks/{d11f1dbba7daafbd.js → 5aa808c7bec008f3.js} +1 -1
  257. package/web/.next/static/chunks/5fe8c723c668f1ef.js +2 -0
  258. package/web/.next/static/chunks/6a370f2709c81d83.js +1 -0
  259. package/web/.next/static/chunks/{c2311839bfa63e4a.js → 92d66288f6e5f235.js} +1 -1
  260. package/web/.next/static/chunks/ab3afb0b942c1eb2.css +1 -0
  261. package/web/.next/static/chunks/{4938159e46498d00.js → c17f8118fc760923.js} +1 -1
  262. package/web/.next/static/chunks/{1ccea0ca4cca00f7.js → c473e2924fbd8fd1.js} +1 -1
  263. package/web/.next/static/chunks/{68351a1fb1e57d86.js → d73ad54d54cd7e1d.js} +1 -1
  264. package/web/.next/static/chunks/{5e66bfba061db621.js → db80bb0df7318fac.js} +2 -2
  265. package/web/.next/static/chunks/{e370f42e84b4ac0d.js → e4024647334fa56f.js} +1 -1
  266. package/web/.next/static/chunks/{0b7fe2ac4f078f54.js → f070c67389a686ff.js} +1 -1
  267. package/web/.next/static/chunks/{a21d883baebd7bdb.js → f3e37f559952d6a1.js} +1 -1
  268. package/web/.next/static/chunks/f66c996402a430f5.js +1 -0
  269. package/web/.next/static/chunks/fa89e48e0d67e4dc.js +1 -0
  270. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_b49d9c97.js +0 -3
  271. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_b49d9c97.js.map +0 -1
  272. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_28632197.js +0 -3
  273. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_28632197.js.map +0 -1
  274. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_10695d37.js +0 -3
  275. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_10695d37.js.map +0 -1
  276. package/web/.next/server/chunks/ssr/[root-of-the-server]__47ded061._.js +0 -3
  277. package/web/.next/server/chunks/ssr/[root-of-the-server]__47ded061._.js.map +0 -1
  278. package/web/.next/server/chunks/ssr/[root-of-the-server]__68ce373c._.js +0 -3
  279. package/web/.next/server/chunks/ssr/[root-of-the-server]__68ce373c._.js.map +0 -1
  280. package/web/.next/server/chunks/ssr/[root-of-the-server]__718766da._.js +0 -3
  281. package/web/.next/server/chunks/ssr/[root-of-the-server]__718766da._.js.map +0 -1
  282. package/web/.next/server/chunks/ssr/[root-of-the-server]__b3dbadca._.js +0 -3
  283. package/web/.next/server/chunks/ssr/[root-of-the-server]__b3dbadca._.js.map +0 -1
  284. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdd058b2._.js +0 -3
  285. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdd058b2._.js.map +0 -1
  286. package/web/.next/server/chunks/ssr/_e69a26ba._.js +0 -4
  287. package/web/.next/server/chunks/ssr/_e69a26ba._.js.map +0 -1
  288. package/web/.next/server/chunks/ssr/_fafd03ec._.js.map +0 -1
  289. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +0 -3
  290. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +0 -1
  291. package/web/.next/server/chunks/ssr/src_presentation_web_53666118._.js +0 -5
  292. package/web/.next/server/chunks/ssr/src_presentation_web_53666118._.js.map +0 -1
  293. package/web/.next/server/chunks/ssr/src_presentation_web_9d7292c4._.js +0 -3
  294. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_d95e128d.js +0 -3
  295. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_d95e128d.js.map +0 -1
  296. package/web/.next/server/chunks/ssr/src_presentation_web_e4df6dd7._.js +0 -5
  297. package/web/.next/server/chunks/ssr/src_presentation_web_e4df6dd7._.js.map +0 -1
  298. package/web/.next/static/chunks/92cd6f523639a6fa.css +0 -1
  299. package/web/.next/static/chunks/9f3f53cc48fa1ccf.js +0 -2
  300. package/web/.next/static/chunks/d0dff217a94d4ee1.js +0 -1
  301. package/web/.next/static/chunks/e84d2b794f97eb3a.js +0 -1
  302. package/web/.next/static/chunks/eb9841ec4d80af01.js +0 -1
  303. /package/web/.next/static/{Ywxn_J9lSl6kCndILP_ke → i847vZGPwgKFPH7P5kTBl}/_buildManifest.js +0 -0
  304. /package/web/.next/static/{Ywxn_J9lSl6kCndILP_ke → i847vZGPwgKFPH7P5kTBl}/_clientMiddlewareManifest.json +0 -0
  305. /package/web/.next/static/{Ywxn_J9lSl6kCndILP_ke → i847vZGPwgKFPH7P5kTBl}/_ssgManifest.js +0 -0
@@ -22,6 +22,10 @@ properties:
22
22
  type: boolean
23
23
  default: false
24
24
  description: Enable adopt branch feature to import existing branches as tracked features
25
+ gitRebaseSync:
26
+ type: boolean
27
+ default: false
28
+ description: Enable git rebase-on-main and sync-main operations in the web UI
25
29
  reactFileManager:
26
30
  type: boolean
27
31
  default: false
@@ -32,5 +36,6 @@ required:
32
36
  - debug
33
37
  - githubImport
34
38
  - adoptBranch
39
+ - gitRebaseSync
35
40
  - reactFileManager
36
41
  description: Feature flag toggles for runtime feature control
@@ -9,15 +9,17 @@ 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",
13
12
  AUTH_FAILURE = "AUTH_FAILURE",
14
- GH_NOT_FOUND = "GH_NOT_FOUND",
15
- NETWORK_ERROR = "NETWORK_ERROR",
16
- CI_TIMEOUT = "CI_TIMEOUT",
17
13
  BRANCH_NOT_FOUND = "BRANCH_NOT_FOUND",
14
+ CI_TIMEOUT = "CI_TIMEOUT",
15
+ GH_NOT_FOUND = "GH_NOT_FOUND",
18
16
  GIT_ERROR = "GIT_ERROR",
17
+ MERGE_CONFLICT = "MERGE_CONFLICT",
19
18
  MERGE_FAILED = "MERGE_FAILED",
20
- PR_NOT_FOUND = "PR_NOT_FOUND"
19
+ NETWORK_ERROR = "NETWORK_ERROR",
20
+ PR_NOT_FOUND = "PR_NOT_FOUND",
21
+ REBASE_CONFLICT = "REBASE_CONFLICT",
22
+ SYNC_FAILED = "SYNC_FAILED"
21
23
  }
22
24
  /**
23
25
  * Typed error for git PR operations.
@@ -321,5 +323,89 @@ export interface IGitPrService {
321
323
  * @throws GitPrError with GH_NOT_FOUND or GIT_ERROR code on failure
322
324
  */
323
325
  getFailureLogs(cwd: string, runId: string, branch: string, logMaxChars?: number): Promise<string>;
326
+ /**
327
+ * Sync the remote-tracking ref for the base branch.
328
+ * If currently on the base branch, uses `git pull --ff-only`.
329
+ * If on a different branch (including worktrees), uses `git fetch origin <baseBranch>`
330
+ * which updates `origin/<baseBranch>` without touching the local branch ref.
331
+ * This avoids the "refusing to fetch into branch checked out at..." error
332
+ * when the local base branch is checked out in another worktree.
333
+ *
334
+ * @param cwd - Working directory path
335
+ * @param baseBranch - The base branch to sync (e.g. "main")
336
+ * @throws GitPrError with SYNC_FAILED code if the branch has diverged and cannot fast-forward
337
+ * @throws GitPrError with GIT_ERROR code on other git failures
338
+ */
339
+ syncMain(cwd: string, baseBranch: string): Promise<void>;
340
+ /**
341
+ * Rebase the feature branch onto `origin/<baseBranch>`.
342
+ * Uses the remote-tracking ref (not the local branch) to avoid issues
343
+ * when the local base branch is checked out in another worktree.
344
+ * Checks for dirty worktree before starting. Detects conflict state
345
+ * from git exit code and stderr — throws REBASE_CONFLICT if conflicts
346
+ * are encountered (caller is responsible for resolution or abort).
347
+ *
348
+ * @param cwd - Working directory path
349
+ * @param featureBranch - The feature branch to rebase
350
+ * @param baseBranch - The base branch name (rebase target will be origin/<baseBranch>)
351
+ * @throws GitPrError with GIT_ERROR code if the worktree is dirty
352
+ * @throws GitPrError with REBASE_CONFLICT code if conflicts are detected
353
+ * @throws GitPrError with BRANCH_NOT_FOUND code if a branch does not exist
354
+ */
355
+ rebaseOnMain(cwd: string, featureBranch: string, baseBranch: string): Promise<void>;
356
+ /**
357
+ * Get the list of files with unresolved conflicts (unmerged paths).
358
+ * Uses `git diff --name-only --diff-filter=U` to identify conflicted files.
359
+ *
360
+ * @param cwd - Working directory path
361
+ * @returns Array of file paths with unresolved conflicts
362
+ * @throws GitPrError with GIT_ERROR code on failure
363
+ */
364
+ getConflictedFiles(cwd: string): Promise<string[]>;
365
+ /**
366
+ * Stage specific files in the working directory.
367
+ * Uses `git add` for the specified file paths.
368
+ *
369
+ * @param cwd - Working directory path
370
+ * @param files - Array of file paths to stage
371
+ * @throws GitPrError with GIT_ERROR code on failure
372
+ */
373
+ stageFiles(cwd: string, files: string[]): Promise<void>;
374
+ /**
375
+ * Continue an in-progress rebase after conflicts have been resolved.
376
+ * Runs `git rebase --continue`. May throw REBASE_CONFLICT if the next
377
+ * commit in the rebase also has conflicts.
378
+ *
379
+ * @param cwd - Working directory path
380
+ * @throws GitPrError with REBASE_CONFLICT code if new conflicts are detected
381
+ * @throws GitPrError with GIT_ERROR code on other git failures
382
+ */
383
+ rebaseContinue(cwd: string): Promise<void>;
384
+ /**
385
+ * Abort an in-progress rebase, restoring the branch to its pre-rebase state.
386
+ * Runs `git rebase --abort`.
387
+ *
388
+ * @param cwd - Working directory path
389
+ * @throws GitPrError with GIT_ERROR code on failure
390
+ */
391
+ rebaseAbort(cwd: string): Promise<void>;
392
+ /**
393
+ * Get the sync status (ahead/behind counts) between a feature branch
394
+ * and a base branch's remote-tracking ref.
395
+ *
396
+ * Uses:
397
+ * - `git rev-list --count origin/<baseBranch>..<featureBranch>` → ahead
398
+ * - `git rev-list --count <featureBranch>..origin/<baseBranch>` → behind
399
+ *
400
+ * @param cwd - Working directory path
401
+ * @param featureBranch - The feature branch to check
402
+ * @param baseBranch - The base branch name (uses origin/<baseBranch>)
403
+ * @returns Object with ahead and behind commit counts
404
+ * @throws GitPrError with GIT_ERROR code on failure
405
+ */
406
+ getBranchSyncStatus(cwd: string, featureBranch: string, baseBranch: string): Promise<{
407
+ ahead: number;
408
+ behind: number;
409
+ }>;
324
410
  }
325
411
  //# 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,15 +9,17 @@
9
9
  */
10
10
  export var GitPrErrorCode;
11
11
  (function (GitPrErrorCode) {
12
- GitPrErrorCode["MERGE_CONFLICT"] = "MERGE_CONFLICT";
13
12
  GitPrErrorCode["AUTH_FAILURE"] = "AUTH_FAILURE";
14
- GitPrErrorCode["GH_NOT_FOUND"] = "GH_NOT_FOUND";
15
- GitPrErrorCode["NETWORK_ERROR"] = "NETWORK_ERROR";
16
- GitPrErrorCode["CI_TIMEOUT"] = "CI_TIMEOUT";
17
13
  GitPrErrorCode["BRANCH_NOT_FOUND"] = "BRANCH_NOT_FOUND";
14
+ GitPrErrorCode["CI_TIMEOUT"] = "CI_TIMEOUT";
15
+ GitPrErrorCode["GH_NOT_FOUND"] = "GH_NOT_FOUND";
18
16
  GitPrErrorCode["GIT_ERROR"] = "GIT_ERROR";
17
+ GitPrErrorCode["MERGE_CONFLICT"] = "MERGE_CONFLICT";
19
18
  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";
21
23
  })(GitPrErrorCode || (GitPrErrorCode = {}));
22
24
  /**
23
25
  * Typed error for git PR operations.
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Get Branch Sync Status Use Case
3
+ *
4
+ * Returns how many commits a feature branch is ahead/behind the base branch.
5
+ *
6
+ * Flow: resolve feature → determine cwd (worktree or repo root) →
7
+ * sync remote tracking ref → get branch sync status.
8
+ */
9
+ import type { IFeatureRepository } from '../../ports/output/repositories/feature-repository.interface.js';
10
+ import type { IGitPrService } from '../../ports/output/services/git-pr-service.interface.js';
11
+ import type { IWorktreeService } from '../../ports/output/services/worktree-service.interface.js';
12
+ export interface BranchSyncStatusResult {
13
+ ahead: number;
14
+ behind: number;
15
+ baseBranch: string;
16
+ }
17
+ export declare class GetBranchSyncStatusUseCase {
18
+ private readonly featureRepo;
19
+ private readonly gitPrService;
20
+ private readonly worktreeService;
21
+ constructor(featureRepo: IFeatureRepository, gitPrService: IGitPrService, worktreeService: IWorktreeService);
22
+ execute(featureId: string): Promise<BranchSyncStatusResult>;
23
+ private resolveCwd;
24
+ }
25
+ //# sourceMappingURL=get-branch-sync-status.use-case.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-branch-sync-status.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/features/get-branch-sync-status.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AAC1G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yDAAyD,CAAC;AAC7F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAElG,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBACa,0BAA0B;IAGnC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAJf,WAAW,EAAE,kBAAkB,EAE/B,YAAY,EAAE,aAAa,EAE3B,eAAe,EAAE,gBAAgB;IAG9C,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;YA0BnD,UAAU;CAOzB"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Get Branch Sync Status Use Case
3
+ *
4
+ * Returns how many commits a feature branch is ahead/behind the base branch.
5
+ *
6
+ * Flow: resolve feature → determine cwd (worktree or repo root) →
7
+ * sync remote tracking ref → get branch sync status.
8
+ */
9
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
10
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
11
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
12
+ 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;
13
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
14
+ };
15
+ var __metadata = (this && this.__metadata) || function (k, v) {
16
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
17
+ };
18
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
19
+ return function (target, key) { decorator(target, key, paramIndex); }
20
+ };
21
+ import { injectable, inject } from 'tsyringe';
22
+ let GetBranchSyncStatusUseCase = class GetBranchSyncStatusUseCase {
23
+ featureRepo;
24
+ gitPrService;
25
+ worktreeService;
26
+ constructor(featureRepo, gitPrService, worktreeService) {
27
+ this.featureRepo = featureRepo;
28
+ this.gitPrService = gitPrService;
29
+ this.worktreeService = worktreeService;
30
+ }
31
+ async execute(featureId) {
32
+ const feature = (await this.featureRepo.findById(featureId)) ??
33
+ (await this.featureRepo.findByIdPrefix(featureId));
34
+ if (!feature) {
35
+ throw new Error(`Feature not found: "${featureId}"`);
36
+ }
37
+ if (!feature.branch) {
38
+ throw new Error(`Feature "${featureId}" has no branch`);
39
+ }
40
+ const cwd = await this.resolveCwd(feature.repositoryPath, feature.branch);
41
+ const baseBranch = await this.gitPrService.getDefaultBranch(feature.repositoryPath);
42
+ // Sync the remote tracking ref so ahead/behind counts are current
43
+ await this.gitPrService.syncMain(cwd, baseBranch);
44
+ const { ahead, behind } = await this.gitPrService.getBranchSyncStatus(cwd, feature.branch, baseBranch);
45
+ return { ahead, behind, baseBranch };
46
+ }
47
+ async resolveCwd(repositoryPath, branch) {
48
+ const hasWorktree = await this.worktreeService.exists(repositoryPath, branch);
49
+ if (hasWorktree) {
50
+ return this.worktreeService.getWorktreePath(repositoryPath, branch);
51
+ }
52
+ return repositoryPath;
53
+ }
54
+ };
55
+ GetBranchSyncStatusUseCase = __decorate([
56
+ injectable(),
57
+ __param(0, inject('IFeatureRepository')),
58
+ __param(1, inject('IGitPrService')),
59
+ __param(2, inject('IWorktreeService')),
60
+ __metadata("design:paramtypes", [Object, Object, Object])
61
+ ], GetBranchSyncStatusUseCase);
62
+ export { GetBranchSyncStatusUseCase };
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Rebase Feature on Main Use Case
3
+ *
4
+ * Rebases a feature branch onto the latest main branch with auto-sync
5
+ * and agent-powered conflict resolution.
6
+ *
7
+ * Flow: resolve feature → create standalone agent run → record phase timing →
8
+ * determine cwd (worktree or repo root) → sync main → rebase →
9
+ * on conflict, delegate to ConflictResolutionService → complete timing.
10
+ */
11
+ import type { IFeatureRepository } from '../../ports/output/repositories/feature-repository.interface.js';
12
+ import type { IGitPrService } from '../../ports/output/services/git-pr-service.interface.js';
13
+ import type { IWorktreeService } from '../../ports/output/services/worktree-service.interface.js';
14
+ import type { IAgentRunRepository } from '../../ports/output/agents/agent-run-repository.interface.js';
15
+ import type { IPhaseTimingRepository } from '../../ports/output/agents/phase-timing-repository.interface.js';
16
+ import type { ConflictResolutionService } from '../../../infrastructure/services/agents/conflict-resolution/conflict-resolution.service.js';
17
+ export declare class RebaseFeatureOnMainUseCase {
18
+ private readonly featureRepo;
19
+ private readonly gitPrService;
20
+ private readonly worktreeService;
21
+ private readonly conflictResolutionService;
22
+ private readonly agentRunRepo;
23
+ private readonly phaseTimingRepo;
24
+ constructor(featureRepo: IFeatureRepository, gitPrService: IGitPrService, worktreeService: IWorktreeService, conflictResolutionService: ConflictResolutionService, agentRunRepo: IAgentRunRepository, phaseTimingRepo: IPhaseTimingRepository);
25
+ execute(featureId: string): Promise<void>;
26
+ private completeTiming;
27
+ /**
28
+ * Resolve the correct working directory for the feature.
29
+ * Uses the worktree path if a worktree exists for this branch,
30
+ * otherwise falls back to the repository root.
31
+ */
32
+ private resolveCwd;
33
+ }
34
+ //# sourceMappingURL=rebase-feature-on-main.use-case.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rebase-feature-on-main.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AAC1G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yDAAyD,CAAC;AAK7F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAClG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6DAA6D,CAAC;AACvG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gEAAgE,CAAC;AAE7G,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4FAA4F,CAAC;AAE5I,qBACa,0BAA0B;IAGnC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IAE1C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAVf,WAAW,EAAE,kBAAkB,EAE/B,YAAY,EAAE,aAAa,EAE3B,eAAe,EAAE,gBAAgB,EAEjC,yBAAyB,EAAE,yBAAyB,EAEpD,YAAY,EAAE,mBAAmB,EAEjC,eAAe,EAAE,sBAAsB;IAGpD,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAuEjC,cAAc;IAwB5B;;;;OAIG;YACW,UAAU;CAOzB"}
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Rebase Feature on Main Use Case
3
+ *
4
+ * Rebases a feature branch onto the latest main branch with auto-sync
5
+ * and agent-powered conflict resolution.
6
+ *
7
+ * Flow: resolve feature → create standalone agent run → record phase timing →
8
+ * determine cwd (worktree or repo root) → sync main → rebase →
9
+ * on conflict, delegate to ConflictResolutionService → complete timing.
10
+ */
11
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
12
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
13
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
14
+ 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;
15
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
16
+ };
17
+ var __metadata = (this && this.__metadata) || function (k, v) {
18
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
19
+ };
20
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
21
+ return function (target, key) { decorator(target, key, paramIndex); }
22
+ };
23
+ import { injectable, inject } from 'tsyringe';
24
+ import { randomUUID } from 'node:crypto';
25
+ import { GitPrError, GitPrErrorCode, } from '../../ports/output/services/git-pr-service.interface.js';
26
+ import { AgentRunStatus, AgentType } from '../../../domain/generated/output.js';
27
+ let RebaseFeatureOnMainUseCase = class RebaseFeatureOnMainUseCase {
28
+ featureRepo;
29
+ gitPrService;
30
+ worktreeService;
31
+ conflictResolutionService;
32
+ agentRunRepo;
33
+ phaseTimingRepo;
34
+ constructor(featureRepo, gitPrService, worktreeService, conflictResolutionService, agentRunRepo, phaseTimingRepo) {
35
+ this.featureRepo = featureRepo;
36
+ this.gitPrService = gitPrService;
37
+ this.worktreeService = worktreeService;
38
+ this.conflictResolutionService = conflictResolutionService;
39
+ this.agentRunRepo = agentRunRepo;
40
+ this.phaseTimingRepo = phaseTimingRepo;
41
+ }
42
+ async execute(featureId) {
43
+ // Resolve feature by exact ID or prefix
44
+ const feature = (await this.featureRepo.findById(featureId)) ??
45
+ (await this.featureRepo.findByIdPrefix(featureId));
46
+ if (!feature) {
47
+ throw new Error(`Feature not found: "${featureId}"`);
48
+ }
49
+ // Create standalone agent run + phase timing for activity timeline
50
+ const now = new Date().toISOString();
51
+ const agentRunId = randomUUID();
52
+ const phaseTimingId = randomUUID();
53
+ await this.agentRunRepo.create({
54
+ id: agentRunId,
55
+ agentType: AgentType.ClaudeCode,
56
+ agentName: 'rebase',
57
+ status: AgentRunStatus.running,
58
+ prompt: `Rebase ${feature.branch} on main`,
59
+ threadId: agentRunId,
60
+ startedAt: now,
61
+ featureId: feature.id,
62
+ repositoryPath: feature.repositoryPath,
63
+ createdAt: now,
64
+ updatedAt: now,
65
+ });
66
+ await this.phaseTimingRepo.save({
67
+ id: phaseTimingId,
68
+ agentRunId,
69
+ phase: 'rebase',
70
+ startedAt: now,
71
+ createdAt: now,
72
+ updatedAt: now,
73
+ });
74
+ const startMs = Date.now();
75
+ try {
76
+ // Determine working directory — worktree path if it exists, else repo root
77
+ const cwd = await this.resolveCwd(feature.repositoryPath, feature.branch);
78
+ const defaultBranch = await this.gitPrService.getDefaultBranch(feature.repositoryPath);
79
+ // Auto-sync main before rebasing (per spec decision)
80
+ await this.gitPrService.syncMain(cwd, defaultBranch);
81
+ // Attempt rebase
82
+ try {
83
+ await this.gitPrService.rebaseOnMain(cwd, feature.branch, defaultBranch);
84
+ }
85
+ catch (error) {
86
+ if (error instanceof GitPrError && error.code === GitPrErrorCode.REBASE_CONFLICT) {
87
+ // Delegate to agent-powered conflict resolution
88
+ await this.conflictResolutionService.resolve(cwd, feature.branch, defaultBranch);
89
+ // Conflict resolution succeeded — complete timing as success
90
+ await this.completeTiming(agentRunId, phaseTimingId, startMs, 'success');
91
+ return;
92
+ }
93
+ throw error;
94
+ }
95
+ // Rebase succeeded without conflicts
96
+ await this.completeTiming(agentRunId, phaseTimingId, startMs, 'success');
97
+ }
98
+ catch (error) {
99
+ // Record failure in timing
100
+ const message = error instanceof Error ? error.message : String(error);
101
+ await this.completeTiming(agentRunId, phaseTimingId, startMs, 'error', message);
102
+ throw error;
103
+ }
104
+ }
105
+ async completeTiming(agentRunId, phaseTimingId, startMs, exitCode, errorMessage) {
106
+ const completedAt = new Date().toISOString();
107
+ const durationMs = Date.now() - startMs;
108
+ await this.phaseTimingRepo.update(phaseTimingId, {
109
+ completedAt,
110
+ durationMs: BigInt(durationMs),
111
+ exitCode,
112
+ ...(errorMessage && { errorMessage }),
113
+ });
114
+ await this.agentRunRepo.updateStatus(agentRunId, exitCode === 'success' ? AgentRunStatus.completed : AgentRunStatus.failed, { completedAt, ...(errorMessage && { error: errorMessage }) });
115
+ }
116
+ /**
117
+ * Resolve the correct working directory for the feature.
118
+ * Uses the worktree path if a worktree exists for this branch,
119
+ * otherwise falls back to the repository root.
120
+ */
121
+ async resolveCwd(repositoryPath, branch) {
122
+ const hasWorktree = await this.worktreeService.exists(repositoryPath, branch);
123
+ if (hasWorktree) {
124
+ return this.worktreeService.getWorktreePath(repositoryPath, branch);
125
+ }
126
+ return repositoryPath;
127
+ }
128
+ };
129
+ RebaseFeatureOnMainUseCase = __decorate([
130
+ injectable(),
131
+ __param(0, inject('IFeatureRepository')),
132
+ __param(1, inject('IGitPrService')),
133
+ __param(2, inject('IWorktreeService')),
134
+ __param(3, inject('ConflictResolutionService')),
135
+ __param(4, inject('IAgentRunRepository')),
136
+ __param(5, inject('IPhaseTimingRepository')),
137
+ __metadata("design:paramtypes", [Object, Object, Object, Function, Object, Object])
138
+ ], RebaseFeatureOnMainUseCase);
139
+ export { RebaseFeatureOnMainUseCase };
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Sync Repository Main Use Case
3
+ *
4
+ * Syncs a repository's local main branch with the remote.
5
+ * Resolves the repository by ID, determines its path and default branch,
6
+ * then delegates to IGitPrService.syncMain().
7
+ */
8
+ import type { IRepositoryRepository } from '../../ports/output/repositories/repository-repository.interface.js';
9
+ import type { IGitPrService } from '../../ports/output/services/git-pr-service.interface.js';
10
+ export declare class SyncRepositoryMainUseCase {
11
+ private readonly repositoryRepo;
12
+ private readonly gitPrService;
13
+ constructor(repositoryRepo: IRepositoryRepository, gitPrService: IGitPrService);
14
+ execute(repoId: string): Promise<void>;
15
+ }
16
+ //# sourceMappingURL=sync-repository-main.use-case.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-repository-main.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/repositories/sync-repository-main.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oEAAoE,CAAC;AAChH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yDAAyD,CAAC;AAE7F,qBACa,yBAAyB;IAGlC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAFZ,cAAc,EAAE,qBAAqB,EAErC,YAAY,EAAE,aAAa;IAGxC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAS7C"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Sync Repository Main Use Case
3
+ *
4
+ * Syncs a repository's local main branch with the remote.
5
+ * Resolves the repository by ID, determines its path and default branch,
6
+ * then delegates to IGitPrService.syncMain().
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 SyncRepositoryMainUseCase = class SyncRepositoryMainUseCase {
22
+ repositoryRepo;
23
+ gitPrService;
24
+ constructor(repositoryRepo, gitPrService) {
25
+ this.repositoryRepo = repositoryRepo;
26
+ this.gitPrService = gitPrService;
27
+ }
28
+ async execute(repoId) {
29
+ const repository = await this.repositoryRepo.findById(repoId);
30
+ if (!repository) {
31
+ throw new Error(`Repository not found: "${repoId}"`);
32
+ }
33
+ const defaultBranch = await this.gitPrService.getDefaultBranch(repository.path);
34
+ await this.gitPrService.syncMain(repository.path, defaultBranch);
35
+ }
36
+ };
37
+ SyncRepositoryMainUseCase = __decorate([
38
+ injectable(),
39
+ __param(0, inject('IRepositoryRepository')),
40
+ __param(1, inject('IGitPrService')),
41
+ __metadata("design:paramtypes", [Object, Object])
42
+ ], SyncRepositoryMainUseCase);
43
+ export { SyncRepositoryMainUseCase };
@@ -1 +1 @@
1
- {"version":3,"file":"settings-defaults.factory.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/domain/factories/settings-defaults.factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,QAAQ,EAUT,MAAM,qBAAqB,CAAC;AA6C7B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,qBAAqB,IAAI,QAAQ,CAmFhD"}
1
+ {"version":3,"file":"settings-defaults.factory.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/domain/factories/settings-defaults.factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,QAAQ,EAUT,MAAM,qBAAqB,CAAC;AA6C7B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,qBAAqB,IAAI,QAAQ,CAoFhD"}
@@ -125,6 +125,7 @@ export function createDefaultSettings() {
125
125
  debug: false,
126
126
  githubImport: false,
127
127
  adoptBranch: false,
128
+ gitRebaseSync: false,
128
129
  reactFileManager: false,
129
130
  };
130
131
  return {
@@ -550,6 +550,10 @@ export type FeatureFlags = {
550
550
  * Enable adopt branch feature to import existing branches as tracked features
551
551
  */
552
552
  adoptBranch: boolean;
553
+ /**
554
+ * Enable git rebase-on-main and sync-main operations in the web UI
555
+ */
556
+ gitRebaseSync: boolean;
553
557
  /**
554
558
  * Use the built-in React file manager instead of the native OS folder picker
555
559
  */