@shepai/cli 1.135.2-pr438.f43bc1e → 1.135.2-pr440.e97f691
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/SdlcLifecycle.yaml +1 -0
- package/apis/json-schema/WorkflowConfig.yaml +0 -5
- 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 +0 -28
- 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/github-repository-service.interface.d.ts +0 -37
- package/dist/packages/core/src/application/ports/output/services/github-repository-service.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/services/github-repository-service.interface.js +0 -12
- package/dist/packages/core/src/application/ports/output/services/index.d.ts +3 -5
- package/dist/packages/core/src/application/ports/output/services/index.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/services/index.js +1 -2
- 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 +74 -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/domain/generated/output.d.ts +6 -68
- 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 +10 -4
- 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/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/services/external/github-repository.service.d.ts +1 -3
- package/dist/packages/core/src/infrastructure/services/external/github-repository.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/external/github-repository.service.js +1 -37
- package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts +1 -2
- 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 +0 -21
- 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/cli/index.js +0 -2
- 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 +6 -1
- 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/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/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 +22 -6
- 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/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 +43 -2
- 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-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/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 +12 -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 +1 -1
- package/web/.next/required-server-files.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +78 -48
- 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 +78 -48
- 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 +90 -60
- 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 +90 -60
- 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 +74 -44
- 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 +78 -48
- 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 +90 -60
- 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 +90 -60
- 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 +74 -44
- 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 +74 -44
- 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__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_b731076a.js +3 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_b731076a.js.map +1 -0
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_edb1ed93.js +3 -0
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_edb1ed93.js.map +1 -0
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_9b4d65a0.js +3 -0
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_9b4d65a0.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]__3ef34e4c._.js.map +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]__7894f27f._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7894f27f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__31bc28da._.js → [root-of-the-server]__78a7fcc9._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__90ce4b6d._.js.map → [root-of-the-server]__78a7fcc9._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__32ecbed9._.js → [root-of-the-server]__8fbe6424._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__31bc28da._.js.map → [root-of-the-server]__8fbe6424._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__90f9ae71._.js → [root-of-the-server]__960623da._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__90f9ae71._.js.map → [root-of-the-server]__960623da._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__96670392._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__96670392._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__9c45d070._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__9c45d070._.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]__90ce4b6d._.js → [root-of-the-server]__c3bd3892._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__32ecbed9._.js.map → [root-of-the-server]__c3bd3892._.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/{_7e29a7bc._.js → _4fce23fd._.js} +2 -2
- package/web/.next/server/chunks/ssr/_4fce23fd._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_7dca1882._.js +1 -1
- package/web/.next/server/chunks/ssr/_7dca1882._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_a9f57758._.js +1 -1
- package/web/.next/server/chunks/ssr/_b6960ca0._.js +4 -0
- package/web/.next/server/chunks/ssr/_b6960ca0._.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/_f18353a1._.js +3 -0
- package/web/.next/server/chunks/ssr/{_8b0c1045._.js.map → _f18353a1._.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_cfea7939._.js → src_presentation_web_5a474643._.js} +2 -2
- package/web/.next/server/chunks/ssr/{src_presentation_web_cfea7939._.js.map → src_presentation_web_5a474643._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_820d7c79._.js +5 -0
- package/web/.next/server/chunks/ssr/{src_presentation_web_8e7fe0d1._.js.map → src_presentation_web_820d7c79._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_005499f7.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_005499f7.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_a1a382f3._.js +5 -0
- package/web/.next/server/chunks/ssr/{src_presentation_web_b9023017._.js.map → src_presentation_web_a1a382f3._.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_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 +452 -296
- package/web/.next/static/chunks/09db7c74857d727e.js +1 -0
- package/web/.next/static/chunks/0f1221daf6a27f15.css +1 -0
- package/web/.next/static/chunks/{fe4aab39650fe1da.js → 14c5d3477ab30cbd.js} +1 -1
- package/web/.next/static/chunks/{13daed9124d5db9d.js → 16557147753ecd97.js} +2 -2
- package/web/.next/static/chunks/{d45958925d9b5068.js → 381674b7016bfe2d.js} +1 -1
- package/web/.next/static/chunks/{475a8dfc028d8ade.js → 3dbb95c2df37cd69.js} +1 -1
- package/web/.next/static/chunks/{3cf03a4faffa22e9.js → 42d4cfca94db8f3a.js} +1 -1
- package/web/.next/static/chunks/{e87e22afc1ecf600.js → 458c2a7ea153c3f0.js} +2 -2
- package/web/.next/static/chunks/{30f300c565f39570.js → 5e2a1042deae63bc.js} +1 -1
- package/web/.next/static/chunks/{2b853c80d6032a5b.js → 83fe7a19db594510.js} +1 -1
- package/web/.next/static/chunks/{9b5e512c27b112a5.js → 8be41bcbf3d0a5b2.js} +1 -1
- package/web/.next/static/chunks/{daf11c5cc3adbcbc.js → bd2735ffbb5a405f.js} +1 -1
- package/web/.next/static/chunks/d7317df625d1f4bc.js +1 -0
- package/apis/json-schema/DoctorDiagnosticReport.yaml +0 -24
- package/apis/json-schema/FailedRunSummary.yaml +0 -22
- package/apis/json-schema/SystemInfo.yaml +0 -22
- package/dist/packages/core/src/application/ports/output/services/github-issue-service.interface.d.ts +0 -57
- package/dist/packages/core/src/application/ports/output/services/github-issue-service.interface.d.ts.map +0 -1
- package/dist/packages/core/src/application/ports/output/services/github-issue-service.interface.js +0 -39
- package/dist/packages/core/src/application/use-cases/doctor/doctor-diagnose.use-case.d.ts +0 -53
- package/dist/packages/core/src/application/use-cases/doctor/doctor-diagnose.use-case.d.ts.map +0 -1
- package/dist/packages/core/src/application/use-cases/doctor/doctor-diagnose.use-case.js +0 -266
- package/dist/packages/core/src/infrastructure/services/external/github-issue-creator.service.d.ts +0 -17
- package/dist/packages/core/src/infrastructure/services/external/github-issue-creator.service.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/external/github-issue-creator.service.js +0 -69
- package/dist/src/presentation/cli/commands/doctor.command.d.ts +0 -20
- package/dist/src/presentation/cli/commands/doctor.command.d.ts.map +0 -1
- package/dist/src/presentation/cli/commands/doctor.command.js +0 -127
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4e741df2.js +0 -3
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4e741df2.js.map +0 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_026fdffa.js +0 -3
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_026fdffa.js.map +0 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_8b91e197.js +0 -3
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_8b91e197.js.map +0 -1
- package/web/.next/server/chunks/ssr/_77083321._.js +0 -4
- package/web/.next/server/chunks/ssr/_77083321._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_7e29a7bc._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_8b0c1045._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_8e7fe0d1._.js +0 -5
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_ca051134.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_ca051134.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_b9023017._.js +0 -5
- package/web/.next/static/chunks/0d539860f56e6468.js +0 -1
- package/web/.next/static/chunks/3e2d7d07926b05bf.css +0 -1
- package/web/.next/static/chunks/67b290f5a29737c1.js +0 -1
- /package/web/.next/static/{rYnuAm9xTEAUIz5Pqp9fP → lRiUQJLpOuDbBG06Veg7i}/_buildManifest.js +0 -0
- /package/web/.next/static/{rYnuAm9xTEAUIz5Pqp9fP → lRiUQJLpOuDbBG06Veg7i}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{rYnuAm9xTEAUIz5Pqp9fP → lRiUQJLpOuDbBG06Veg7i}/_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:
|
|
@@ -55,11 +55,6 @@ properties:
|
|
|
55
55
|
hideCiStatus:
|
|
56
56
|
type: boolean
|
|
57
57
|
description: "Hide CI status badges from UI (default: true)"
|
|
58
|
-
doctorMaxFixAttempts:
|
|
59
|
-
type: integer
|
|
60
|
-
minimum: -2147483648
|
|
61
|
-
maximum: 2147483647
|
|
62
|
-
description: "Maximum number of doctor fix attempts before giving up (default: 1)"
|
|
63
58
|
required:
|
|
64
59
|
- openPrOnImplementationComplete
|
|
65
60
|
- approvalGateDefaults
|
|
@@ -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
|
@@ -118,21 +118,6 @@ export interface PrStatusInfo {
|
|
|
118
118
|
/** Whether the PR can be merged (undefined if unknown, false = merge conflicts) */
|
|
119
119
|
mergeable?: boolean;
|
|
120
120
|
}
|
|
121
|
-
/**
|
|
122
|
-
* Arguments for creating a PR programmatically (without a pr.yaml file).
|
|
123
|
-
*/
|
|
124
|
-
export interface PrCreateArgs {
|
|
125
|
-
/** PR title */
|
|
126
|
-
title: string;
|
|
127
|
-
/** PR body (Markdown) */
|
|
128
|
-
body: string;
|
|
129
|
-
/** Labels to apply to the PR */
|
|
130
|
-
labels: string[];
|
|
131
|
-
/** Base branch to merge into (e.g. "main") */
|
|
132
|
-
base: string;
|
|
133
|
-
/** Target repository for cross-fork PRs (e.g. "shep-ai/cli"). Omit for same-repo PRs. */
|
|
134
|
-
repo?: string;
|
|
135
|
-
}
|
|
136
121
|
/**
|
|
137
122
|
* Merge strategy for pull requests.
|
|
138
123
|
*/
|
|
@@ -210,19 +195,6 @@ export interface IGitPrService {
|
|
|
210
195
|
* @throws GitPrError with GH_NOT_FOUND or AUTH_FAILURE code
|
|
211
196
|
*/
|
|
212
197
|
createPr(cwd: string, prYamlPath: string): Promise<PrCreateResult>;
|
|
213
|
-
/**
|
|
214
|
-
* Create a pull request from explicit arguments (no pr.yaml file needed).
|
|
215
|
-
*
|
|
216
|
-
* Useful for programmatic PR creation where the title, body, and labels
|
|
217
|
-
* are constructed in code rather than read from a YAML file. Supports
|
|
218
|
-
* cross-fork PRs via the optional `repo` field in args.
|
|
219
|
-
*
|
|
220
|
-
* @param cwd - Working directory path (must be inside the git repo)
|
|
221
|
-
* @param args - PR creation arguments (title, body, labels, base, optional repo)
|
|
222
|
-
* @returns URL and number of the created PR
|
|
223
|
-
* @throws GitPrError with GH_NOT_FOUND or AUTH_FAILURE code
|
|
224
|
-
*/
|
|
225
|
-
createPrFromArgs(cwd: string, args: PrCreateArgs): Promise<PrCreateResult>;
|
|
226
198
|
/**
|
|
227
199
|
* Merge a pull request immediately.
|
|
228
200
|
*
|
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;CAC9B;AAED;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;aAGjB,IAAI,EAAE,cAAc;aACpB,KAAK,CAAC,EAAE,KAAK;gBAF7B,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,cAAc,EACpB,KAAK,CAAC,EAAE,KAAK,YAAA;CAKhC;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,wBAAwB;IACxB,MAAM,EAAE,QAAQ,CAAC;IACjB,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,6DAA6D;IAC7D,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;IACtC,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB;IAClB,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;IACrD,0CAA0C;IAC1C,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,gBAAgB;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,KAAK,EAAE,QAAQ,CAAC;IAChB,8BAA8B;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,mFAAmF;IACnF,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,
|
|
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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"}
|
|
@@ -29,12 +29,6 @@ export declare class GitHubUrlParseError extends Error {
|
|
|
29
29
|
export declare class GitHubRepoListError extends Error {
|
|
30
30
|
constructor(message: string, cause?: Error);
|
|
31
31
|
}
|
|
32
|
-
/**
|
|
33
|
-
* Thrown when a `gh repo fork` operation fails.
|
|
34
|
-
*/
|
|
35
|
-
export declare class GitHubForkError extends Error {
|
|
36
|
-
constructor(message: string, cause?: Error);
|
|
37
|
-
}
|
|
38
32
|
/**
|
|
39
33
|
* A GitHub repository as returned by `gh repo list --json`.
|
|
40
34
|
*/
|
|
@@ -66,15 +60,6 @@ export interface CloneOptions {
|
|
|
66
60
|
/** Callback invoked with stderr chunks during clone for progress display */
|
|
67
61
|
onProgress?: (data: string) => void;
|
|
68
62
|
}
|
|
69
|
-
/**
|
|
70
|
-
* Result of forking a GitHub repository.
|
|
71
|
-
*/
|
|
72
|
-
export interface ForkResult {
|
|
73
|
-
/** Full owner/repo identifier of the fork (e.g. "username/cli") */
|
|
74
|
-
nameWithOwner: string;
|
|
75
|
-
/** Clone URL for the fork (e.g. "https://github.com/username/cli.git") */
|
|
76
|
-
cloneUrl: string;
|
|
77
|
-
}
|
|
78
63
|
/**
|
|
79
64
|
* Result of parsing a GitHub URL.
|
|
80
65
|
*/
|
|
@@ -129,27 +114,5 @@ export interface IGitHubRepositoryService {
|
|
|
129
114
|
* @throws {GitHubUrlParseError} if the URL does not match any supported format
|
|
130
115
|
*/
|
|
131
116
|
parseGitHubUrl(url: string): ParsedGitHubUrl;
|
|
132
|
-
/**
|
|
133
|
-
* Check whether the authenticated user has push access to a repository.
|
|
134
|
-
*
|
|
135
|
-
* Uses `gh api repos/{owner}/{repo} --jq '.permissions.push'` to detect
|
|
136
|
-
* access level. Returns false as the safe fallback on any error (network,
|
|
137
|
-
* rate limit, API change) per NFR-9.
|
|
138
|
-
*
|
|
139
|
-
* @param repoNameWithOwner - Full owner/repo identifier (e.g. "shep-ai/cli")
|
|
140
|
-
* @returns True if the user has push access, false otherwise (including on errors)
|
|
141
|
-
*/
|
|
142
|
-
checkPushAccess(repoNameWithOwner: string): Promise<boolean>;
|
|
143
|
-
/**
|
|
144
|
-
* Fork a GitHub repository into the authenticated user's account.
|
|
145
|
-
*
|
|
146
|
-
* Uses `gh repo fork` which is idempotent — if the user already has a fork,
|
|
147
|
-
* it detects the existing fork and returns it rather than failing.
|
|
148
|
-
*
|
|
149
|
-
* @param repoNameWithOwner - Full owner/repo identifier (e.g. "shep-ai/cli")
|
|
150
|
-
* @returns The fork's nameWithOwner and clone URL
|
|
151
|
-
* @throws {GitHubForkError} if the fork operation fails
|
|
152
|
-
*/
|
|
153
|
-
forkRepository(repoNameWithOwner: string): Promise<ForkResult>;
|
|
154
117
|
}
|
|
155
118
|
//# sourceMappingURL=github-repository-service.interface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github-repository-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/github-repository-service.interface.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAM3C;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAM3C;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAM3C;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAM3C;
|
|
1
|
+
{"version":3,"file":"github-repository-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/github-repository-service.interface.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAM3C;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAM3C;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAM3C;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAM3C;AAMD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,aAAa,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,SAAS,EAAE,OAAO,CAAC;IACnB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,4EAA4E;IAC5E,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,aAAa,EAAE,MAAM,CAAC;CACvB;AAMD;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;;OAIG;IACH,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3B;;;;;;;OAOG;IACH,eAAe,CACb,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;;OAMG;IACH,oBAAoB,CAAC,OAAO,CAAC,EAAE,2BAA2B,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAEnF;;;;;;;;;;;;OAYG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAC;CAC9C"}
|
|
@@ -56,15 +56,3 @@ export class GitHubRepoListError extends Error {
|
|
|
56
56
|
this.cause = cause;
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
|
-
/**
|
|
60
|
-
* Thrown when a `gh repo fork` operation fails.
|
|
61
|
-
*/
|
|
62
|
-
export class GitHubForkError extends Error {
|
|
63
|
-
constructor(message, cause) {
|
|
64
|
-
super(message);
|
|
65
|
-
this.name = 'GitHubForkError';
|
|
66
|
-
Object.setPrototypeOf(this, new.target.prototype);
|
|
67
|
-
if (cause)
|
|
68
|
-
this.cause = cause;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
@@ -12,13 +12,11 @@ export type { IWorktreeService, WorktreeInfo } from './worktree-service.interfac
|
|
|
12
12
|
export { WorktreeError, WorktreeErrorCode } from './worktree-service.interface.js';
|
|
13
13
|
export type { IToolInstallerService, AvailableTerminalEntry } from './tool-installer.service.js';
|
|
14
14
|
export type { INotificationService } from './notification-service.interface.js';
|
|
15
|
-
export type { IGitPrService, CiStatus, CiStatusResult, DiffSummary, MergeStrategy,
|
|
15
|
+
export type { IGitPrService, CiStatus, CiStatusResult, DiffSummary, MergeStrategy, PrCreateResult, } from './git-pr-service.interface.js';
|
|
16
16
|
export { GitPrError, GitPrErrorCode } from './git-pr-service.interface.js';
|
|
17
17
|
export type { IIdeLauncherService, LaunchIdeInput, LaunchIdeResult, LaunchIdeSuccess, LaunchIdeFailed, } from './ide-launcher-service.interface.js';
|
|
18
18
|
export type { IDaemonService, DaemonState } from './daemon-service.interface.js';
|
|
19
19
|
export type { IDeploymentService, DeploymentStatus } from './deployment-service.interface.js';
|
|
20
|
-
export type { IGitHubRepositoryService, GitHubRepo, ListUserRepositoriesOptions, CloneOptions, ParsedGitHubUrl,
|
|
21
|
-
export { GitHubAuthError, GitHubCloneError, GitHubUrlParseError, GitHubRepoListError,
|
|
22
|
-
export type { IGitHubIssueService, GitHubIssueCreateResult, } from './github-issue-service.interface.js';
|
|
23
|
-
export { GitHubIssueError, GitHubIssueErrorCode } from './github-issue-service.interface.js';
|
|
20
|
+
export type { IGitHubRepositoryService, GitHubRepo, ListUserRepositoriesOptions, CloneOptions, ParsedGitHubUrl, } from './github-repository-service.interface.js';
|
|
21
|
+
export { GitHubAuthError, GitHubCloneError, GitHubUrlParseError, GitHubRepoListError, } from './github-repository-service.interface.js';
|
|
24
22
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAClG,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,uCAAuC,CAAC;AAC/C,YAAY,EACV,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACnF,YAAY,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACjG,YAAY,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAChF,YAAY,EACV,aAAa,EACb,QAAQ,EACR,cAAc,EACd,WAAW,EACX,aAAa,EACb,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAClG,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,uCAAuC,CAAC;AAC/C,YAAY,EACV,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACnF,YAAY,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACjG,YAAY,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAChF,YAAY,EACV,aAAa,EACb,QAAQ,EACR,cAAc,EACd,WAAW,EACX,aAAa,EACb,cAAc,GACf,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC3E,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,eAAe,GAChB,MAAM,qCAAqC,CAAC;AAC7C,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjF,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC9F,YAAY,EACV,wBAAwB,EACxB,UAAU,EACV,2BAA2B,EAC3B,YAAY,EACZ,eAAe,GAChB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,0CAA0C,CAAC"}
|
|
@@ -6,5 +6,4 @@
|
|
|
6
6
|
export { IssueFetcherError, IssueNotFoundError, IssueAuthenticationError, IssueServiceUnavailableError, } from './external-issue-fetcher.interface.js';
|
|
7
7
|
export { WorktreeError, WorktreeErrorCode } from './worktree-service.interface.js';
|
|
8
8
|
export { GitPrError, GitPrErrorCode } from './git-pr-service.interface.js';
|
|
9
|
-
export { GitHubAuthError, GitHubCloneError, GitHubUrlParseError, GitHubRepoListError,
|
|
10
|
-
export { GitHubIssueError, GitHubIssueErrorCode } from './github-issue-service.interface.js';
|
|
9
|
+
export { GitHubAuthError, GitHubCloneError, GitHubUrlParseError, GitHubRepoListError, } from './github-repository-service.interface.js';
|
|
@@ -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
|
+
* - Only features in Maintain, Pending, or Blocked states can be archived
|
|
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;AAS1G,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,74 @@
|
|
|
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
|
+
* - Only features in Maintain, Pending, or Blocked states can be archived
|
|
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 eligible for archiving. */
|
|
28
|
+
const ARCHIVABLE_STATES = new Set([
|
|
29
|
+
SdlcLifecycle.Maintain,
|
|
30
|
+
SdlcLifecycle.Pending,
|
|
31
|
+
SdlcLifecycle.Blocked,
|
|
32
|
+
]);
|
|
33
|
+
let ArchiveFeatureUseCase = class ArchiveFeatureUseCase {
|
|
34
|
+
featureRepo;
|
|
35
|
+
constructor(featureRepo) {
|
|
36
|
+
this.featureRepo = featureRepo;
|
|
37
|
+
}
|
|
38
|
+
async execute(featureId) {
|
|
39
|
+
// 1. Find feature (exact or prefix match)
|
|
40
|
+
const feature = (await this.featureRepo.findById(featureId)) ??
|
|
41
|
+
(await this.featureRepo.findByIdPrefix(featureId));
|
|
42
|
+
if (!feature) {
|
|
43
|
+
throw new Error(`Feature not found: "${featureId}"`);
|
|
44
|
+
}
|
|
45
|
+
// 2. Validate lifecycle is archivable
|
|
46
|
+
if (!ARCHIVABLE_STATES.has(feature.lifecycle)) {
|
|
47
|
+
throw new Error(`Cannot archive feature "${feature.name}": lifecycle is ${feature.lifecycle}. ` +
|
|
48
|
+
`Only features in Maintain, Pending, or Blocked states can be archived.`);
|
|
49
|
+
}
|
|
50
|
+
// 3. Check for active (non-archived, non-deleted) children
|
|
51
|
+
const children = await this.featureRepo.findByParentId(feature.id);
|
|
52
|
+
const activeChildren = children.filter((c) => c.lifecycle !== SdlcLifecycle.Archived && !c.deletedAt);
|
|
53
|
+
if (activeChildren.length > 0) {
|
|
54
|
+
const names = activeChildren.map((c) => c.name).join(', ');
|
|
55
|
+
throw new Error(`Cannot archive feature "${feature.name}": it has active child features (${names}). ` +
|
|
56
|
+
`Archive or delete child features first.`);
|
|
57
|
+
}
|
|
58
|
+
// 4. Store current lifecycle and transition to Archived
|
|
59
|
+
const updatedFeature = {
|
|
60
|
+
...feature,
|
|
61
|
+
previousLifecycle: feature.lifecycle,
|
|
62
|
+
lifecycle: SdlcLifecycle.Archived,
|
|
63
|
+
updatedAt: new Date(),
|
|
64
|
+
};
|
|
65
|
+
await this.featureRepo.update(updatedFeature);
|
|
66
|
+
return updatedFeature;
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
ArchiveFeatureUseCase = __decorate([
|
|
70
|
+
injectable(),
|
|
71
|
+
__param(0, inject('IFeatureRepository')),
|
|
72
|
+
__metadata("design:paramtypes", [Object])
|
|
73
|
+
], ArchiveFeatureUseCase);
|
|
74
|
+
export { ArchiveFeatureUseCase };
|
|
@@ -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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
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
|
+
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
|
+
let UnarchiveFeatureUseCase = class UnarchiveFeatureUseCase {
|
|
28
|
+
featureRepo;
|
|
29
|
+
constructor(featureRepo) {
|
|
30
|
+
this.featureRepo = featureRepo;
|
|
31
|
+
}
|
|
32
|
+
async execute(featureId) {
|
|
33
|
+
// 1. Find feature (exact or prefix match)
|
|
34
|
+
const feature = (await this.featureRepo.findById(featureId)) ??
|
|
35
|
+
(await this.featureRepo.findByIdPrefix(featureId));
|
|
36
|
+
if (!feature) {
|
|
37
|
+
throw new Error(`Feature not found: "${featureId}"`);
|
|
38
|
+
}
|
|
39
|
+
// 2. Validate lifecycle is Archived
|
|
40
|
+
if (feature.lifecycle !== SdlcLifecycle.Archived) {
|
|
41
|
+
throw new Error(`Cannot unarchive feature "${feature.name}": lifecycle is ${feature.lifecycle}. ` +
|
|
42
|
+
`Only archived features can be unarchived.`);
|
|
43
|
+
}
|
|
44
|
+
// 3. Validate previousLifecycle exists
|
|
45
|
+
if (!feature.previousLifecycle) {
|
|
46
|
+
throw new Error(`Cannot unarchive feature "${feature.name}": no previous lifecycle state recorded. ` +
|
|
47
|
+
`The feature may have been archived before this field was introduced.`);
|
|
48
|
+
}
|
|
49
|
+
// 4. Restore lifecycle and clear previousLifecycle
|
|
50
|
+
const updatedFeature = {
|
|
51
|
+
...feature,
|
|
52
|
+
lifecycle: feature.previousLifecycle,
|
|
53
|
+
previousLifecycle: undefined,
|
|
54
|
+
updatedAt: new Date(),
|
|
55
|
+
};
|
|
56
|
+
await this.featureRepo.update(updatedFeature);
|
|
57
|
+
return updatedFeature;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
UnarchiveFeatureUseCase = __decorate([
|
|
61
|
+
injectable(),
|
|
62
|
+
__param(0, inject('IFeatureRepository')),
|
|
63
|
+
__metadata("design:paramtypes", [Object])
|
|
64
|
+
], UnarchiveFeatureUseCase);
|
|
65
|
+
export { UnarchiveFeatureUseCase };
|
|
@@ -417,10 +417,6 @@ export type WorkflowConfig = {
|
|
|
417
417
|
* Hide CI status badges from UI (default: true)
|
|
418
418
|
*/
|
|
419
419
|
hideCiStatus?: boolean;
|
|
420
|
-
/**
|
|
421
|
-
* Maximum number of doctor fix attempts before giving up (default: 1)
|
|
422
|
-
*/
|
|
423
|
-
doctorMaxFixAttempts?: number;
|
|
424
420
|
};
|
|
425
421
|
export declare enum AgentType {
|
|
426
422
|
ClaudeCode = "claude-code",
|
|
@@ -743,7 +739,8 @@ export declare enum SdlcLifecycle {
|
|
|
743
739
|
Maintain = "Maintain",
|
|
744
740
|
Blocked = "Blocked",
|
|
745
741
|
Pending = "Pending",
|
|
746
|
-
Deleting = "Deleting"
|
|
742
|
+
Deleting = "Deleting",
|
|
743
|
+
Archived = "Archived"
|
|
747
744
|
}
|
|
748
745
|
/**
|
|
749
746
|
* Configuration for human-in-the-loop approval gates
|
|
@@ -943,6 +940,10 @@ export type Feature = SoftDeletableEntity & {
|
|
|
943
940
|
* Parent feature ID for dependency tracking (optional)
|
|
944
941
|
*/
|
|
945
942
|
parentId?: UUID;
|
|
943
|
+
/**
|
|
944
|
+
* Lifecycle state prior to archiving, used to restore on unarchive (only set when lifecycle is Archived)
|
|
945
|
+
*/
|
|
946
|
+
previousLifecycle?: SdlcLifecycle;
|
|
946
947
|
/**
|
|
947
948
|
* Files attached by the user when creating or messaging this feature
|
|
948
949
|
*/
|
|
@@ -1610,69 +1611,6 @@ export type Evidence = {
|
|
|
1610
1611
|
*/
|
|
1611
1612
|
taskRef?: string;
|
|
1612
1613
|
};
|
|
1613
|
-
/**
|
|
1614
|
-
* Summary of a failed agent run for diagnostic reporting
|
|
1615
|
-
*/
|
|
1616
|
-
export type FailedRunSummary = {
|
|
1617
|
-
/**
|
|
1618
|
-
* Type of agent that failed (e.g. claude-code, gemini-cli)
|
|
1619
|
-
*/
|
|
1620
|
-
agentType: string;
|
|
1621
|
-
/**
|
|
1622
|
-
* Name/identifier of the agent run
|
|
1623
|
-
*/
|
|
1624
|
-
agentName: string;
|
|
1625
|
-
/**
|
|
1626
|
-
* Error message from the failed run
|
|
1627
|
-
*/
|
|
1628
|
-
error: string;
|
|
1629
|
-
/**
|
|
1630
|
-
* ISO 8601 timestamp when the failure occurred
|
|
1631
|
-
*/
|
|
1632
|
-
timestamp: string;
|
|
1633
|
-
};
|
|
1634
|
-
/**
|
|
1635
|
-
* System environment information for diagnostic reporting
|
|
1636
|
-
*/
|
|
1637
|
-
export type SystemInfo = {
|
|
1638
|
-
/**
|
|
1639
|
-
* Node.js version (e.g. v20.11.0)
|
|
1640
|
-
*/
|
|
1641
|
-
nodeVersion: string;
|
|
1642
|
-
/**
|
|
1643
|
-
* Operating system platform (e.g. darwin, linux, win32)
|
|
1644
|
-
*/
|
|
1645
|
-
platform: string;
|
|
1646
|
-
/**
|
|
1647
|
-
* CPU architecture (e.g. x64, arm64)
|
|
1648
|
-
*/
|
|
1649
|
-
arch: string;
|
|
1650
|
-
/**
|
|
1651
|
-
* gh CLI version string
|
|
1652
|
-
*/
|
|
1653
|
-
ghVersion: string;
|
|
1654
|
-
};
|
|
1655
|
-
/**
|
|
1656
|
-
* Structured diagnostic report collected by shep doctor for issue creation
|
|
1657
|
-
*/
|
|
1658
|
-
export type DoctorDiagnosticReport = {
|
|
1659
|
-
/**
|
|
1660
|
-
* User-provided description of the problem
|
|
1661
|
-
*/
|
|
1662
|
-
userDescription: string;
|
|
1663
|
-
/**
|
|
1664
|
-
* Summaries of recent failed agent runs
|
|
1665
|
-
*/
|
|
1666
|
-
failedRunSummaries: FailedRunSummary[];
|
|
1667
|
-
/**
|
|
1668
|
-
* System environment information
|
|
1669
|
-
*/
|
|
1670
|
-
systemInfo: SystemInfo;
|
|
1671
|
-
/**
|
|
1672
|
-
* Current shep CLI version
|
|
1673
|
-
*/
|
|
1674
|
-
cliVersion: string;
|
|
1675
|
-
};
|
|
1676
1614
|
export declare enum AgentStatus {
|
|
1677
1615
|
Idle = "Idle",
|
|
1678
1616
|
Running = "Running",
|