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