@shepai/cli 1.122.2-pr394.daae4c9 → 1.122.2-pr395.d35739a
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/app/(dashboard)/get-graph-data.d.ts +6 -0
- package/dist/src/presentation/web/app/(dashboard)/get-graph-data.d.ts.map +1 -1
- package/dist/src/presentation/web/app/(dashboard)/get-graph-data.js +60 -0
- package/dist/src/presentation/web/app/actions/get-feature-phase-timings.d.ts +2 -0
- package/dist/src/presentation/web/app/actions/get-feature-phase-timings.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/get-feature-phase-timings.js +2 -0
- package/dist/src/presentation/web/app/build-graph-nodes.d.ts +7 -0
- package/dist/src/presentation/web/app/build-graph-nodes.d.ts.map +1 -1
- package/dist/src/presentation/web/app/build-graph-nodes.js +7 -0
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +20 -9
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.js +130 -31
- 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 +13 -0
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/use-tab-data-fetch.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/use-tab-data-fetch.js +18 -9
- package/dist/src/presentation/web/components/common/repository-node/repository-node-config.d.ts +8 -0
- package/dist/src/presentation/web/components/common/repository-node/repository-node-config.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/repository-node/repository-node.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/repository-node/repository-node.js +6 -6
- package/dist/src/presentation/web/components/common/repository-node/repository-node.stories.d.ts +2 -0
- package/dist/src/presentation/web/components/common/repository-node/repository-node.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/repository-node/repository-node.stories.js +107 -17
- package/dist/src/presentation/web/components/features/control-center/control-center-empty-state.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/control-center/control-center-empty-state.js +18 -18
- package/dist/src/presentation/web/components/features/control-center/control-center-inner.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +31 -17
- package/dist/src/presentation/web/components/features/control-center/welcome-agent-setup.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/control-center/welcome-agent-setup.js +29 -22
- package/dist/src/presentation/web/components/features/features-canvas/features-canvas.js +1 -1
- 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 +5 -14
- package/dist/src/presentation/web/hooks/sidebar-features-context.d.ts +2 -0
- package/dist/src/presentation/web/hooks/sidebar-features-context.d.ts.map +1 -1
- package/dist/src/presentation/web/hooks/sidebar-features-context.js +2 -1
- package/dist/src/presentation/web/lib/layout-with-dagre.js +1 -1
- 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 +2 -2
- 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 +3 -3
- 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 +3 -3
- 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 +2 -2
- 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 +2 -2
- 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 +3 -3
- 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 +3 -3
- 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 +2 -2
- 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 +2 -2
- 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 +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/403f9_next_dist_esm_build_templates_app-route_370c43b1.js +1 -1
- package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js.map +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__dcd4f847._.js +3 -0
- package/web/.next/server/chunks/{[root-of-the-server]__42b7ab55._.js.map → [root-of-the-server]__dcd4f847._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/403f9_next_dist_31ea46d3._.js +1 -1
- package/web/.next/server/chunks/ssr/403f9_next_dist_c9d9b4d7._.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]__a022445f._.js → [root-of-the-server]__14664e9b._.js} +3 -3
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__a022445f._.js.map → [root-of-the-server]__14664e9b._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__4993a47c._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__4993a47c._.js.map +1 -0
- 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]__6677a82c._.js +3 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__b724df9e._.js.map → [root-of-the-server]__6677a82c._.js.map} +1 -1
- 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]__8e3bf5d7._.js → [root-of-the-server]__7cbda1ea._.js} +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7cbda1ea._.js.map +1 -0
- 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]__2698e9f4._.js → [root-of-the-server]__9e8b25ad._.js} +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__9e8b25ad._.js.map +1 -0
- 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 → [root-of-the-server]__aed1d6f8._.js} +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aed1d6f8._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__c605a375._.js → [root-of-the-server]__ce6057f6._.js} +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ce6057f6._.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/{_5317c57e._.js → _59905c6b._.js} +2 -2
- package/web/.next/server/chunks/ssr/_59905c6b._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_8042b250._.js +3 -0
- package/web/.next/server/chunks/ssr/_8042b250._.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/_cc77a143._.js +1 -1
- package/web/.next/server/chunks/ssr/_cc77a143._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_e9703421._.js +3 -0
- package/web/.next/server/chunks/ssr/_e9703421._.js.map +1 -0
- 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/node_modules__pnpm_bc66dcc6._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules__pnpm_bc66dcc6._.js.map +1 -0
- 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_7df6451f._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_7df6451f._.js.map +1 -0
- 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_ca99d62d._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.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/0b7e384fe33dc5d4.js +1 -0
- package/web/.next/static/chunks/16c125d4054dae40.js +11 -0
- package/web/.next/static/chunks/28882fc716f51419.js +2 -0
- package/web/.next/static/chunks/2d718a04eb97fa9c.js +1 -0
- package/web/.next/static/chunks/3925626b99dcd57a.css +1 -0
- package/web/.next/static/chunks/{9f4eb9f1618c8bd9.js → 3c8f903477aacd29.js} +1 -1
- package/web/.next/static/chunks/4443ee9c7733399b.js +1 -0
- package/web/.next/static/chunks/{7f0206527c67e121.js → 44ec09b4f33c494d.js} +1 -1
- package/web/.next/static/chunks/{b14644925c7af7f5.js → 47030173ef438c4c.js} +2 -2
- package/web/.next/static/chunks/4aadcf496c0c45da.js +1 -0
- package/web/.next/static/chunks/52b56677c842e45f.js +3 -0
- package/web/.next/static/chunks/5738cc053b378225.js +1 -0
- package/web/.next/static/chunks/6bc9ac207dab5ad3.js +1 -0
- package/web/.next/static/chunks/ac7251026c1e2cdf.js +1 -0
- package/web/.next/static/chunks/dbbb446493f21874.js +1 -0
- 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/[root-of-the-server]__42b7ab55._.js +0 -3
- 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]__2698e9f4._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__8e3bf5d7._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b724df9e._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c07f9f79._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c605a375._.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/_5317c57e._.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/_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/server/chunks/ssr/node_modules__pnpm_b59e4b16._.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules__pnpm_b59e4b16._.js.map +0 -1
- package/web/.next/static/chunks/0d2af96e64960ef5.css +0 -1
- package/web/.next/static/chunks/430ef376bd249b14.js +0 -1
- package/web/.next/static/chunks/4796c6e7d84294d7.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/b4a6061718adb25e.js +0 -2
- 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/chunks/f83551c20dcda199.js +0 -1
- /package/web/.next/static/{eu15XGqVtBSCUjVy2GmoQ → 8e_LzmibF0x2F_XwXUjHz}/_buildManifest.js +0 -0
- /package/web/.next/static/{eu15XGqVtBSCUjVy2GmoQ → 8e_LzmibF0x2F_XwXUjHz}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{eu15XGqVtBSCUjVy2GmoQ → 8e_LzmibF0x2F_XwXUjHz}/_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":"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
|
|
1
|
+
{"version":3,"file":"git-pr.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/git/git-pr.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -652,6 +652,99 @@ let GitPrService = class GitPrService {
|
|
|
652
652
|
commitCount,
|
|
653
653
|
};
|
|
654
654
|
}
|
|
655
|
+
async isFork(cwd) {
|
|
656
|
+
try {
|
|
657
|
+
const { stdout } = await this.execFile('gh', ['repo', 'view', '--json', 'parent', '--jq', '.parent.url'], { cwd });
|
|
658
|
+
const url = stdout.trim();
|
|
659
|
+
if (!url || url === 'null') {
|
|
660
|
+
return { isFork: false };
|
|
661
|
+
}
|
|
662
|
+
return { isFork: true, upstreamUrl: url };
|
|
663
|
+
}
|
|
664
|
+
catch {
|
|
665
|
+
return { isFork: false };
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
async ensureUpstreamRemote(cwd, upstreamUrl) {
|
|
669
|
+
try {
|
|
670
|
+
await this.execFile('git', ['remote', 'get-url', 'upstream'], { cwd });
|
|
671
|
+
// Remote already exists — no-op
|
|
672
|
+
}
|
|
673
|
+
catch {
|
|
674
|
+
// Remote does not exist — add it
|
|
675
|
+
try {
|
|
676
|
+
await this.execFile('git', ['remote', 'add', 'upstream', upstreamUrl], { cwd });
|
|
677
|
+
}
|
|
678
|
+
catch (error) {
|
|
679
|
+
throw this.parseGitError(error);
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
}
|
|
683
|
+
async fetchUpstream(cwd) {
|
|
684
|
+
try {
|
|
685
|
+
await this.execFile('git', ['fetch', 'upstream'], { cwd });
|
|
686
|
+
}
|
|
687
|
+
catch (error) {
|
|
688
|
+
throw this.parseGitError(error);
|
|
689
|
+
}
|
|
690
|
+
}
|
|
691
|
+
async syncForkMain(cwd) {
|
|
692
|
+
// Save current branch to restore after sync
|
|
693
|
+
let currentBranch;
|
|
694
|
+
try {
|
|
695
|
+
const { stdout } = await this.execFile('git', ['symbolic-ref', '--short', 'HEAD'], { cwd });
|
|
696
|
+
currentBranch = stdout.trim();
|
|
697
|
+
}
|
|
698
|
+
catch {
|
|
699
|
+
// Detached HEAD — save commit hash instead
|
|
700
|
+
const { stdout } = await this.execFile('git', ['rev-parse', 'HEAD'], { cwd });
|
|
701
|
+
currentBranch = stdout.trim();
|
|
702
|
+
}
|
|
703
|
+
try {
|
|
704
|
+
await this.fetchUpstream(cwd);
|
|
705
|
+
await this.execFile('git', ['checkout', 'main'], { cwd });
|
|
706
|
+
await this.execFile('git', ['reset', '--hard', 'upstream/main'], { cwd });
|
|
707
|
+
}
|
|
708
|
+
finally {
|
|
709
|
+
// Restore previous branch even if sync partially fails
|
|
710
|
+
try {
|
|
711
|
+
await this.execFile('git', ['checkout', currentBranch], { cwd });
|
|
712
|
+
}
|
|
713
|
+
catch {
|
|
714
|
+
// best effort — ignore restore failure
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
async rebase(cwd, branch, onto) {
|
|
719
|
+
try {
|
|
720
|
+
await this.execFile('git', ['rebase', onto], { cwd });
|
|
721
|
+
}
|
|
722
|
+
catch (error) {
|
|
723
|
+
// Extract stdout/stderr from the exec error to find conflict file names
|
|
724
|
+
const stdout = error.stdout ?? '';
|
|
725
|
+
const stderr = error.stderr ?? '';
|
|
726
|
+
const combined = `${stdout}\n${stderr}`;
|
|
727
|
+
const conflictFiles = this.parseConflictFiles(combined);
|
|
728
|
+
// Abort to keep the worktree clean
|
|
729
|
+
try {
|
|
730
|
+
await this.execFile('git', ['rebase', '--abort'], { cwd });
|
|
731
|
+
}
|
|
732
|
+
catch {
|
|
733
|
+
// abort is best-effort — ignore failure
|
|
734
|
+
}
|
|
735
|
+
if (conflictFiles.length > 0) {
|
|
736
|
+
const fileList = conflictFiles.map((f) => ` - ${f}`).join('\n');
|
|
737
|
+
throw new GitPrError(`Rebase of '${branch}' onto '${onto}' failed due to conflicts.\n` +
|
|
738
|
+
`Conflicting files:\n${fileList}\n\n` +
|
|
739
|
+
`Resolve the conflicts manually then re-run the rebase command.`, GitPrErrorCode.REBASE_CONFLICT, error instanceof Error ? error : undefined);
|
|
740
|
+
}
|
|
741
|
+
throw this.parseGitError(error);
|
|
742
|
+
}
|
|
743
|
+
}
|
|
744
|
+
parseConflictFiles(output) {
|
|
745
|
+
const matches = output.matchAll(/CONFLICT \(content\): Merge conflict in (.+)/g);
|
|
746
|
+
return [...matches].map((m) => m[1].trim());
|
|
747
|
+
}
|
|
655
748
|
};
|
|
656
749
|
GitPrService = __decorate([
|
|
657
750
|
injectable(),
|
|
@@ -18,7 +18,6 @@ export declare class WorktreeService implements IWorktreeService {
|
|
|
18
18
|
private readonly execFile;
|
|
19
19
|
constructor(execFile: ExecFunction);
|
|
20
20
|
create(repoPath: string, branch: string, worktreePath: string, startPoint?: string): Promise<WorktreeInfo>;
|
|
21
|
-
addExisting(repoPath: string, branch: string, worktreePath: string): Promise<WorktreeInfo>;
|
|
22
21
|
remove(repoPath: string, worktreePath: string, force?: boolean): Promise<void>;
|
|
23
22
|
prune(repoPath: string): Promise<void>;
|
|
24
23
|
list(repoPath: string): Promise<WorktreeInfo[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worktree.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/git/worktree.service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACb,MAAM,0EAA0E,CAAC;AAQlF;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CACzB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,MAAM,KACb,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEjD,qBACa,eAAgB,YAAW,gBAAgB;IAClB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,YAAY;IAErE,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,CAAC;IAuBlB,
|
|
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"}
|