@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.
- package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts +34 -72
- 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 +6 -6
- package/dist/packages/core/src/application/use-cases/repositories/init-remote-repository.use-case.d.ts +28 -0
- package/dist/packages/core/src/application/use-cases/repositories/init-remote-repository.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/repositories/init-remote-repository.use-case.js +63 -0
- package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/di/container.js +5 -15
- package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts +5 -6
- 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 +32 -134
- package/dist/src/presentation/cli/commands/repo/index.d.ts +4 -3
- package/dist/src/presentation/cli/commands/repo/index.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/repo/index.js +7 -4
- package/dist/src/presentation/cli/commands/repo/init-remote.command.d.ts +12 -0
- package/dist/src/presentation/cli/commands/repo/init-remote.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/repo/init-remote.command.js +60 -0
- package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.js +1 -2
- package/dist/src/presentation/web/components/common/control-center-drawer/repository-drawer-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/repository-drawer-client.js +4 -4
- package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.d.ts +0 -4
- package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.js +1 -32
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts +1 -4
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.js +2 -2
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.d.ts +1 -4
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.js +3 -8
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.d.ts +0 -6
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.js +0 -30
- package/dist/src/presentation/web/components/common/open-action-menu/open-action-menu.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/open-action-menu/open-action-menu.stories.js +0 -3
- package/dist/src/presentation/web/components/common/repository-node/repository-drawer.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/repository-node/repository-drawer.js +3 -3
- package/dist/src/presentation/web/components/common/repository-node/repository-node.js +1 -1
- package/dist/src/presentation/web/components/common/repository-node/use-repository-actions.d.ts +0 -4
- package/dist/src/presentation/web/components/common/repository-node/use-repository-actions.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/repository-node/use-repository-actions.js +0 -11
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/build-manifest.json +2 -2
- 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/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +48 -63
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +48 -63
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
- 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/server-reference-manifest.json +60 -90
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +1 -1
- 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/server-reference-manifest.json +60 -90
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -1
- 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/server-reference-manifest.json +44 -59
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
- 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/server-reference-manifest.json +48 -63
- package/web/.next/server/app/(dashboard)/create/page.js +1 -1
- 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/server-reference-manifest.json +60 -90
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +1 -1
- 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/server-reference-manifest.json +60 -90
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -1
- 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/server-reference-manifest.json +44 -59
- package/web/.next/server/app/(dashboard)/page.js +1 -1
- 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/server-reference-manifest.json +44 -59
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
- 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.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/server-reference-manifest.json +3 -3
- 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/server-reference-manifest.json +8 -8
- 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/server-reference-manifest.json +8 -8
- 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/server-reference-manifest.json +8 -8
- 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/server-reference-manifest.json +3 -3
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4e741df2.js +3 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4e741df2.js.map +1 -0
- 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_026fdffa.js +3 -0
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_026fdffa.js.map +1 -0
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_8b91e197.js +3 -0
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_8b91e197.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0e842eba._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0e842eba._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__2f886f77._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__60684242._.js +2 -2
- 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]__755cfe02._.js +3 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__30f59daf._.js.map → [root-of-the-server]__755cfe02._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a628fb91._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a628fb91._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__bfba58e6._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__bfba58e6._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c3ab8422._.js +3 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__0005fa7f._.js.map → [root-of-the-server]__c3ab8422._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f4a463ee._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f4a463ee._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_02ec1aea._.js +1 -1
- package/web/.next/server/chunks/ssr/_02ec1aea._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_54973759._.js → _55644af9._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_54973759._.js.map → _55644af9._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{_4d0f7251._.js → _6a5242a0._.js} +2 -2
- package/web/.next/server/chunks/ssr/_6a5242a0._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_7dca1882._.js +1 -1
- package/web/.next/server/chunks/ssr/_7dca1882._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_a9f57758._.js +1 -1
- package/web/.next/server/chunks/ssr/_d8575088._.js +1 -1
- package/web/.next/server/chunks/ssr/_d8575088._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_f39a1adb._.js +1 -1
- package/web/.next/server/chunks/ssr/_f39a1adb._.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/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
- package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{src_presentation_web_ff4f5c85._.js → src_presentation_web_0cd3a74c._.js} +2 -2
- package/web/.next/server/chunks/ssr/{src_presentation_web_ff4f5c85._.js.map → src_presentation_web_0cd3a74c._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_8e7fe0d1._.js +5 -0
- package/web/.next/server/chunks/ssr/{src_presentation_web_16204651._.js.map → src_presentation_web_8e7fe0d1._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_ca051134.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_ca051134.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_b9023017._.js +5 -0
- package/web/.next/server/chunks/ssr/{src_presentation_web_a1e81e83._.js.map → src_presentation_web_b9023017._.js.map} +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/pages/500.html +2 -2
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +296 -410
- package/web/.next/static/chunks/1723a9aeba25ddfc.js +1 -0
- package/web/.next/static/chunks/{45aed33c09f2fa49.js → 1ab3b92cd374a624.js} +1 -1
- package/web/.next/static/chunks/{41da6886a7e12ed0.js → 1add8a70b4b40ed8.js} +1 -1
- package/web/.next/static/chunks/{ebc8e49ca8e30930.js → 1ce11c79ca2e7585.js} +1 -1
- package/web/.next/static/chunks/{6824f70fd5a25f49.js → 2458356d72e6fa9c.js} +2 -2
- package/web/.next/static/chunks/{727c77542ce6b900.js → 245f409ea7548b7f.js} +1 -1
- package/web/.next/static/chunks/{570ce910d5621970.js → 38d77ab6a534ec87.js} +1 -1
- package/web/.next/static/chunks/{f0cc9c9ee8a03ec6.js → 5aece62660a857db.js} +1 -1
- package/web/.next/static/chunks/{419c19462c0cf858.js → 712d4b9e22d0ff38.js} +1 -1
- package/web/.next/static/chunks/{6865e7df610c998d.js → 8d9cc59c9c6bb985.js} +1 -1
- package/web/.next/static/chunks/{69a7f3e262affa5b.js → 96813f0a8d002ad2.js} +1 -1
- package/web/.next/static/chunks/{175ca7ea02d97f30.js → e04aa97306bb4fcc.js} +1 -1
- package/web/.next/static/chunks/eb9841ec4d80af01.js +1 -0
- package/dist/packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.d.ts +0 -28
- package/dist/packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.d.ts.map +0 -1
- package/dist/packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.js +0 -81
- package/dist/packages/core/src/application/use-cases/repositories/sync-repository-main.use-case.d.ts +0 -16
- package/dist/packages/core/src/application/use-cases/repositories/sync-repository-main.use-case.d.ts.map +0 -1
- package/dist/packages/core/src/application/use-cases/repositories/sync-repository-main.use-case.js +0 -43
- package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.prompt.d.ts +0 -35
- package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.prompt.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.prompt.js +0 -66
- package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.d.ts +0 -42
- package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.js +0 -169
- package/dist/src/presentation/web/app/actions/rebase-feature.d.ts +0 -5
- package/dist/src/presentation/web/app/actions/rebase-feature.d.ts.map +0 -1
- package/dist/src/presentation/web/app/actions/rebase-feature.js +0 -16
- package/dist/src/presentation/web/app/actions/sync-repository.d.ts +0 -5
- package/dist/src/presentation/web/app/actions/sync-repository.d.ts.map +0 -1
- package/dist/src/presentation/web/app/actions/sync-repository.js +0 -16
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_99e84975.js +0 -3
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_99e84975.js.map +0 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_accb29f0.js +0 -3
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_accb29f0.js.map +0 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_6a57c3a1.js +0 -3
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_6a57c3a1.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0005fa7f._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__2e4a6b80._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__2e4a6b80._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__30f59daf._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c001183f._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c001183f._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_4d0f7251._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_16204651._.js +0 -5
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_02d24048.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_02d24048.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_a1e81e83._.js +0 -5
- package/web/.next/static/chunks/4b51f8f4e49665b8.js +0 -1
- package/web/.next/static/chunks/9b8cfca143672135.js +0 -1
- /package/web/.next/static/{bAZScD4F_X6c2j5gmVUlR → yR1bDX4dtrRDAU5sWcjYr}/_buildManifest.js +0 -0
- /package/web/.next/static/{bAZScD4F_X6c2j5gmVUlR → yR1bDX4dtrRDAU5sWcjYr}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{bAZScD4F_X6c2j5gmVUlR → yR1bDX4dtrRDAU5sWcjYr}/_ssgManifest.js +0 -0
package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts
CHANGED
|
@@ -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
|
-
|
|
22
|
-
|
|
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
|
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,YAAY,iBAAiB;IAC7B,
|
|
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
|
@@ -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["
|
|
22
|
-
GitPrErrorCode["
|
|
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"}
|
package/dist/packages/core/src/application/use-cases/repositories/init-remote-repository.use-case.js
ADDED
|
@@ -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;
|
|
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
|
|
11
|
-
* shep repo show <id>
|
|
12
|
-
* shep repo add
|
|
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
|
|
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
|
|
11
|
-
* shep repo show <id>
|
|
12
|
-
* shep repo add
|
|
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"}
|