@shepai/cli 1.129.2-pr396.29a046b → 1.129.2-pr409.8d19a07

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 (231) hide show
  1. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts +34 -72
  2. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts.map +1 -1
  3. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.js +6 -6
  4. package/dist/packages/core/src/application/use-cases/repositories/init-remote-repository.use-case.d.ts +28 -0
  5. package/dist/packages/core/src/application/use-cases/repositories/init-remote-repository.use-case.d.ts.map +1 -0
  6. package/dist/packages/core/src/application/use-cases/repositories/init-remote-repository.use-case.js +63 -0
  7. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  8. package/dist/packages/core/src/infrastructure/di/container.js +5 -15
  9. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts +5 -6
  10. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts.map +1 -1
  11. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.js +32 -134
  12. package/dist/src/presentation/cli/commands/repo/index.d.ts +4 -3
  13. package/dist/src/presentation/cli/commands/repo/index.d.ts.map +1 -1
  14. package/dist/src/presentation/cli/commands/repo/index.js +7 -4
  15. package/dist/src/presentation/cli/commands/repo/init-remote.command.d.ts +12 -0
  16. package/dist/src/presentation/cli/commands/repo/init-remote.command.d.ts.map +1 -0
  17. package/dist/src/presentation/cli/commands/repo/init-remote.command.js +60 -0
  18. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.d.ts.map +1 -1
  19. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.js +1 -2
  20. package/dist/src/presentation/web/components/common/control-center-drawer/repository-drawer-client.d.ts.map +1 -1
  21. package/dist/src/presentation/web/components/common/control-center-drawer/repository-drawer-client.js +4 -4
  22. package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.d.ts +0 -4
  23. package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.d.ts.map +1 -1
  24. package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.js +1 -32
  25. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts +1 -4
  26. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts.map +1 -1
  27. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.js +2 -2
  28. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.d.ts +1 -4
  29. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.d.ts.map +1 -1
  30. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.js +3 -8
  31. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.d.ts +0 -6
  32. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.d.ts.map +1 -1
  33. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.js +0 -30
  34. package/dist/src/presentation/web/components/common/open-action-menu/open-action-menu.stories.d.ts.map +1 -1
  35. package/dist/src/presentation/web/components/common/open-action-menu/open-action-menu.stories.js +0 -3
  36. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.d.ts.map +1 -1
  37. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.js +3 -3
  38. package/dist/src/presentation/web/components/common/repository-node/repository-node.js +1 -1
  39. package/dist/src/presentation/web/components/common/repository-node/use-repository-actions.d.ts +0 -4
  40. package/dist/src/presentation/web/components/common/repository-node/use-repository-actions.d.ts.map +1 -1
  41. package/dist/src/presentation/web/components/common/repository-node/use-repository-actions.js +0 -11
  42. package/dist/tsconfig.build.tsbuildinfo +1 -1
  43. package/package.json +1 -1
  44. package/web/.next/BUILD_ID +1 -1
  45. package/web/.next/build-manifest.json +2 -2
  46. package/web/.next/fallback-build-manifest.json +2 -2
  47. package/web/.next/prerender-manifest.json +3 -3
  48. package/web/.next/required-server-files.js +1 -1
  49. package/web/.next/required-server-files.json +1 -1
  50. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +48 -63
  51. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +1 -1
  52. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  53. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  54. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +48 -63
  55. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
  56. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  57. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  58. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +60 -90
  59. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +1 -1
  60. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  61. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  62. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +60 -90
  63. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -1
  64. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  65. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  66. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +44 -59
  67. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
  68. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  69. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  70. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +48 -63
  71. package/web/.next/server/app/(dashboard)/create/page.js +1 -1
  72. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  73. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  74. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +60 -90
  75. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +1 -1
  76. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  77. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  78. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +60 -90
  79. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -1
  80. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  81. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  82. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +44 -59
  83. package/web/.next/server/app/(dashboard)/page.js +1 -1
  84. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  85. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  86. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +44 -59
  87. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
  88. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  89. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  90. package/web/.next/server/app/_global-error.html +2 -2
  91. package/web/.next/server/app/_global-error.rsc +1 -1
  92. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  93. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  94. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  95. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  96. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  97. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +3 -3
  98. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  99. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  100. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  101. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  102. package/web/.next/server/app/settings/page/server-reference-manifest.json +8 -8
  103. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  104. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  105. package/web/.next/server/app/skills/page/server-reference-manifest.json +8 -8
  106. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  107. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  108. package/web/.next/server/app/tools/page/server-reference-manifest.json +8 -8
  109. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  110. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  111. package/web/.next/server/app/version/page/server-reference-manifest.json +3 -3
  112. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  113. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  114. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4e741df2.js +3 -0
  115. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4e741df2.js.map +1 -0
  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_026fdffa.js +3 -0
  119. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_026fdffa.js.map +1 -0
  120. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_8b91e197.js +3 -0
  121. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_8b91e197.js.map +1 -0
  122. package/web/.next/server/chunks/ssr/[root-of-the-server]__0e842eba._.js +1 -1
  123. package/web/.next/server/chunks/ssr/[root-of-the-server]__0e842eba._.js.map +1 -1
  124. package/web/.next/server/chunks/ssr/[root-of-the-server]__2f886f77._.js +2 -2
  125. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  126. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js +1 -1
  127. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js.map +1 -1
  128. package/web/.next/server/chunks/ssr/[root-of-the-server]__60684242._.js +2 -2
  129. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js +2 -2
  130. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js.map +1 -1
  131. package/web/.next/server/chunks/ssr/[root-of-the-server]__755cfe02._.js +3 -0
  132. package/web/.next/server/chunks/ssr/{[root-of-the-server]__30f59daf._.js.map → [root-of-the-server]__755cfe02._.js.map} +1 -1
  133. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js +1 -1
  134. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js.map +1 -1
  135. package/web/.next/server/chunks/ssr/[root-of-the-server]__a628fb91._.js +3 -0
  136. package/web/.next/server/chunks/ssr/[root-of-the-server]__a628fb91._.js.map +1 -0
  137. package/web/.next/server/chunks/ssr/[root-of-the-server]__bfba58e6._.js +3 -0
  138. package/web/.next/server/chunks/ssr/[root-of-the-server]__bfba58e6._.js.map +1 -0
  139. package/web/.next/server/chunks/ssr/[root-of-the-server]__c3ab8422._.js +3 -0
  140. package/web/.next/server/chunks/ssr/{[root-of-the-server]__0005fa7f._.js.map → [root-of-the-server]__c3ab8422._.js.map} +1 -1
  141. package/web/.next/server/chunks/ssr/[root-of-the-server]__f4a463ee._.js +2 -2
  142. package/web/.next/server/chunks/ssr/[root-of-the-server]__f4a463ee._.js.map +1 -1
  143. package/web/.next/server/chunks/ssr/_02ec1aea._.js +1 -1
  144. package/web/.next/server/chunks/ssr/_02ec1aea._.js.map +1 -1
  145. package/web/.next/server/chunks/ssr/{_54973759._.js → _55644af9._.js} +2 -2
  146. package/web/.next/server/chunks/ssr/{_54973759._.js.map → _55644af9._.js.map} +1 -1
  147. package/web/.next/server/chunks/ssr/{_4d0f7251._.js → _6a5242a0._.js} +2 -2
  148. package/web/.next/server/chunks/ssr/_6a5242a0._.js.map +1 -0
  149. package/web/.next/server/chunks/ssr/_7dca1882._.js +1 -1
  150. package/web/.next/server/chunks/ssr/_7dca1882._.js.map +1 -1
  151. package/web/.next/server/chunks/ssr/_a9f57758._.js +1 -1
  152. package/web/.next/server/chunks/ssr/_d8575088._.js +1 -1
  153. package/web/.next/server/chunks/ssr/_d8575088._.js.map +1 -1
  154. package/web/.next/server/chunks/ssr/_f39a1adb._.js +1 -1
  155. package/web/.next/server/chunks/ssr/_f39a1adb._.js.map +1 -1
  156. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  157. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  158. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
  159. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +1 -1
  160. package/web/.next/server/chunks/ssr/{src_presentation_web_ff4f5c85._.js → src_presentation_web_0cd3a74c._.js} +2 -2
  161. package/web/.next/server/chunks/ssr/{src_presentation_web_ff4f5c85._.js.map → src_presentation_web_0cd3a74c._.js.map} +1 -1
  162. package/web/.next/server/chunks/ssr/src_presentation_web_8e7fe0d1._.js +5 -0
  163. package/web/.next/server/chunks/ssr/{src_presentation_web_16204651._.js.map → src_presentation_web_8e7fe0d1._.js.map} +1 -1
  164. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_ca051134.js +3 -0
  165. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_ca051134.js.map +1 -0
  166. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js +1 -1
  167. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js.map +1 -1
  168. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js +1 -1
  169. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js.map +1 -1
  170. package/web/.next/server/chunks/ssr/src_presentation_web_b9023017._.js +5 -0
  171. package/web/.next/server/chunks/ssr/{src_presentation_web_a1e81e83._.js.map → src_presentation_web_b9023017._.js.map} +1 -1
  172. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  173. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  174. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  175. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  176. package/web/.next/server/pages/500.html +2 -2
  177. package/web/.next/server/server-reference-manifest.js +1 -1
  178. package/web/.next/server/server-reference-manifest.json +296 -410
  179. package/web/.next/static/chunks/1723a9aeba25ddfc.js +1 -0
  180. package/web/.next/static/chunks/{45aed33c09f2fa49.js → 1ab3b92cd374a624.js} +1 -1
  181. package/web/.next/static/chunks/{41da6886a7e12ed0.js → 1add8a70b4b40ed8.js} +1 -1
  182. package/web/.next/static/chunks/{ebc8e49ca8e30930.js → 1ce11c79ca2e7585.js} +1 -1
  183. package/web/.next/static/chunks/{6824f70fd5a25f49.js → 2458356d72e6fa9c.js} +2 -2
  184. package/web/.next/static/chunks/{727c77542ce6b900.js → 245f409ea7548b7f.js} +1 -1
  185. package/web/.next/static/chunks/{570ce910d5621970.js → 38d77ab6a534ec87.js} +1 -1
  186. package/web/.next/static/chunks/{f0cc9c9ee8a03ec6.js → 5aece62660a857db.js} +1 -1
  187. package/web/.next/static/chunks/{419c19462c0cf858.js → 712d4b9e22d0ff38.js} +1 -1
  188. package/web/.next/static/chunks/{6865e7df610c998d.js → 8d9cc59c9c6bb985.js} +1 -1
  189. package/web/.next/static/chunks/{69a7f3e262affa5b.js → 96813f0a8d002ad2.js} +1 -1
  190. package/web/.next/static/chunks/{175ca7ea02d97f30.js → e04aa97306bb4fcc.js} +1 -1
  191. package/web/.next/static/chunks/eb9841ec4d80af01.js +1 -0
  192. package/dist/packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.d.ts +0 -28
  193. package/dist/packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.d.ts.map +0 -1
  194. package/dist/packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.js +0 -81
  195. package/dist/packages/core/src/application/use-cases/repositories/sync-repository-main.use-case.d.ts +0 -16
  196. package/dist/packages/core/src/application/use-cases/repositories/sync-repository-main.use-case.d.ts.map +0 -1
  197. package/dist/packages/core/src/application/use-cases/repositories/sync-repository-main.use-case.js +0 -43
  198. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.prompt.d.ts +0 -35
  199. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.prompt.d.ts.map +0 -1
  200. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.prompt.js +0 -66
  201. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.d.ts +0 -42
  202. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.d.ts.map +0 -1
  203. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.js +0 -169
  204. package/dist/src/presentation/web/app/actions/rebase-feature.d.ts +0 -5
  205. package/dist/src/presentation/web/app/actions/rebase-feature.d.ts.map +0 -1
  206. package/dist/src/presentation/web/app/actions/rebase-feature.js +0 -16
  207. package/dist/src/presentation/web/app/actions/sync-repository.d.ts +0 -5
  208. package/dist/src/presentation/web/app/actions/sync-repository.d.ts.map +0 -1
  209. package/dist/src/presentation/web/app/actions/sync-repository.js +0 -16
  210. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_99e84975.js +0 -3
  211. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_99e84975.js.map +0 -1
  212. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_accb29f0.js +0 -3
  213. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_accb29f0.js.map +0 -1
  214. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_6a57c3a1.js +0 -3
  215. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_6a57c3a1.js.map +0 -1
  216. package/web/.next/server/chunks/ssr/[root-of-the-server]__0005fa7f._.js +0 -3
  217. package/web/.next/server/chunks/ssr/[root-of-the-server]__2e4a6b80._.js +0 -3
  218. package/web/.next/server/chunks/ssr/[root-of-the-server]__2e4a6b80._.js.map +0 -1
  219. package/web/.next/server/chunks/ssr/[root-of-the-server]__30f59daf._.js +0 -3
  220. package/web/.next/server/chunks/ssr/[root-of-the-server]__c001183f._.js +0 -3
  221. package/web/.next/server/chunks/ssr/[root-of-the-server]__c001183f._.js.map +0 -1
  222. package/web/.next/server/chunks/ssr/_4d0f7251._.js.map +0 -1
  223. package/web/.next/server/chunks/ssr/src_presentation_web_16204651._.js +0 -5
  224. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_02d24048.js +0 -3
  225. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_02d24048.js.map +0 -1
  226. package/web/.next/server/chunks/ssr/src_presentation_web_a1e81e83._.js +0 -5
  227. package/web/.next/static/chunks/4b51f8f4e49665b8.js +0 -1
  228. package/web/.next/static/chunks/9b8cfca143672135.js +0 -1
  229. /package/web/.next/static/{bAZScD4F_X6c2j5gmVUlR → yR1bDX4dtrRDAU5sWcjYr}/_buildManifest.js +0 -0
  230. /package/web/.next/static/{bAZScD4F_X6c2j5gmVUlR → yR1bDX4dtrRDAU5sWcjYr}/_clientMiddlewareManifest.json +0 -0
  231. /package/web/.next/static/{bAZScD4F_X6c2j5gmVUlR → yR1bDX4dtrRDAU5sWcjYr}/_ssgManifest.js +0 -0
@@ -9,17 +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",
12
13
  AUTH_FAILURE = "AUTH_FAILURE",
13
- BRANCH_NOT_FOUND = "BRANCH_NOT_FOUND",
14
- CI_TIMEOUT = "CI_TIMEOUT",
15
14
  GH_NOT_FOUND = "GH_NOT_FOUND",
15
+ NETWORK_ERROR = "NETWORK_ERROR",
16
+ CI_TIMEOUT = "CI_TIMEOUT",
17
+ BRANCH_NOT_FOUND = "BRANCH_NOT_FOUND",
16
18
  GIT_ERROR = "GIT_ERROR",
17
- MERGE_CONFLICT = "MERGE_CONFLICT",
18
19
  MERGE_FAILED = "MERGE_FAILED",
19
- NETWORK_ERROR = "NETWORK_ERROR",
20
20
  PR_NOT_FOUND = "PR_NOT_FOUND",
21
- REBASE_CONFLICT = "REBASE_CONFLICT",
22
- SYNC_FAILED = "SYNC_FAILED"
21
+ REMOTE_ALREADY_EXISTS = "REMOTE_ALREADY_EXISTS",
22
+ REPO_CREATE_FAILED = "REPO_CREATE_FAILED"
23
23
  }
24
24
  /**
25
25
  * Typed error for git PR operations.
@@ -144,6 +144,34 @@ export interface IGitPrService {
144
144
  * @returns The remote URL, or null if no remote is configured
145
145
  */
146
146
  getRemoteUrl(cwd: string): Promise<string | null>;
147
+ /**
148
+ * Create a GitHub repository and link it to the local repo.
149
+ * Uses `gh repo create` with `--source=.` and `--push` to atomically
150
+ * create the remote repo, add the origin remote, and push the current branch.
151
+ *
152
+ * @param cwd - Working directory path
153
+ * @param name - Repository name (e.g. "my-repo" or "org/my-repo")
154
+ * @param options - Creation options
155
+ * @param options.isPrivate - Whether to create a private repository
156
+ * @param options.org - Optional GitHub organization to create the repo under
157
+ * @returns The URL of the created GitHub repository
158
+ * @throws GitPrError with REPO_CREATE_FAILED code on creation failure
159
+ * @throws GitPrError with GH_NOT_FOUND code if gh CLI is not installed
160
+ * @throws GitPrError with AUTH_FAILURE code if gh is not authenticated
161
+ */
162
+ createGitHubRepo(cwd: string, name: string, options: {
163
+ isPrivate: boolean;
164
+ org?: string;
165
+ }): Promise<string>;
166
+ /**
167
+ * Add a git remote to the local repository.
168
+ *
169
+ * @param cwd - Working directory path
170
+ * @param remoteName - Name for the remote (e.g. "origin")
171
+ * @param remoteUrl - URL of the remote repository
172
+ * @throws GitPrError with GIT_ERROR code on failure
173
+ */
174
+ addRemote(cwd: string, remoteName: string, remoteUrl: string): Promise<void>;
147
175
  /**
148
176
  * Detect the repository's default branch with robust fallback chain:
149
177
  * 1. Remote HEAD (git symbolic-ref refs/remotes/origin/HEAD)
@@ -323,71 +351,5 @@ export interface IGitPrService {
323
351
  * @throws GitPrError with GH_NOT_FOUND or GIT_ERROR code on failure
324
352
  */
325
353
  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
354
  }
393
355
  //# sourceMappingURL=git-pr-service.interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-pr-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/git-pr-service.interface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-pr-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/git-pr-service.interface.ts"],"names":[],"mappings":"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"}
@@ -9,17 +9,17 @@
9
9
  */
10
10
  export var GitPrErrorCode;
11
11
  (function (GitPrErrorCode) {
12
+ GitPrErrorCode["MERGE_CONFLICT"] = "MERGE_CONFLICT";
12
13
  GitPrErrorCode["AUTH_FAILURE"] = "AUTH_FAILURE";
13
- GitPrErrorCode["BRANCH_NOT_FOUND"] = "BRANCH_NOT_FOUND";
14
- GitPrErrorCode["CI_TIMEOUT"] = "CI_TIMEOUT";
15
14
  GitPrErrorCode["GH_NOT_FOUND"] = "GH_NOT_FOUND";
15
+ GitPrErrorCode["NETWORK_ERROR"] = "NETWORK_ERROR";
16
+ GitPrErrorCode["CI_TIMEOUT"] = "CI_TIMEOUT";
17
+ GitPrErrorCode["BRANCH_NOT_FOUND"] = "BRANCH_NOT_FOUND";
16
18
  GitPrErrorCode["GIT_ERROR"] = "GIT_ERROR";
17
- GitPrErrorCode["MERGE_CONFLICT"] = "MERGE_CONFLICT";
18
19
  GitPrErrorCode["MERGE_FAILED"] = "MERGE_FAILED";
19
- GitPrErrorCode["NETWORK_ERROR"] = "NETWORK_ERROR";
20
20
  GitPrErrorCode["PR_NOT_FOUND"] = "PR_NOT_FOUND";
21
- GitPrErrorCode["REBASE_CONFLICT"] = "REBASE_CONFLICT";
22
- GitPrErrorCode["SYNC_FAILED"] = "SYNC_FAILED";
21
+ GitPrErrorCode["REMOTE_ALREADY_EXISTS"] = "REMOTE_ALREADY_EXISTS";
22
+ GitPrErrorCode["REPO_CREATE_FAILED"] = "REPO_CREATE_FAILED";
23
23
  })(GitPrErrorCode || (GitPrErrorCode = {}));
24
24
  /**
25
25
  * Typed error for git PR operations.
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Init Remote Repository Use Case
3
+ *
4
+ * Orchestrates creating a GitHub repository and linking it to a local repo
5
+ * that has no remote configured. Validates gh CLI availability, guards against
6
+ * existing remotes, and delegates to IGitPrService.createGitHubRepo() for the
7
+ * atomic create + remote + push operation.
8
+ */
9
+ import type { IGitPrService } from '../../ports/output/services/git-pr-service.interface.js';
10
+ import type { IToolInstallerService } from '../../ports/output/services/tool-installer.service.js';
11
+ export interface InitRemoteInput {
12
+ cwd: string;
13
+ name?: string;
14
+ isPublic?: boolean;
15
+ org?: string;
16
+ }
17
+ export interface InitRemoteResult {
18
+ repoUrl: string;
19
+ repoName: string;
20
+ isPrivate: boolean;
21
+ }
22
+ export declare class InitRemoteRepositoryUseCase {
23
+ private readonly gitPrService;
24
+ private readonly toolInstaller;
25
+ constructor(gitPrService: IGitPrService, toolInstaller: IToolInstallerService);
26
+ execute(input: InitRemoteInput): Promise<InitRemoteResult>;
27
+ }
28
+ //# sourceMappingURL=init-remote-repository.use-case.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-remote-repository.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/repositories/init-remote-repository.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yDAAyD,CAAC;AAK7F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uDAAuD,CAAC;AAEnG,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,qBACa,2BAA2B;IAGpC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAFb,YAAY,EAAE,aAAa,EAE3B,aAAa,EAAE,qBAAqB;IAGjD,OAAO,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAmCjE"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Init Remote Repository Use Case
3
+ *
4
+ * Orchestrates creating a GitHub repository and linking it to a local repo
5
+ * that has no remote configured. Validates gh CLI availability, guards against
6
+ * existing remotes, and delegates to IGitPrService.createGitHubRepo() for the
7
+ * atomic create + remote + push operation.
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
+ import { basename } from 'node:path';
23
+ import { GitPrError, GitPrErrorCode, } from '../../ports/output/services/git-pr-service.interface.js';
24
+ let InitRemoteRepositoryUseCase = class InitRemoteRepositoryUseCase {
25
+ gitPrService;
26
+ toolInstaller;
27
+ constructor(gitPrService, toolInstaller) {
28
+ this.gitPrService = gitPrService;
29
+ this.toolInstaller = toolInstaller;
30
+ }
31
+ async execute(input) {
32
+ // 1. Check gh CLI availability
33
+ const ghStatus = await this.toolInstaller.checkAvailability('gh');
34
+ if (ghStatus.status !== 'available') {
35
+ throw new GitPrError('gh CLI is not installed. Install it with: brew install gh (macOS) or see https://cli.github.com/', GitPrErrorCode.GH_NOT_FOUND);
36
+ }
37
+ // 2. Guard against existing remote
38
+ const hasRemote = await this.gitPrService.hasRemote(input.cwd);
39
+ if (hasRemote) {
40
+ throw new GitPrError('A remote is already configured for this repository. Use `git remote -v` to view existing remotes.', GitPrErrorCode.REMOTE_ALREADY_EXISTS);
41
+ }
42
+ // 3. Derive repo name from cwd basename if not provided
43
+ const repoName = input.name ?? basename(input.cwd.replace(/\\/g, '/'));
44
+ const isPrivate = !input.isPublic;
45
+ // 4. Create GitHub repo (atomic: creates repo + adds remote + pushes)
46
+ const repoUrl = await this.gitPrService.createGitHubRepo(input.cwd, repoName, {
47
+ isPrivate,
48
+ org: input.org,
49
+ });
50
+ return {
51
+ repoUrl,
52
+ repoName,
53
+ isPrivate,
54
+ };
55
+ }
56
+ };
57
+ InitRemoteRepositoryUseCase = __decorate([
58
+ injectable(),
59
+ __param(0, inject('IGitPrService')),
60
+ __param(1, inject('IToolInstallerService')),
61
+ __metadata("design:paramtypes", [Object, Object])
62
+ ], InitRemoteRepositoryUseCase);
63
+ export { InitRemoteRepositoryUseCase };
@@ -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;AA4HrC;;;;;;GAMG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,SAAS,CAAC,CA+VrE;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;AA0HrC;;;;;;GAMG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,SAAS,CAAC,CAuVrE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -80,13 +80,11 @@ import { ListRepositoriesUseCase } from '../../application/use-cases/repositorie
80
80
  import { DeleteRepositoryUseCase } from '../../application/use-cases/repositories/delete-repository.use-case.js';
81
81
  import { ImportGitHubRepositoryUseCase } from '../../application/use-cases/repositories/import-github-repository.use-case.js';
82
82
  import { ListGitHubRepositoriesUseCase } from '../../application/use-cases/repositories/list-github-repositories.use-case.js';
83
+ import { InitRemoteRepositoryUseCase } from '../../application/use-cases/repositories/init-remote-repository.use-case.js';
83
84
  import { CheckAndUnblockFeaturesUseCase } from '../../application/use-cases/features/check-and-unblock-features.use-case.js';
84
85
  import { UpdateFeatureLifecycleUseCase } from '../../application/use-cases/features/update/update-feature-lifecycle.use-case.js';
85
86
  import { CleanupFeatureWorktreeUseCase } from '../../application/use-cases/features/cleanup-feature-worktree.use-case.js';
86
87
  import { UpgradeCliUseCase } from '../../application/use-cases/upgrade/upgrade-cli.use-case.js';
87
- import { SyncRepositoryMainUseCase } from '../../application/use-cases/repositories/sync-repository-main.use-case.js';
88
- import { RebaseFeatureOnMainUseCase } from '../../application/use-cases/features/rebase-feature-on-main.use-case.js';
89
- import { ConflictResolutionService } from '../services/agents/conflict-resolution/conflict-resolution.service.js';
90
88
  // Session listing
91
89
  import { ClaudeCodeSessionRepository } from '../services/agents/sessions/claude-code-session.repository.js';
92
90
  import { StubSessionRepository } from '../services/agents/sessions/stub-session.repository.js';
@@ -302,18 +300,13 @@ export async function initializeContainer() {
302
300
  container.registerSingleton(DeleteRepositoryUseCase);
303
301
  container.registerSingleton(ImportGitHubRepositoryUseCase);
304
302
  container.registerSingleton(ListGitHubRepositoriesUseCase);
303
+ container.registerSingleton(InitRemoteRepositoryUseCase);
305
304
  // CheckAndUnblockFeaturesUseCase must be registered before UpdateFeatureLifecycleUseCase
306
305
  // because the latter injects the former via class token.
307
306
  container.registerSingleton(CheckAndUnblockFeaturesUseCase);
308
307
  container.registerSingleton(UpdateFeatureLifecycleUseCase);
309
308
  container.registerSingleton(CleanupFeatureWorktreeUseCase);
310
309
  container.registerSingleton(UpgradeCliUseCase);
311
- container.registerSingleton(ConflictResolutionService);
312
- container.register('ConflictResolutionService', {
313
- useFactory: (c) => c.resolve(ConflictResolutionService),
314
- });
315
- container.registerSingleton(SyncRepositoryMainUseCase);
316
- container.registerSingleton(RebaseFeatureOnMainUseCase);
317
310
  // Session repositories (per-AgentType string tokens)
318
311
  container.register(`IAgentSessionRepository:${AgentType.ClaudeCode}`, {
319
312
  useFactory: () => new ClaudeCodeSessionRepository(),
@@ -392,6 +385,9 @@ export async function initializeContainer() {
392
385
  container.register('ListGitHubRepositoriesUseCase', {
393
386
  useFactory: (c) => c.resolve(ListGitHubRepositoriesUseCase),
394
387
  });
388
+ container.register('InitRemoteRepositoryUseCase', {
389
+ useFactory: (c) => c.resolve(InitRemoteRepositoryUseCase),
390
+ });
395
391
  container.register('CheckAndUnblockFeaturesUseCase', {
396
392
  useFactory: (c) => c.resolve(CheckAndUnblockFeaturesUseCase),
397
393
  });
@@ -413,12 +409,6 @@ export async function initializeContainer() {
413
409
  container.register('UpgradeCliUseCase', {
414
410
  useFactory: (c) => c.resolve(UpgradeCliUseCase),
415
411
  });
416
- container.register('SyncRepositoryMainUseCase', {
417
- useFactory: (c) => c.resolve(SyncRepositoryMainUseCase),
418
- });
419
- container.register('RebaseFeatureOnMainUseCase', {
420
- useFactory: (c) => c.resolve(RebaseFeatureOnMainUseCase),
421
- });
422
412
  _initialized = true;
423
413
  return container;
424
414
  }
@@ -44,12 +44,11 @@ export declare class GitPrService implements IGitPrService {
44
44
  private parseGitError;
45
45
  private parseGhError;
46
46
  private parsePrNumberFromUrl;
47
+ createGitHubRepo(cwd: string, name: string, options: {
48
+ isPrivate: boolean;
49
+ org?: string;
50
+ }): Promise<string>;
51
+ addRemote(cwd: string, remoteName: string, remoteUrl: string): Promise<void>;
47
52
  private parseDiffStat;
48
- syncMain(cwd: string, baseBranch: string): Promise<void>;
49
- rebaseOnMain(cwd: string, featureBranch: string, baseBranch: string): Promise<void>;
50
- getConflictedFiles(cwd: string): Promise<string[]>;
51
- stageFiles(cwd: string, files: string[]): Promise<void>;
52
- rebaseContinue(cwd: string): Promise<void>;
53
- rebaseAbort(cwd: string): Promise<void>;
54
53
  }
55
54
  //# 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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"}
@@ -609,14 +609,6 @@ let GitPrService = class GitPrService {
609
609
  parseGitError(error) {
610
610
  const message = error instanceof Error ? error.message : String(error);
611
611
  const cause = error instanceof Error ? error : undefined;
612
- // Rebase-specific: detect "CONFLICT" during rebase operations
613
- if (message.includes('CONFLICT') && message.includes('rebase')) {
614
- return new GitPrError(message, GitPrErrorCode.REBASE_CONFLICT, cause);
615
- }
616
- // Sync-specific: non-fast-forward or diverged branch
617
- if (message.includes('non-fast-forward') || message.includes('diverged')) {
618
- return new GitPrError(message, GitPrErrorCode.SYNC_FAILED, cause);
619
- }
620
612
  if (message.includes('rejected') || message.includes('conflict')) {
621
613
  return new GitPrError(message, GitPrErrorCode.MERGE_CONFLICT, cause);
622
614
  }
@@ -641,6 +633,38 @@ let GitPrService = class GitPrService {
641
633
  const match = url.match(/\/pull\/(\d+)/);
642
634
  return match ? parseInt(match[1], 10) : 0;
643
635
  }
636
+ async createGitHubRepo(cwd, name, options) {
637
+ const repoName = options.org ? `${options.org}/${name}` : name;
638
+ const visibilityFlag = options.isPrivate ? '--private' : '--public';
639
+ const args = [
640
+ 'repo',
641
+ 'create',
642
+ repoName,
643
+ visibilityFlag,
644
+ '--source=.',
645
+ '--remote=origin',
646
+ '--push',
647
+ ];
648
+ try {
649
+ const { stdout } = await this.execFile('gh', args, { cwd });
650
+ return stdout.trim();
651
+ }
652
+ catch (error) {
653
+ const ghError = this.parseGhError(error);
654
+ if (ghError.code === GitPrErrorCode.GIT_ERROR) {
655
+ throw new GitPrError(ghError.message, GitPrErrorCode.REPO_CREATE_FAILED, ghError.cause);
656
+ }
657
+ throw ghError;
658
+ }
659
+ }
660
+ async addRemote(cwd, remoteName, remoteUrl) {
661
+ try {
662
+ await this.execFile('git', ['remote', 'add', remoteName, remoteUrl], { cwd });
663
+ }
664
+ catch (error) {
665
+ throw this.parseGitError(error);
666
+ }
667
+ }
644
668
  parseDiffStat(diffStat, logOutput) {
645
669
  const summaryLine = diffStat.trim().split('\n').pop() ?? '';
646
670
  const filesMatch = summaryLine.match(/(\d+)\s+files?\s+changed/);
@@ -657,132 +681,6 @@ let GitPrService = class GitPrService {
657
681
  commitCount,
658
682
  };
659
683
  }
660
- // --- Rebase & Sync operations ---
661
- async syncMain(cwd, baseBranch) {
662
- try {
663
- // Detect current branch
664
- const { stdout } = await this.execFile('git', ['rev-parse', '--abbrev-ref', 'HEAD'], { cwd });
665
- const currentBranch = stdout.trim();
666
- if (currentBranch === baseBranch) {
667
- // On the base branch — use git pull --ff-only
668
- await this.execFile('git', ['pull', '--ff-only', 'origin', baseBranch], { cwd });
669
- }
670
- else {
671
- // On a different branch — fetch the remote ref only (updates origin/<baseBranch>).
672
- // We intentionally do NOT update the local <baseBranch> ref because it may be
673
- // checked out in another worktree, which causes git to refuse the update with:
674
- // "fatal: refusing to fetch into branch 'refs/heads/main' checked out at ..."
675
- await this.execFile('git', ['fetch', 'origin', baseBranch], { cwd });
676
- }
677
- }
678
- catch (error) {
679
- const message = error instanceof Error ? error.message : String(error);
680
- const cause = error instanceof Error ? error : undefined;
681
- if (message.includes('non-fast-forward') ||
682
- message.includes('Not possible to fast-forward') ||
683
- message.includes('diverged')) {
684
- throw new GitPrError(`Cannot fast-forward '${baseBranch}': local branch has diverged from remote. ` +
685
- `Resolve the divergence manually with 'git checkout ${baseBranch} && git reset --hard origin/${baseBranch}' ` +
686
- `if you want to discard local changes on ${baseBranch}.`, GitPrErrorCode.SYNC_FAILED, cause);
687
- }
688
- throw new GitPrError(`Failed to sync '${baseBranch}' with remote: ${message}`, GitPrErrorCode.GIT_ERROR, cause);
689
- }
690
- }
691
- async rebaseOnMain(cwd, featureBranch, baseBranch) {
692
- // Check for dirty worktree before starting
693
- const dirty = await this.hasUncommittedChanges(cwd);
694
- if (dirty) {
695
- throw new GitPrError(`Cannot rebase: working directory has uncommitted changes. ` +
696
- `Please commit or stash your changes before rebasing.`, GitPrErrorCode.GIT_ERROR);
697
- }
698
- // Checkout the feature branch
699
- try {
700
- await this.execFile('git', ['checkout', featureBranch], { cwd });
701
- }
702
- catch (error) {
703
- const message = error instanceof Error ? error.message : String(error);
704
- const cause = error instanceof Error ? error : undefined;
705
- if (message.includes('did not match') ||
706
- message.includes('not a commit') ||
707
- message.includes('pathspec')) {
708
- throw new GitPrError(`Branch '${featureBranch}' not found.`, GitPrErrorCode.BRANCH_NOT_FOUND, cause);
709
- }
710
- throw new GitPrError(`Failed to checkout '${featureBranch}': ${message}`, GitPrErrorCode.GIT_ERROR, cause);
711
- }
712
- // Rebase onto origin/<baseBranch> (the remote-tracking ref).
713
- // We use origin/<baseBranch> rather than the local <baseBranch> because:
714
- // 1. syncMain fetches origin/<baseBranch> — it's always up-to-date
715
- // 2. The local <baseBranch> may be checked out in another worktree and stale
716
- const rebaseTarget = `origin/${baseBranch}`;
717
- try {
718
- await this.execFile('git', ['rebase', rebaseTarget], { cwd });
719
- }
720
- catch (error) {
721
- const message = error instanceof Error ? error.message : String(error);
722
- const cause = error instanceof Error ? error : undefined;
723
- // Detect rebase conflict from git stderr/exit code
724
- if (message.includes('CONFLICT') || message.includes('could not apply')) {
725
- // Get the list of conflicted files to include in the error message
726
- let conflictedFiles = [];
727
- try {
728
- conflictedFiles = await this.getConflictedFiles(cwd);
729
- }
730
- catch {
731
- // Failed to get conflicted files — still report the conflict
732
- }
733
- const fileList = conflictedFiles.length > 0 ? ` Conflicted files: ${conflictedFiles.join(', ')}` : '';
734
- throw new GitPrError(`Rebase of '${featureBranch}' onto '${baseBranch}' encountered conflicts.${fileList}`, GitPrErrorCode.REBASE_CONFLICT, cause);
735
- }
736
- throw new GitPrError(`Rebase of '${featureBranch}' onto '${baseBranch}' failed: ${message}`, GitPrErrorCode.GIT_ERROR, cause);
737
- }
738
- }
739
- async getConflictedFiles(cwd) {
740
- try {
741
- const { stdout } = await this.execFile('git', ['diff', '--name-only', '--diff-filter=U'], {
742
- cwd,
743
- });
744
- return stdout
745
- .trim()
746
- .split('\n')
747
- .filter((f) => f.length > 0)
748
- .map((f) => f.replace(/\\/g, '/'));
749
- }
750
- catch (error) {
751
- throw this.parseGitError(error);
752
- }
753
- }
754
- async stageFiles(cwd, files) {
755
- try {
756
- await this.execFile('git', ['add', ...files], { cwd });
757
- }
758
- catch (error) {
759
- throw this.parseGitError(error);
760
- }
761
- }
762
- async rebaseContinue(cwd) {
763
- try {
764
- await this.execFile('git', ['rebase', '--continue'], {
765
- cwd,
766
- env: { ...process.env, GIT_EDITOR: 'true' },
767
- });
768
- }
769
- catch (error) {
770
- const message = error instanceof Error ? error.message : String(error);
771
- const cause = error instanceof Error ? error : undefined;
772
- if (message.includes('CONFLICT') || message.includes('could not apply')) {
773
- throw new GitPrError(`Rebase continue encountered new conflicts: ${message}`, GitPrErrorCode.REBASE_CONFLICT, cause);
774
- }
775
- throw this.parseGitError(error);
776
- }
777
- }
778
- async rebaseAbort(cwd) {
779
- try {
780
- await this.execFile('git', ['rebase', '--abort'], { cwd });
781
- }
782
- catch (error) {
783
- throw this.parseGitError(error);
784
- }
785
- }
786
684
  };
787
685
  GitPrService = __decorate([
788
686
  injectable(),
@@ -7,9 +7,10 @@
7
7
  * shep repo [subcommand]
8
8
  *
9
9
  * Subcommands:
10
- * shep repo ls List tracked repositories
11
- * shep repo show <id> Display details of a tracked repository
12
- * shep repo add Import a GitHub repository
10
+ * shep repo ls List tracked repositories
11
+ * shep repo show <id> Display details of a tracked repository
12
+ * shep repo add Import a GitHub repository
13
+ * shep repo init-remote [name] Create a GitHub repo and configure the remote
13
14
  */
14
15
  import { Command } from 'commander';
15
16
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/repo/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAQ3C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/repo/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAS3C"}
@@ -7,14 +7,16 @@
7
7
  * shep repo [subcommand]
8
8
  *
9
9
  * Subcommands:
10
- * shep repo ls List tracked repositories
11
- * shep repo show <id> Display details of a tracked repository
12
- * shep repo add Import a GitHub repository
10
+ * shep repo ls List tracked repositories
11
+ * shep repo show <id> Display details of a tracked repository
12
+ * shep repo add Import a GitHub repository
13
+ * shep repo init-remote [name] Create a GitHub repo and configure the remote
13
14
  */
14
15
  import { Command } from 'commander';
15
16
  import { createShowCommand } from './show.command.js';
16
17
  import { createLsCommand } from './ls.command.js';
17
18
  import { createAddCommand } from './add.command.js';
19
+ import { createInitRemoteCommand } from './init-remote.command.js';
18
20
  /**
19
21
  * Create the repo command with all subcommands
20
22
  */
@@ -23,6 +25,7 @@ export function createRepoCommand() {
23
25
  .description('Manage tracked repositories')
24
26
  .addCommand(createLsCommand())
25
27
  .addCommand(createShowCommand())
26
- .addCommand(createAddCommand());
28
+ .addCommand(createAddCommand())
29
+ .addCommand(createInitRemoteCommand());
27
30
  return repo;
28
31
  }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Repo Init-Remote Command
3
+ *
4
+ * Create a GitHub repository and link it as the origin remote for a local
5
+ * repository that has no remote configured.
6
+ *
7
+ * Usage:
8
+ * shep repo init-remote [name] [--public] [--org <name>]
9
+ */
10
+ import { Command } from 'commander';
11
+ export declare function createInitRemoteCommand(): Command;
12
+ //# sourceMappingURL=init-remote.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-remote.command.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/repo/init-remote.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,uBAAuB,IAAI,OAAO,CA8CjD"}