@shepai/cli 1.136.1 → 1.137.0-pr440.3cc2b78
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/apis/json-schema/Feature.yaml +3 -0
- package/apis/json-schema/FeatureFlags.yaml +5 -0
- package/apis/json-schema/SdlcLifecycle.yaml +1 -0
- package/dist/packages/core/src/application/ports/output/repositories/feature-repository.interface.d.ts +2 -0
- 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 +91 -5
- 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 -4
- package/dist/packages/core/src/application/use-cases/features/archive-feature.use-case.d.ts +20 -0
- package/dist/packages/core/src/application/use-cases/features/archive-feature.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/features/archive-feature.use-case.js +73 -0
- package/dist/packages/core/src/application/use-cases/features/get-branch-sync-status.use-case.d.ts +25 -0
- package/dist/packages/core/src/application/use-cases/features/get-branch-sync-status.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/features/get-branch-sync-status.use-case.js +62 -0
- package/dist/packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.d.ts +34 -0
- package/dist/packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.js +139 -0
- package/dist/packages/core/src/application/use-cases/features/unarchive-feature.use-case.d.ts +20 -0
- package/dist/packages/core/src/application/use-cases/features/unarchive-feature.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/features/unarchive-feature.use-case.js +65 -0
- package/dist/packages/core/src/application/use-cases/repositories/sync-repository-main.use-case.d.ts +16 -0
- package/dist/packages/core/src/application/use-cases/repositories/sync-repository-main.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/repositories/sync-repository-main.use-case.js +43 -0
- package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
- package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +1 -0
- package/dist/packages/core/src/domain/generated/output.d.ts +10 -1
- package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
- package/dist/packages/core/src/domain/generated/output.js +1 -0
- package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/di/container.js +30 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.js +6 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +2 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/042-add-feature-flag-git-rebase-sync.d.ts +11 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/042-add-feature-flag-git-rebase-sync.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/042-add-feature-flag-git-rebase-sync.js +17 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/044-add-previous-lifecycle.d.ts +12 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/044-add-previous-lifecycle.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/044-add-previous-lifecycle.js +16 -0
- 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 +7 -2
- package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +3 -2
- package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.prompt.d.ts +35 -0
- package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.prompt.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.prompt.js +66 -0
- package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.d.ts +42 -0
- package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.js +169 -0
- package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts +10 -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 +150 -0
- package/dist/src/presentation/cli/commands/feat/archive.command.d.ts +18 -0
- package/dist/src/presentation/cli/commands/feat/archive.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/feat/archive.command.js +54 -0
- package/dist/src/presentation/cli/commands/feat/index.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/index.js +5 -1
- package/dist/src/presentation/cli/commands/feat/ls.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/ls.command.js +5 -0
- package/dist/src/presentation/cli/commands/feat/unarchive.command.d.ts +17 -0
- package/dist/src/presentation/cli/commands/feat/unarchive.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/feat/unarchive.command.js +42 -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 +11 -13
- package/dist/src/presentation/web/app/actions/archive-feature.d.ts +6 -0
- package/dist/src/presentation/web/app/actions/archive-feature.d.ts.map +1 -0
- package/dist/src/presentation/web/app/actions/archive-feature.js +16 -0
- package/dist/src/presentation/web/app/actions/get-branch-sync-status.d.ts +11 -0
- package/dist/src/presentation/web/app/actions/get-branch-sync-status.d.ts.map +1 -0
- package/dist/src/presentation/web/app/actions/get-branch-sync-status.js +22 -0
- package/dist/src/presentation/web/app/actions/rebase-feature.d.ts +5 -0
- package/dist/src/presentation/web/app/actions/rebase-feature.d.ts.map +1 -0
- package/dist/src/presentation/web/app/actions/rebase-feature.js +16 -0
- package/dist/src/presentation/web/app/actions/sync-repository.d.ts +5 -0
- package/dist/src/presentation/web/app/actions/sync-repository.d.ts.map +1 -0
- package/dist/src/presentation/web/app/actions/sync-repository.js +16 -0
- package/dist/src/presentation/web/app/actions/unarchive-feature.d.ts +6 -0
- package/dist/src/presentation/web/app/actions/unarchive-feature.d.ts.map +1 -0
- package/dist/src/presentation/web/app/actions/unarchive-feature.js +16 -0
- package/dist/src/presentation/web/app/api/agent-events/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/agent-events/route.js +1 -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 +16 -1
- 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 +4 -0
- 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 +32 -1
- 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 +1 -0
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/branch-sync-status.d.ts +12 -0
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/branch-sync-status.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/branch-sync-status.js +13 -0
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/branch-sync-status.stories.d.ts +15 -0
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/branch-sync-status.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/branch-sync-status.stories.js +86 -0
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts +9 -1
- 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 +9 -1
- 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 -2
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.d.ts +6 -0
- 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 +34 -0
- package/dist/src/presentation/web/components/common/feature-node/derive-feature-state.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/derive-feature-state.js +6 -0
- package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts +3 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.js +11 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-node.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-node.js +25 -8
- package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.d.ts +5 -0
- package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.js +75 -1
- 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 +3 -0
- 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 +5 -3
- package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.d.ts +2 -0
- package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.js +21 -0
- 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 +4 -0
- 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 +11 -0
- 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 +13 -4
- package/dist/src/presentation/web/components/features/control-center/control-center.stories.d.ts +6 -0
- package/dist/src/presentation/web/components/features/control-center/control-center.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/control-center/control-center.stories.js +70 -0
- package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts +6 -0
- package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/control-center/use-control-center-state.js +50 -2
- package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.js +3 -0
- package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.js +3 -0
- package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/settings-page-client.js +5 -0
- package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.js +1 -0
- package/dist/src/presentation/web/components/layouts/app-shell/app-shell.d.ts.map +1 -1
- package/dist/src/presentation/web/components/layouts/app-shell/app-shell.js +1 -3
- package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts.map +1 -1
- package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.js +45 -5
- package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.js +1 -0
- package/dist/src/presentation/web/hooks/feature-flags-context.d.ts.map +1 -1
- package/dist/src/presentation/web/hooks/feature-flags-context.js +1 -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 +1 -0
- package/dist/src/presentation/web/hooks/use-branch-sync-status.d.ts +14 -0
- package/dist/src/presentation/web/hooks/use-branch-sync-status.d.ts.map +1 -0
- package/dist/src/presentation/web/hooks/use-branch-sync-status.js +67 -0
- package/dist/src/presentation/web/hooks/use-graph-state.d.ts +1 -1
- package/dist/src/presentation/web/hooks/use-graph-state.d.ts.map +1 -1
- package/dist/src/presentation/web/hooks/use-graph-state.js +17 -2
- package/dist/src/presentation/web/hooks/use-sound-action.d.ts +4 -4
- package/dist/src/presentation/web/hooks/use-sound-action.js +2 -2
- package/dist/src/presentation/web/lib/derive-graph.d.ts +4 -0
- package/dist/src/presentation/web/lib/derive-graph.d.ts.map +1 -1
- package/dist/src/presentation/web/lib/derive-graph.js +11 -0
- package/dist/src/presentation/web/lib/feature-flags.d.ts +2 -0
- package/dist/src/presentation/web/lib/feature-flags.d.ts.map +1 -1
- package/dist/src/presentation/web/lib/feature-flags.js +5 -0
- 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 +3 -3
- package/web/.next/required-server-files.json +3 -3
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +95 -50
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +2 -2
- 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 +95 -50
- 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/server-reference-manifest.json +137 -62
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +2 -2
- 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 +137 -62
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +2 -2
- 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 +91 -46
- 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/server-reference-manifest.json +95 -50
- 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/server-reference-manifest.json +137 -62
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +2 -2
- 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 +137 -62
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +2 -2
- 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 +91 -46
- 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/server-reference-manifest.json +91 -46
- 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.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/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/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js +2 -2
- package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.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]__c6e32a23._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__c6e32a23._.js.map +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +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/[root-of-the-server]__2c703b78._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__2c703b78._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__3ef34e4c._.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]__59a3897b._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__59a3897b._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6ec59045._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6ec59045._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__78aecdd5._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__78aecdd5._.js.map +1 -0
- 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]__a5f9c6e5._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a5f9c6e5._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__cb850066._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__cb850066._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f222995d._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f222995d._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0020fddd._.js +1 -1
- package/web/.next/server/chunks/ssr/_0020fddd._.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/_0c5f56e3._.js +6 -0
- package/web/.next/server/chunks/ssr/_0c5f56e3._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1b719e7f._.js +4 -0
- package/web/.next/server/chunks/ssr/_1b719e7f._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_37e8548b._.js +4 -0
- package/web/.next/server/chunks/ssr/_37e8548b._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_55d763e2._.js +4 -0
- package/web/.next/server/chunks/ssr/_55d763e2._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_64bdfc6f._.js +6 -0
- package/web/.next/server/chunks/ssr/_64bdfc6f._.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/_a37f5f18._.js +1 -1
- package/web/.next/server/chunks/ssr/_a37f5f18._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_a9f57758._.js +1 -1
- package/web/.next/server/chunks/ssr/_aa7b4984._.js +4 -0
- package/web/.next/server/chunks/ssr/_aa7b4984._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_b2336431._.js +3 -0
- package/web/.next/server/chunks/ssr/_b2336431._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_b71645b4._.js +4 -0
- package/web/.next/server/chunks/ssr/_b71645b4._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_cfbd1d7e._.js +3 -0
- package/web/.next/server/chunks/ssr/_cfbd1d7e._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_d4b20e29._.js.map +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/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_9d7292c4._.js → src_presentation_web_a7a9af77._.js} +2 -2
- package/web/.next/server/chunks/ssr/{src_presentation_web_9d7292c4._.js.map → src_presentation_web_a7a9af77._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js.map +1 -0
- 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_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 +613 -307
- package/web/.next/static/chunks/{4938159e46498d00.js → 01ad05d7b04a4ae4.js} +1 -1
- package/web/.next/static/chunks/{d11f1dbba7daafbd.js → 144c1440c7dc32ae.js} +1 -1
- package/web/.next/static/chunks/{73fd16bb130a559c.js → 2b88407d9d08ffb6.js} +1 -1
- package/web/.next/static/chunks/{d44bf63a94fd5d79.js → 65735532a80d7a48.js} +1 -1
- package/web/.next/static/chunks/6a370f2709c81d83.js +1 -0
- package/web/.next/static/chunks/{0b7fe2ac4f078f54.js → 7e7537ab107a5ed5.js} +1 -1
- package/web/.next/static/chunks/{9f3f53cc48fa1ccf.js → 7f8737ac3cb237f0.js} +2 -2
- package/web/.next/static/chunks/{a21d883baebd7bdb.js → 802c628fb0a867d5.js} +1 -1
- package/web/.next/static/chunks/{c2311839bfa63e4a.js → 8e1f94dab5045d3a.js} +1 -1
- package/web/.next/static/chunks/{e370f42e84b4ac0d.js → a523635204113a08.js} +1 -1
- package/web/.next/static/chunks/a67a57e5a966bf31.js +1 -0
- package/web/.next/static/chunks/bce9fe4010b60a86.js +1 -0
- package/web/.next/static/chunks/{68351a1fb1e57d86.js → d755403390c8450e.js} +1 -1
- package/web/.next/static/chunks/e002b0d7ed7e1436.js +2 -0
- package/web/.next/static/chunks/eb35e98c31806836.css +1 -0
- package/web/.next/static/chunks/f66c996402a430f5.js +1 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_b49d9c97.js +0 -3
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_b49d9c97.js.map +0 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_28632197.js +0 -3
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_28632197.js.map +0 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_10695d37.js +0 -3
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_10695d37.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__47ded061._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__47ded061._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__68ce373c._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__68ce373c._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__718766da._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__718766da._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b3dbadca._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b3dbadca._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fdd058b2._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fdd058b2._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_3a8b11f5._.js +0 -4
- package/web/.next/server/chunks/ssr/_3a8b11f5._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_e69a26ba._.js +0 -4
- package/web/.next/server/chunks/ssr/_e69a26ba._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_fafd03ec._.js +0 -3
- package/web/.next/server/chunks/ssr/_fafd03ec._.js.map +0 -1
- package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +0 -3
- package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_53666118._.js +0 -5
- package/web/.next/server/chunks/ssr/src_presentation_web_53666118._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_d95e128d.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_d95e128d.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_e4df6dd7._.js +0 -5
- package/web/.next/server/chunks/ssr/src_presentation_web_e4df6dd7._.js.map +0 -1
- package/web/.next/static/chunks/1ccea0ca4cca00f7.js +0 -1
- package/web/.next/static/chunks/5e66bfba061db621.js +0 -2
- package/web/.next/static/chunks/92cd6f523639a6fa.css +0 -1
- package/web/.next/static/chunks/d0dff217a94d4ee1.js +0 -1
- package/web/.next/static/chunks/e84d2b794f97eb3a.js +0 -1
- package/web/.next/static/chunks/eb9841ec4d80af01.js +0 -1
- /package/web/.next/static/{Ywxn_J9lSl6kCndILP_ke → -HU_YhdkXjBllCPooOqtQ}/_buildManifest.js +0 -0
- /package/web/.next/static/{Ywxn_J9lSl6kCndILP_ke → -HU_YhdkXjBllCPooOqtQ}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{Ywxn_J9lSl6kCndILP_ke → -HU_YhdkXjBllCPooOqtQ}/_ssgManifest.js +0 -0
|
@@ -69,6 +69,9 @@ properties:
|
|
|
69
69
|
parentId:
|
|
70
70
|
$ref: UUID.yaml
|
|
71
71
|
description: Parent feature ID for dependency tracking (optional)
|
|
72
|
+
previousLifecycle:
|
|
73
|
+
$ref: SdlcLifecycle.yaml
|
|
74
|
+
description: Lifecycle state prior to archiving, used to restore on unarchive (only set when lifecycle is Archived)
|
|
72
75
|
attachments:
|
|
73
76
|
type: array
|
|
74
77
|
items:
|
|
@@ -22,6 +22,10 @@ properties:
|
|
|
22
22
|
type: boolean
|
|
23
23
|
default: false
|
|
24
24
|
description: Enable adopt branch feature to import existing branches as tracked features
|
|
25
|
+
gitRebaseSync:
|
|
26
|
+
type: boolean
|
|
27
|
+
default: false
|
|
28
|
+
description: Enable git rebase-on-main and sync-main operations in the web UI
|
|
25
29
|
reactFileManager:
|
|
26
30
|
type: boolean
|
|
27
31
|
default: false
|
|
@@ -32,5 +36,6 @@ required:
|
|
|
32
36
|
- debug
|
|
33
37
|
- githubImport
|
|
34
38
|
- adoptBranch
|
|
39
|
+
- gitRebaseSync
|
|
35
40
|
- reactFileManager
|
|
36
41
|
description: Feature flag toggles for runtime feature control
|
|
@@ -17,6 +17,8 @@ export interface FeatureListFilters {
|
|
|
17
17
|
lifecycle?: SdlcLifecycle;
|
|
18
18
|
/** When true, include soft-deleted features in results. Default: false. */
|
|
19
19
|
includeDeleted?: boolean;
|
|
20
|
+
/** When true, include archived features in results. Default: false. */
|
|
21
|
+
includeArchived?: boolean;
|
|
20
22
|
}
|
|
21
23
|
/**
|
|
22
24
|
* Repository interface for Feature entity persistence.
|
|
@@ -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;
|
|
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;IACzB,uEAAuE;IACvE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;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;;;;;;;;;OASG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAE9E;;;;;;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
|
@@ -9,15 +9,17 @@ import type { PrStatus } from '../../../../domain/generated/output.js';
|
|
|
9
9
|
* Error codes for git PR operations.
|
|
10
10
|
*/
|
|
11
11
|
export declare enum GitPrErrorCode {
|
|
12
|
-
MERGE_CONFLICT = "MERGE_CONFLICT",
|
|
13
12
|
AUTH_FAILURE = "AUTH_FAILURE",
|
|
14
|
-
GH_NOT_FOUND = "GH_NOT_FOUND",
|
|
15
|
-
NETWORK_ERROR = "NETWORK_ERROR",
|
|
16
|
-
CI_TIMEOUT = "CI_TIMEOUT",
|
|
17
13
|
BRANCH_NOT_FOUND = "BRANCH_NOT_FOUND",
|
|
14
|
+
CI_TIMEOUT = "CI_TIMEOUT",
|
|
15
|
+
GH_NOT_FOUND = "GH_NOT_FOUND",
|
|
18
16
|
GIT_ERROR = "GIT_ERROR",
|
|
17
|
+
MERGE_CONFLICT = "MERGE_CONFLICT",
|
|
19
18
|
MERGE_FAILED = "MERGE_FAILED",
|
|
20
|
-
|
|
19
|
+
NETWORK_ERROR = "NETWORK_ERROR",
|
|
20
|
+
PR_NOT_FOUND = "PR_NOT_FOUND",
|
|
21
|
+
REBASE_CONFLICT = "REBASE_CONFLICT",
|
|
22
|
+
SYNC_FAILED = "SYNC_FAILED"
|
|
21
23
|
}
|
|
22
24
|
/**
|
|
23
25
|
* Typed error for git PR operations.
|
|
@@ -321,5 +323,89 @@ export interface IGitPrService {
|
|
|
321
323
|
* @throws GitPrError with GH_NOT_FOUND or GIT_ERROR code on failure
|
|
322
324
|
*/
|
|
323
325
|
getFailureLogs(cwd: string, runId: string, branch: string, logMaxChars?: number): Promise<string>;
|
|
326
|
+
/**
|
|
327
|
+
* Sync the remote-tracking ref for the base branch.
|
|
328
|
+
* If currently on the base branch, uses `git pull --ff-only`.
|
|
329
|
+
* If on a different branch (including worktrees), uses `git fetch origin <baseBranch>`
|
|
330
|
+
* which updates `origin/<baseBranch>` without touching the local branch ref.
|
|
331
|
+
* This avoids the "refusing to fetch into branch checked out at..." error
|
|
332
|
+
* when the local base branch is checked out in another worktree.
|
|
333
|
+
*
|
|
334
|
+
* @param cwd - Working directory path
|
|
335
|
+
* @param baseBranch - The base branch to sync (e.g. "main")
|
|
336
|
+
* @throws GitPrError with SYNC_FAILED code if the branch has diverged and cannot fast-forward
|
|
337
|
+
* @throws GitPrError with GIT_ERROR code on other git failures
|
|
338
|
+
*/
|
|
339
|
+
syncMain(cwd: string, baseBranch: string): Promise<void>;
|
|
340
|
+
/**
|
|
341
|
+
* Rebase the feature branch onto `origin/<baseBranch>`.
|
|
342
|
+
* Uses the remote-tracking ref (not the local branch) to avoid issues
|
|
343
|
+
* when the local base branch is checked out in another worktree.
|
|
344
|
+
* Checks for dirty worktree before starting. Detects conflict state
|
|
345
|
+
* from git exit code and stderr — throws REBASE_CONFLICT if conflicts
|
|
346
|
+
* are encountered (caller is responsible for resolution or abort).
|
|
347
|
+
*
|
|
348
|
+
* @param cwd - Working directory path
|
|
349
|
+
* @param featureBranch - The feature branch to rebase
|
|
350
|
+
* @param baseBranch - The base branch name (rebase target will be origin/<baseBranch>)
|
|
351
|
+
* @throws GitPrError with GIT_ERROR code if the worktree is dirty
|
|
352
|
+
* @throws GitPrError with REBASE_CONFLICT code if conflicts are detected
|
|
353
|
+
* @throws GitPrError with BRANCH_NOT_FOUND code if a branch does not exist
|
|
354
|
+
*/
|
|
355
|
+
rebaseOnMain(cwd: string, featureBranch: string, baseBranch: string): Promise<void>;
|
|
356
|
+
/**
|
|
357
|
+
* Get the list of files with unresolved conflicts (unmerged paths).
|
|
358
|
+
* Uses `git diff --name-only --diff-filter=U` to identify conflicted files.
|
|
359
|
+
*
|
|
360
|
+
* @param cwd - Working directory path
|
|
361
|
+
* @returns Array of file paths with unresolved conflicts
|
|
362
|
+
* @throws GitPrError with GIT_ERROR code on failure
|
|
363
|
+
*/
|
|
364
|
+
getConflictedFiles(cwd: string): Promise<string[]>;
|
|
365
|
+
/**
|
|
366
|
+
* Stage specific files in the working directory.
|
|
367
|
+
* Uses `git add` for the specified file paths.
|
|
368
|
+
*
|
|
369
|
+
* @param cwd - Working directory path
|
|
370
|
+
* @param files - Array of file paths to stage
|
|
371
|
+
* @throws GitPrError with GIT_ERROR code on failure
|
|
372
|
+
*/
|
|
373
|
+
stageFiles(cwd: string, files: string[]): Promise<void>;
|
|
374
|
+
/**
|
|
375
|
+
* Continue an in-progress rebase after conflicts have been resolved.
|
|
376
|
+
* Runs `git rebase --continue`. May throw REBASE_CONFLICT if the next
|
|
377
|
+
* commit in the rebase also has conflicts.
|
|
378
|
+
*
|
|
379
|
+
* @param cwd - Working directory path
|
|
380
|
+
* @throws GitPrError with REBASE_CONFLICT code if new conflicts are detected
|
|
381
|
+
* @throws GitPrError with GIT_ERROR code on other git failures
|
|
382
|
+
*/
|
|
383
|
+
rebaseContinue(cwd: string): Promise<void>;
|
|
384
|
+
/**
|
|
385
|
+
* Abort an in-progress rebase, restoring the branch to its pre-rebase state.
|
|
386
|
+
* Runs `git rebase --abort`.
|
|
387
|
+
*
|
|
388
|
+
* @param cwd - Working directory path
|
|
389
|
+
* @throws GitPrError with GIT_ERROR code on failure
|
|
390
|
+
*/
|
|
391
|
+
rebaseAbort(cwd: string): Promise<void>;
|
|
392
|
+
/**
|
|
393
|
+
* Get the sync status (ahead/behind counts) between a feature branch
|
|
394
|
+
* and a base branch's remote-tracking ref.
|
|
395
|
+
*
|
|
396
|
+
* Uses:
|
|
397
|
+
* - `git rev-list --count origin/<baseBranch>..<featureBranch>` → ahead
|
|
398
|
+
* - `git rev-list --count <featureBranch>..origin/<baseBranch>` → behind
|
|
399
|
+
*
|
|
400
|
+
* @param cwd - Working directory path
|
|
401
|
+
* @param featureBranch - The feature branch to check
|
|
402
|
+
* @param baseBranch - The base branch name (uses origin/<baseBranch>)
|
|
403
|
+
* @returns Object with ahead and behind commit counts
|
|
404
|
+
* @throws GitPrError with GIT_ERROR code on failure
|
|
405
|
+
*/
|
|
406
|
+
getBranchSyncStatus(cwd: string, featureBranch: string, baseBranch: string): Promise<{
|
|
407
|
+
ahead: number;
|
|
408
|
+
behind: number;
|
|
409
|
+
}>;
|
|
324
410
|
}
|
|
325
411
|
//# sourceMappingURL=git-pr-service.interface.d.ts.map
|
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,
|
|
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,15 +9,17 @@
|
|
|
9
9
|
*/
|
|
10
10
|
export var GitPrErrorCode;
|
|
11
11
|
(function (GitPrErrorCode) {
|
|
12
|
-
GitPrErrorCode["MERGE_CONFLICT"] = "MERGE_CONFLICT";
|
|
13
12
|
GitPrErrorCode["AUTH_FAILURE"] = "AUTH_FAILURE";
|
|
14
|
-
GitPrErrorCode["GH_NOT_FOUND"] = "GH_NOT_FOUND";
|
|
15
|
-
GitPrErrorCode["NETWORK_ERROR"] = "NETWORK_ERROR";
|
|
16
|
-
GitPrErrorCode["CI_TIMEOUT"] = "CI_TIMEOUT";
|
|
17
13
|
GitPrErrorCode["BRANCH_NOT_FOUND"] = "BRANCH_NOT_FOUND";
|
|
14
|
+
GitPrErrorCode["CI_TIMEOUT"] = "CI_TIMEOUT";
|
|
15
|
+
GitPrErrorCode["GH_NOT_FOUND"] = "GH_NOT_FOUND";
|
|
18
16
|
GitPrErrorCode["GIT_ERROR"] = "GIT_ERROR";
|
|
17
|
+
GitPrErrorCode["MERGE_CONFLICT"] = "MERGE_CONFLICT";
|
|
19
18
|
GitPrErrorCode["MERGE_FAILED"] = "MERGE_FAILED";
|
|
19
|
+
GitPrErrorCode["NETWORK_ERROR"] = "NETWORK_ERROR";
|
|
20
20
|
GitPrErrorCode["PR_NOT_FOUND"] = "PR_NOT_FOUND";
|
|
21
|
+
GitPrErrorCode["REBASE_CONFLICT"] = "REBASE_CONFLICT";
|
|
22
|
+
GitPrErrorCode["SYNC_FAILED"] = "SYNC_FAILED";
|
|
21
23
|
})(GitPrErrorCode || (GitPrErrorCode = {}));
|
|
22
24
|
/**
|
|
23
25
|
* Typed error for git PR operations.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Archive Feature Use Case
|
|
3
|
+
*
|
|
4
|
+
* Transitions a feature's lifecycle to Archived, storing the current lifecycle
|
|
5
|
+
* in previousLifecycle for restoration on unarchive.
|
|
6
|
+
*
|
|
7
|
+
* Business Rules:
|
|
8
|
+
* - Any feature can be archived except those already Archived or Deleting
|
|
9
|
+
* - Features with active (non-archived, non-deleted) children cannot be archived
|
|
10
|
+
* - The current lifecycle is preserved in previousLifecycle for unarchive restoration
|
|
11
|
+
* - No git operations or agent cancellations are triggered (archive is non-destructive)
|
|
12
|
+
*/
|
|
13
|
+
import type { Feature } from '../../../domain/generated/output.js';
|
|
14
|
+
import type { IFeatureRepository } from '../../ports/output/repositories/feature-repository.interface.js';
|
|
15
|
+
export declare class ArchiveFeatureUseCase {
|
|
16
|
+
private readonly featureRepo;
|
|
17
|
+
constructor(featureRepo: IFeatureRepository);
|
|
18
|
+
execute(featureId: string): Promise<Feature>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=archive-feature.use-case.d.ts.map
|
package/dist/packages/core/src/application/use-cases/features/archive-feature.use-case.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"archive-feature.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/features/archive-feature.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AAQ1G,qBACa,qBAAqB;IACU,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,kBAAkB;IAEpF,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CA0CnD"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Archive Feature Use Case
|
|
3
|
+
*
|
|
4
|
+
* Transitions a feature's lifecycle to Archived, storing the current lifecycle
|
|
5
|
+
* in previousLifecycle for restoration on unarchive.
|
|
6
|
+
*
|
|
7
|
+
* Business Rules:
|
|
8
|
+
* - Any feature can be archived except those already Archived or Deleting
|
|
9
|
+
* - Features with active (non-archived, non-deleted) children cannot be archived
|
|
10
|
+
* - The current lifecycle is preserved in previousLifecycle for unarchive restoration
|
|
11
|
+
* - No git operations or agent cancellations are triggered (archive is non-destructive)
|
|
12
|
+
*/
|
|
13
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
14
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
15
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
16
|
+
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;
|
|
17
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
18
|
+
};
|
|
19
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
21
|
+
};
|
|
22
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
23
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
24
|
+
};
|
|
25
|
+
import { injectable, inject } from 'tsyringe';
|
|
26
|
+
import { SdlcLifecycle } from '../../../domain/generated/output.js';
|
|
27
|
+
/** Lifecycle states that cannot be archived. */
|
|
28
|
+
const NON_ARCHIVABLE_STATES = new Set([
|
|
29
|
+
SdlcLifecycle.Archived,
|
|
30
|
+
SdlcLifecycle.Deleting,
|
|
31
|
+
]);
|
|
32
|
+
let ArchiveFeatureUseCase = class ArchiveFeatureUseCase {
|
|
33
|
+
featureRepo;
|
|
34
|
+
constructor(featureRepo) {
|
|
35
|
+
this.featureRepo = featureRepo;
|
|
36
|
+
}
|
|
37
|
+
async execute(featureId) {
|
|
38
|
+
// 1. Find feature (exact or prefix match)
|
|
39
|
+
const feature = (await this.featureRepo.findById(featureId)) ??
|
|
40
|
+
(await this.featureRepo.findByIdPrefix(featureId));
|
|
41
|
+
if (!feature) {
|
|
42
|
+
throw new Error(`Feature not found: "${featureId}"`);
|
|
43
|
+
}
|
|
44
|
+
// 2. Validate lifecycle is archivable
|
|
45
|
+
if (NON_ARCHIVABLE_STATES.has(feature.lifecycle)) {
|
|
46
|
+
throw new Error(`Cannot archive feature "${feature.name}": lifecycle is ${feature.lifecycle}. ` +
|
|
47
|
+
`Features that are already archived or being deleted cannot be archived.`);
|
|
48
|
+
}
|
|
49
|
+
// 3. Check for active (non-archived, non-deleted) children
|
|
50
|
+
const children = await this.featureRepo.findByParentId(feature.id);
|
|
51
|
+
const activeChildren = children.filter((c) => c.lifecycle !== SdlcLifecycle.Archived && !c.deletedAt);
|
|
52
|
+
if (activeChildren.length > 0) {
|
|
53
|
+
const names = activeChildren.map((c) => c.name).join(', ');
|
|
54
|
+
throw new Error(`Cannot archive feature "${feature.name}": it has active child features (${names}). ` +
|
|
55
|
+
`Archive or delete child features first.`);
|
|
56
|
+
}
|
|
57
|
+
// 4. Store current lifecycle and transition to Archived
|
|
58
|
+
const updatedFeature = {
|
|
59
|
+
...feature,
|
|
60
|
+
previousLifecycle: feature.lifecycle,
|
|
61
|
+
lifecycle: SdlcLifecycle.Archived,
|
|
62
|
+
updatedAt: new Date(),
|
|
63
|
+
};
|
|
64
|
+
await this.featureRepo.update(updatedFeature);
|
|
65
|
+
return updatedFeature;
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
ArchiveFeatureUseCase = __decorate([
|
|
69
|
+
injectable(),
|
|
70
|
+
__param(0, inject('IFeatureRepository')),
|
|
71
|
+
__metadata("design:paramtypes", [Object])
|
|
72
|
+
], ArchiveFeatureUseCase);
|
|
73
|
+
export { ArchiveFeatureUseCase };
|
package/dist/packages/core/src/application/use-cases/features/get-branch-sync-status.use-case.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get Branch Sync Status Use Case
|
|
3
|
+
*
|
|
4
|
+
* Returns how many commits a feature branch is ahead/behind the base branch.
|
|
5
|
+
*
|
|
6
|
+
* Flow: resolve feature → determine cwd (worktree or repo root) →
|
|
7
|
+
* sync remote tracking ref → get branch sync status.
|
|
8
|
+
*/
|
|
9
|
+
import type { IFeatureRepository } from '../../ports/output/repositories/feature-repository.interface.js';
|
|
10
|
+
import type { IGitPrService } from '../../ports/output/services/git-pr-service.interface.js';
|
|
11
|
+
import type { IWorktreeService } from '../../ports/output/services/worktree-service.interface.js';
|
|
12
|
+
export interface BranchSyncStatusResult {
|
|
13
|
+
ahead: number;
|
|
14
|
+
behind: number;
|
|
15
|
+
baseBranch: string;
|
|
16
|
+
}
|
|
17
|
+
export declare class GetBranchSyncStatusUseCase {
|
|
18
|
+
private readonly featureRepo;
|
|
19
|
+
private readonly gitPrService;
|
|
20
|
+
private readonly worktreeService;
|
|
21
|
+
constructor(featureRepo: IFeatureRepository, gitPrService: IGitPrService, worktreeService: IWorktreeService);
|
|
22
|
+
execute(featureId: string): Promise<BranchSyncStatusResult>;
|
|
23
|
+
private resolveCwd;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=get-branch-sync-status.use-case.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-branch-sync-status.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/features/get-branch-sync-status.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AAC1G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yDAAyD,CAAC;AAC7F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAElG,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBACa,0BAA0B;IAGnC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAJf,WAAW,EAAE,kBAAkB,EAE/B,YAAY,EAAE,aAAa,EAE3B,eAAe,EAAE,gBAAgB;IAG9C,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;YA0BnD,UAAU;CAOzB"}
|
package/dist/packages/core/src/application/use-cases/features/get-branch-sync-status.use-case.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get Branch Sync Status Use Case
|
|
3
|
+
*
|
|
4
|
+
* Returns how many commits a feature branch is ahead/behind the base branch.
|
|
5
|
+
*
|
|
6
|
+
* Flow: resolve feature → determine cwd (worktree or repo root) →
|
|
7
|
+
* sync remote tracking ref → get branch sync status.
|
|
8
|
+
*/
|
|
9
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
10
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
11
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
12
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
13
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
14
|
+
};
|
|
15
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
16
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
17
|
+
};
|
|
18
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
19
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
20
|
+
};
|
|
21
|
+
import { injectable, inject } from 'tsyringe';
|
|
22
|
+
let GetBranchSyncStatusUseCase = class GetBranchSyncStatusUseCase {
|
|
23
|
+
featureRepo;
|
|
24
|
+
gitPrService;
|
|
25
|
+
worktreeService;
|
|
26
|
+
constructor(featureRepo, gitPrService, worktreeService) {
|
|
27
|
+
this.featureRepo = featureRepo;
|
|
28
|
+
this.gitPrService = gitPrService;
|
|
29
|
+
this.worktreeService = worktreeService;
|
|
30
|
+
}
|
|
31
|
+
async execute(featureId) {
|
|
32
|
+
const feature = (await this.featureRepo.findById(featureId)) ??
|
|
33
|
+
(await this.featureRepo.findByIdPrefix(featureId));
|
|
34
|
+
if (!feature) {
|
|
35
|
+
throw new Error(`Feature not found: "${featureId}"`);
|
|
36
|
+
}
|
|
37
|
+
if (!feature.branch) {
|
|
38
|
+
throw new Error(`Feature "${featureId}" has no branch`);
|
|
39
|
+
}
|
|
40
|
+
const cwd = await this.resolveCwd(feature.repositoryPath, feature.branch);
|
|
41
|
+
const baseBranch = await this.gitPrService.getDefaultBranch(feature.repositoryPath);
|
|
42
|
+
// Sync the remote tracking ref so ahead/behind counts are current
|
|
43
|
+
await this.gitPrService.syncMain(cwd, baseBranch);
|
|
44
|
+
const { ahead, behind } = await this.gitPrService.getBranchSyncStatus(cwd, feature.branch, baseBranch);
|
|
45
|
+
return { ahead, behind, baseBranch };
|
|
46
|
+
}
|
|
47
|
+
async resolveCwd(repositoryPath, branch) {
|
|
48
|
+
const hasWorktree = await this.worktreeService.exists(repositoryPath, branch);
|
|
49
|
+
if (hasWorktree) {
|
|
50
|
+
return this.worktreeService.getWorktreePath(repositoryPath, branch);
|
|
51
|
+
}
|
|
52
|
+
return repositoryPath;
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
GetBranchSyncStatusUseCase = __decorate([
|
|
56
|
+
injectable(),
|
|
57
|
+
__param(0, inject('IFeatureRepository')),
|
|
58
|
+
__param(1, inject('IGitPrService')),
|
|
59
|
+
__param(2, inject('IWorktreeService')),
|
|
60
|
+
__metadata("design:paramtypes", [Object, Object, Object])
|
|
61
|
+
], GetBranchSyncStatusUseCase);
|
|
62
|
+
export { GetBranchSyncStatusUseCase };
|
package/dist/packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.d.ts
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rebase Feature on Main Use Case
|
|
3
|
+
*
|
|
4
|
+
* Rebases a feature branch onto the latest main branch with auto-sync
|
|
5
|
+
* and agent-powered conflict resolution.
|
|
6
|
+
*
|
|
7
|
+
* Flow: resolve feature → create standalone agent run → record phase timing →
|
|
8
|
+
* determine cwd (worktree or repo root) → sync main → rebase →
|
|
9
|
+
* on conflict, delegate to ConflictResolutionService → complete timing.
|
|
10
|
+
*/
|
|
11
|
+
import type { IFeatureRepository } from '../../ports/output/repositories/feature-repository.interface.js';
|
|
12
|
+
import type { IGitPrService } from '../../ports/output/services/git-pr-service.interface.js';
|
|
13
|
+
import type { IWorktreeService } from '../../ports/output/services/worktree-service.interface.js';
|
|
14
|
+
import type { IAgentRunRepository } from '../../ports/output/agents/agent-run-repository.interface.js';
|
|
15
|
+
import type { IPhaseTimingRepository } from '../../ports/output/agents/phase-timing-repository.interface.js';
|
|
16
|
+
import type { ConflictResolutionService } from '../../../infrastructure/services/agents/conflict-resolution/conflict-resolution.service.js';
|
|
17
|
+
export declare class RebaseFeatureOnMainUseCase {
|
|
18
|
+
private readonly featureRepo;
|
|
19
|
+
private readonly gitPrService;
|
|
20
|
+
private readonly worktreeService;
|
|
21
|
+
private readonly conflictResolutionService;
|
|
22
|
+
private readonly agentRunRepo;
|
|
23
|
+
private readonly phaseTimingRepo;
|
|
24
|
+
constructor(featureRepo: IFeatureRepository, gitPrService: IGitPrService, worktreeService: IWorktreeService, conflictResolutionService: ConflictResolutionService, agentRunRepo: IAgentRunRepository, phaseTimingRepo: IPhaseTimingRepository);
|
|
25
|
+
execute(featureId: string): Promise<void>;
|
|
26
|
+
private completeTiming;
|
|
27
|
+
/**
|
|
28
|
+
* Resolve the correct working directory for the feature.
|
|
29
|
+
* Uses the worktree path if a worktree exists for this branch,
|
|
30
|
+
* otherwise falls back to the repository root.
|
|
31
|
+
*/
|
|
32
|
+
private resolveCwd;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=rebase-feature-on-main.use-case.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rebase-feature-on-main.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AAC1G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yDAAyD,CAAC;AAK7F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAClG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6DAA6D,CAAC;AACvG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gEAAgE,CAAC;AAE7G,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4FAA4F,CAAC;AAE5I,qBACa,0BAA0B;IAGnC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IAE1C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAVf,WAAW,EAAE,kBAAkB,EAE/B,YAAY,EAAE,aAAa,EAE3B,eAAe,EAAE,gBAAgB,EAEjC,yBAAyB,EAAE,yBAAyB,EAEpD,YAAY,EAAE,mBAAmB,EAEjC,eAAe,EAAE,sBAAsB;IAGpD,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAuEjC,cAAc;IAwB5B;;;;OAIG;YACW,UAAU;CAOzB"}
|
package/dist/packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.js
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rebase Feature on Main Use Case
|
|
3
|
+
*
|
|
4
|
+
* Rebases a feature branch onto the latest main branch with auto-sync
|
|
5
|
+
* and agent-powered conflict resolution.
|
|
6
|
+
*
|
|
7
|
+
* Flow: resolve feature → create standalone agent run → record phase timing →
|
|
8
|
+
* determine cwd (worktree or repo root) → sync main → rebase →
|
|
9
|
+
* on conflict, delegate to ConflictResolutionService → complete timing.
|
|
10
|
+
*/
|
|
11
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
12
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
13
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
14
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
15
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
16
|
+
};
|
|
17
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
18
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
19
|
+
};
|
|
20
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
21
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
22
|
+
};
|
|
23
|
+
import { injectable, inject } from 'tsyringe';
|
|
24
|
+
import { randomUUID } from 'node:crypto';
|
|
25
|
+
import { GitPrError, GitPrErrorCode, } from '../../ports/output/services/git-pr-service.interface.js';
|
|
26
|
+
import { AgentRunStatus, AgentType } from '../../../domain/generated/output.js';
|
|
27
|
+
let RebaseFeatureOnMainUseCase = class RebaseFeatureOnMainUseCase {
|
|
28
|
+
featureRepo;
|
|
29
|
+
gitPrService;
|
|
30
|
+
worktreeService;
|
|
31
|
+
conflictResolutionService;
|
|
32
|
+
agentRunRepo;
|
|
33
|
+
phaseTimingRepo;
|
|
34
|
+
constructor(featureRepo, gitPrService, worktreeService, conflictResolutionService, agentRunRepo, phaseTimingRepo) {
|
|
35
|
+
this.featureRepo = featureRepo;
|
|
36
|
+
this.gitPrService = gitPrService;
|
|
37
|
+
this.worktreeService = worktreeService;
|
|
38
|
+
this.conflictResolutionService = conflictResolutionService;
|
|
39
|
+
this.agentRunRepo = agentRunRepo;
|
|
40
|
+
this.phaseTimingRepo = phaseTimingRepo;
|
|
41
|
+
}
|
|
42
|
+
async execute(featureId) {
|
|
43
|
+
// Resolve feature by exact ID or prefix
|
|
44
|
+
const feature = (await this.featureRepo.findById(featureId)) ??
|
|
45
|
+
(await this.featureRepo.findByIdPrefix(featureId));
|
|
46
|
+
if (!feature) {
|
|
47
|
+
throw new Error(`Feature not found: "${featureId}"`);
|
|
48
|
+
}
|
|
49
|
+
// Create standalone agent run + phase timing for activity timeline
|
|
50
|
+
const now = new Date().toISOString();
|
|
51
|
+
const agentRunId = randomUUID();
|
|
52
|
+
const phaseTimingId = randomUUID();
|
|
53
|
+
await this.agentRunRepo.create({
|
|
54
|
+
id: agentRunId,
|
|
55
|
+
agentType: AgentType.ClaudeCode,
|
|
56
|
+
agentName: 'rebase',
|
|
57
|
+
status: AgentRunStatus.running,
|
|
58
|
+
prompt: `Rebase ${feature.branch} on main`,
|
|
59
|
+
threadId: agentRunId,
|
|
60
|
+
startedAt: now,
|
|
61
|
+
featureId: feature.id,
|
|
62
|
+
repositoryPath: feature.repositoryPath,
|
|
63
|
+
createdAt: now,
|
|
64
|
+
updatedAt: now,
|
|
65
|
+
});
|
|
66
|
+
await this.phaseTimingRepo.save({
|
|
67
|
+
id: phaseTimingId,
|
|
68
|
+
agentRunId,
|
|
69
|
+
phase: 'rebase',
|
|
70
|
+
startedAt: now,
|
|
71
|
+
createdAt: now,
|
|
72
|
+
updatedAt: now,
|
|
73
|
+
});
|
|
74
|
+
const startMs = Date.now();
|
|
75
|
+
try {
|
|
76
|
+
// Determine working directory — worktree path if it exists, else repo root
|
|
77
|
+
const cwd = await this.resolveCwd(feature.repositoryPath, feature.branch);
|
|
78
|
+
const defaultBranch = await this.gitPrService.getDefaultBranch(feature.repositoryPath);
|
|
79
|
+
// Auto-sync main before rebasing (per spec decision)
|
|
80
|
+
await this.gitPrService.syncMain(cwd, defaultBranch);
|
|
81
|
+
// Attempt rebase
|
|
82
|
+
try {
|
|
83
|
+
await this.gitPrService.rebaseOnMain(cwd, feature.branch, defaultBranch);
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
if (error instanceof GitPrError && error.code === GitPrErrorCode.REBASE_CONFLICT) {
|
|
87
|
+
// Delegate to agent-powered conflict resolution
|
|
88
|
+
await this.conflictResolutionService.resolve(cwd, feature.branch, defaultBranch);
|
|
89
|
+
// Conflict resolution succeeded — complete timing as success
|
|
90
|
+
await this.completeTiming(agentRunId, phaseTimingId, startMs, 'success');
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
throw error;
|
|
94
|
+
}
|
|
95
|
+
// Rebase succeeded without conflicts
|
|
96
|
+
await this.completeTiming(agentRunId, phaseTimingId, startMs, 'success');
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
// Record failure in timing
|
|
100
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
101
|
+
await this.completeTiming(agentRunId, phaseTimingId, startMs, 'error', message);
|
|
102
|
+
throw error;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
async completeTiming(agentRunId, phaseTimingId, startMs, exitCode, errorMessage) {
|
|
106
|
+
const completedAt = new Date().toISOString();
|
|
107
|
+
const durationMs = Date.now() - startMs;
|
|
108
|
+
await this.phaseTimingRepo.update(phaseTimingId, {
|
|
109
|
+
completedAt,
|
|
110
|
+
durationMs: BigInt(durationMs),
|
|
111
|
+
exitCode,
|
|
112
|
+
...(errorMessage && { errorMessage }),
|
|
113
|
+
});
|
|
114
|
+
await this.agentRunRepo.updateStatus(agentRunId, exitCode === 'success' ? AgentRunStatus.completed : AgentRunStatus.failed, { completedAt, ...(errorMessage && { error: errorMessage }) });
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Resolve the correct working directory for the feature.
|
|
118
|
+
* Uses the worktree path if a worktree exists for this branch,
|
|
119
|
+
* otherwise falls back to the repository root.
|
|
120
|
+
*/
|
|
121
|
+
async resolveCwd(repositoryPath, branch) {
|
|
122
|
+
const hasWorktree = await this.worktreeService.exists(repositoryPath, branch);
|
|
123
|
+
if (hasWorktree) {
|
|
124
|
+
return this.worktreeService.getWorktreePath(repositoryPath, branch);
|
|
125
|
+
}
|
|
126
|
+
return repositoryPath;
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
RebaseFeatureOnMainUseCase = __decorate([
|
|
130
|
+
injectable(),
|
|
131
|
+
__param(0, inject('IFeatureRepository')),
|
|
132
|
+
__param(1, inject('IGitPrService')),
|
|
133
|
+
__param(2, inject('IWorktreeService')),
|
|
134
|
+
__param(3, inject('ConflictResolutionService')),
|
|
135
|
+
__param(4, inject('IAgentRunRepository')),
|
|
136
|
+
__param(5, inject('IPhaseTimingRepository')),
|
|
137
|
+
__metadata("design:paramtypes", [Object, Object, Object, Function, Object, Object])
|
|
138
|
+
], RebaseFeatureOnMainUseCase);
|
|
139
|
+
export { RebaseFeatureOnMainUseCase };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unarchive Feature Use Case
|
|
3
|
+
*
|
|
4
|
+
* Restores a feature from Archived to its previousLifecycle value,
|
|
5
|
+
* then clears previousLifecycle.
|
|
6
|
+
*
|
|
7
|
+
* Business Rules:
|
|
8
|
+
* - Only features in the Archived state can be unarchived
|
|
9
|
+
* - previousLifecycle must be non-null for restoration
|
|
10
|
+
* - The lifecycle is restored to the pre-archive state
|
|
11
|
+
* - previousLifecycle is cleared after restoration
|
|
12
|
+
*/
|
|
13
|
+
import type { Feature } from '../../../domain/generated/output.js';
|
|
14
|
+
import type { IFeatureRepository } from '../../ports/output/repositories/feature-repository.interface.js';
|
|
15
|
+
export declare class UnarchiveFeatureUseCase {
|
|
16
|
+
private readonly featureRepo;
|
|
17
|
+
constructor(featureRepo: IFeatureRepository);
|
|
18
|
+
execute(featureId: string): Promise<Feature>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=unarchive-feature.use-case.d.ts.map
|
package/dist/packages/core/src/application/use-cases/features/unarchive-feature.use-case.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unarchive-feature.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/features/unarchive-feature.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AAE1G,qBACa,uBAAuB;IACQ,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,kBAAkB;IAEpF,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAqCnD"}
|