@shepai/cli 1.169.0-pr524.54c51f4 → 1.169.1-pr509.3238903
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 +10 -0
- package/apis/json-schema/SkillInjectionConfig.yaml +17 -0
- package/apis/json-schema/SkillSource.yaml +21 -0
- package/apis/json-schema/SkillSourceType.yaml +7 -0
- package/apis/json-schema/WorkflowConfig.yaml +3 -0
- package/dist/packages/core/src/application/ports/output/services/index.d.ts +1 -0
- package/dist/packages/core/src/application/ports/output/services/index.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/services/skill-injector.interface.d.ts +39 -0
- package/dist/packages/core/src/application/ports/output/services/skill-injector.interface.d.ts.map +1 -0
- package/dist/packages/core/src/application/ports/output/services/skill-injector.interface.js +8 -0
- package/dist/packages/core/src/application/use-cases/features/adopt-branch.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/adopt-branch.use-case.js +1 -0
- package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts +3 -1
- package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +22 -3
- package/dist/packages/core/src/application/use-cases/features/create/types.d.ts +2 -0
- package/dist/packages/core/src/application/use-cases/features/create/types.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/upgrade/upgrade-cli.use-case.d.ts +0 -1
- package/dist/packages/core/src/application/use-cases/upgrade/upgrade-cli.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/upgrade/upgrade-cli.use-case.js +1 -37
- 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 +55 -1
- package/dist/packages/core/src/domain/generated/output.d.ts +50 -0
- package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
- package/dist/packages/core/src/domain/generated/output.js +5 -0
- package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/di/container.js +2 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts +2 -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 +2 -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 +27 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-skill-injection-config.d.ts +15 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-skill-injection-config.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-skill-injection-config.js +23 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/054-add-injected-skills-to-features.d.ts +11 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/054-add-injected-skills-to-features.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/054-add-injected-skills-to-features.js +19 -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 +8 -4
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.js +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.js +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/implement.node.js +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.js +1 -1
- package/dist/packages/core/src/infrastructure/services/skill-injector.service.d.ts +26 -0
- package/dist/packages/core/src/infrastructure/services/skill-injector.service.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/skill-injector.service.js +201 -0
- package/dist/src/presentation/cli/commands/feat/new.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/new.command.js +3 -0
- package/dist/src/presentation/cli/commands/upgrade.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/upgrade.command.js +2 -45
- package/dist/src/presentation/web/app/actions/add-injected-skill.d.ts +7 -0
- package/dist/src/presentation/web/app/actions/add-injected-skill.d.ts.map +1 -0
- package/dist/src/presentation/web/app/actions/add-injected-skill.js +34 -0
- package/dist/src/presentation/web/app/actions/create-feature.d.ts +2 -0
- package/dist/src/presentation/web/app/actions/create-feature.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/create-feature.js +3 -1
- package/dist/src/presentation/web/app/actions/get-workflow-defaults.d.ts +1 -0
- package/dist/src/presentation/web/app/actions/get-workflow-defaults.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/get-workflow-defaults.js +1 -0
- package/dist/src/presentation/web/app/actions/remove-injected-skill.d.ts +6 -0
- package/dist/src/presentation/web/app/actions/remove-injected-skill.d.ts.map +1 -0
- package/dist/src/presentation/web/app/actions/remove-injected-skill.js +35 -0
- package/dist/src/presentation/web/app/build-feature-node-data.d.ts.map +1 -1
- package/dist/src/presentation/web/app/build-feature-node-data.js +2 -0
- package/dist/src/presentation/web/app/skills/page.d.ts.map +1 -1
- package/dist/src/presentation/web/app/skills/page.js +6 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts +2 -0
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +6 -2
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.js +1 -0
- 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 +10 -4
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.d.ts +2 -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 +12 -0
- package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts +4 -0
- package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/skills/add-skill-dialog.d.ts +10 -0
- package/dist/src/presentation/web/components/features/skills/add-skill-dialog.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/skills/add-skill-dialog.js +56 -0
- package/dist/src/presentation/web/components/features/skills/add-skill-dialog.stories.d.ts +16 -0
- package/dist/src/presentation/web/components/features/skills/add-skill-dialog.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/skills/add-skill-dialog.stories.js +66 -0
- package/dist/src/presentation/web/components/features/skills/auto-injected-skills-section.d.ts +8 -0
- package/dist/src/presentation/web/components/features/skills/auto-injected-skills-section.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/skills/auto-injected-skills-section.js +42 -0
- package/dist/src/presentation/web/components/features/skills/auto-injected-skills-section.stories.d.ts +16 -0
- package/dist/src/presentation/web/components/features/skills/auto-injected-skills-section.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/skills/auto-injected-skills-section.stories.js +69 -0
- package/dist/src/presentation/web/components/features/skills/skills-page-client.d.ts +3 -1
- package/dist/src/presentation/web/components/features/skills/skills-page-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/skills/skills-page-client.js +5 -3
- package/dist/src/presentation/web/components/features/skills/skills-page-client.stories.d.ts +1 -0
- package/dist/src/presentation/web/components/features/skills/skills-page-client.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/skills/skills-page-client.stories.js +27 -0
- package/dist/translations/ar/cli.json +2 -2
- package/dist/translations/ar/web.json +15 -11
- package/dist/translations/de/cli.json +2 -2
- package/dist/translations/de/web.json +35 -17
- package/dist/translations/en/cli.json +2 -2
- package/dist/translations/en/web.json +4 -0
- package/dist/translations/es/cli.json +2 -2
- package/dist/translations/es/web.json +16 -12
- package/dist/translations/fr/cli.json +2 -2
- package/dist/translations/fr/web.json +16 -12
- package/dist/translations/he/cli.json +2 -2
- package/dist/translations/he/web.json +16 -12
- package/dist/translations/pt/cli.json +2 -2
- package/dist/translations/pt/web.json +16 -12
- package/dist/translations/ru/cli.json +2 -2
- package/dist/translations/ru/web.json +16 -12
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -1
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/build-manifest.json +5 -5
- package/web/.next/fallback-build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +2 -2
- package/web/.next/required-server-files.json +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/build-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page/build-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/@drawer/chat/page.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page/build-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/build-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +38 -38
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/build-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +38 -38
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/build-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/build-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/chat/page/build-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/chat/page.js +1 -1
- package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/create/page/build-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/create/page.js +1 -1
- package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/build-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +38 -38
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/build-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +38 -38
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/page/build-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/page.js +1 -1
- package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/build-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/build-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error/page/build-manifest.json +3 -3
- package/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page/build-manifest.json +3 -3
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/_not-found/page.js +1 -1
- package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
- package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
- package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
- package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -1
- package/web/.next/server/app/features/page/build-manifest.json +3 -3
- package/web/.next/server/app/features/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/features/page.js +1 -1
- package/web/.next/server/app/features/page.js.nft.json +1 -1
- package/web/.next/server/app/features/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/settings/page/build-manifest.json +3 -3
- package/web/.next/server/app/settings/page/server-reference-manifest.json +9 -9
- package/web/.next/server/app/settings/page.js +3 -3
- package/web/.next/server/app/settings/page.js.nft.json +1 -1
- package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills/page/build-manifest.json +3 -3
- package/web/.next/server/app/skills/page/server-reference-manifest.json +52 -22
- package/web/.next/server/app/skills/page.js +3 -2
- package/web/.next/server/app/skills/page.js.nft.json +1 -1
- package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/tools/page/build-manifest.json +3 -3
- package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
- package/web/.next/server/app/tools/page.js +1 -1
- package/web/.next/server/app/tools/page.js.nft.json +1 -1
- package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/version/page/build-manifest.json +3 -3
- package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/version/page.js +1 -1
- package/web/.next/server/app/version/page.js.nft.json +1 -1
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__c78383b1._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__c78383b1._.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/{_0727935d._.js → 403f9_next_8a33ddee._.js} +2 -2
- package/web/.next/server/chunks/ssr/403f9_next_8a33ddee._.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/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +3 -3
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__e88da4ee._.js → [root-of-the-server]__1cd4327c._.js} +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__4fb81977._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__4fb81977._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7dcd0917._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7dcd0917._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__7ffd3598._.js → [root-of-the-server]__92ffd5ee._.js} +3 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__92ffd5ee._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b020c17d._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b020c17d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ba7f5873._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ba7f5873._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c5e09f6f._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c5e09f6f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fa525872._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fa525872._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_02e01240._.js +1 -1
- package/web/.next/server/chunks/ssr/_02e01240._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_05c23ad9._.js +1 -1
- package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_10a571b8._.js +3 -0
- package/web/.next/server/chunks/ssr/{_b0791eff._.js.map → _10a571b8._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{_312a7379._.js → _11cbed18._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_312a7379._.js.map → _11cbed18._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_16eb4fec._.js +1 -1
- package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_18886033._.js +1 -1
- package/web/.next/server/chunks/ssr/_18886033._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_22e00a14._.js +1 -1
- package/web/.next/server/chunks/ssr/_22e00a14._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_45496654._.js +3 -0
- package/web/.next/server/chunks/ssr/_45496654._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_4cbb7f95._.js +1 -1
- package/web/.next/server/chunks/ssr/_4cbb7f95._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_5119a3df._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
- package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_6f35fb9a._.js +3 -0
- package/web/.next/server/chunks/ssr/_6f35fb9a._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_a5a5901d._.js +1 -1
- package/web/.next/server/chunks/ssr/_a5a5901d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_a963dd3c._.js +3 -0
- package/web/.next/server/chunks/ssr/_a963dd3c._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_ad09f271._.js +1 -1
- package/web/.next/server/chunks/ssr/_ad09f271._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_c3f595c6._.js +1 -1
- package/web/.next/server/chunks/ssr/_c3f595c6._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_84019a97._.js → _d55b34d1._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_84019a97._.js.map → _d55b34d1._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_df737cce._.js +3 -0
- package/web/.next/server/chunks/ssr/_df737cce._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_e3f14907._.js +9 -0
- package/web/.next/server/chunks/ssr/_e3f14907._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_ea9e1556._.js +1 -1
- package/web/.next/server/chunks/ssr/_ea9e1556._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_f1ba9be6._.js +2 -2
- package/web/.next/server/chunks/ssr/_f1ba9be6._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_f33cd07e._.js +2 -2
- package/web/.next/server/chunks/ssr/_f33cd07e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_f8b45233._.js +1 -1
- package/web/.next/server/chunks/ssr/_f8b45233._.js.map +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
- package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +1 -1
- package/web/.next/server/chunks/ssr/node_modules__pnpm_1300ae39._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules__pnpm_1300ae39._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.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/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_db9fa0c2._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_db9fa0c2._.js.map +1 -1
- package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js +1 -1
- package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js.map +1 -1
- package/web/.next/server/middleware-build-manifest.js +3 -3
- 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 +89 -59
- package/web/.next/static/chunks/008a238e3827134a.js +1 -0
- package/web/.next/static/chunks/185e4f36cb6efb24.js +1 -0
- package/web/.next/static/chunks/{6a81a9b4c8a91437.js → 205b4659bdfc9b72.js} +1 -1
- package/web/.next/static/chunks/24ef0e36f68901cd.js +1 -0
- package/web/.next/static/chunks/74729cbad964be13.js +1 -0
- package/web/.next/static/chunks/{1c2a7ce17665c0a1.js → 783b3ac450c8199b.js} +2 -2
- package/web/.next/static/chunks/{12dbd44d29de81e6.js → 853459c5497533d4.js} +1 -1
- package/web/.next/static/chunks/86b3891618d9e165.js +1 -0
- package/web/.next/static/chunks/8cedbf904e6bca33.js +3 -0
- package/web/.next/static/chunks/{7b6f79edae9172eb.js → 9ba70e315d9b5dd6.js} +1 -1
- package/web/.next/static/chunks/{c9dabe754cf4c63a.js → a4668ef7bb93c465.js} +1 -1
- package/web/.next/static/chunks/b0ed1ec320a0e51a.js +1 -0
- package/web/.next/static/chunks/b14085e99b88e7f7.css +1 -0
- package/web/.next/static/chunks/b65e555419a0c664.js +1 -0
- package/web/.next/static/chunks/c669da1a499f4683.js +7 -0
- package/web/.next/static/chunks/{452a2aefb87c7ea4.js → cb638c28c942e3ca.js} +1 -1
- package/web/.next/static/chunks/cc5fe8d1d9e1e519.js +5 -0
- package/web/.next/static/chunks/cf1c386f350d1f1b.js +5 -0
- package/web/.next/static/chunks/{7d68eecb6c9fb328.js → d52622eb492eadb1.js} +1 -1
- package/web/.next/static/chunks/{20568580dfe8b7f5.js → f1a5cda6353fe321.js} +1 -1
- package/web/.next/static/chunks/{252ef5d9424f1962.js → f844d62e4159c965.js} +1 -1
- package/web/.next/static/chunks/{turbopack-57bb0674e2cd1d31.js → turbopack-b38a68b1b1c41a87.js} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__20a36a42._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__20a36a42._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7ffd3598._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e88da4ee._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_0727935d._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_0dc06d07._.js +0 -3
- package/web/.next/server/chunks/ssr/_0dc06d07._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_682fc996._.js +0 -9
- package/web/.next/server/chunks/ssr/_682fc996._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_6892e3b9._.js +0 -3
- package/web/.next/server/chunks/ssr/_6892e3b9._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_a1068852._.js +0 -3
- package/web/.next/server/chunks/ssr/_a1068852._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_b0791eff._.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules__pnpm_12a7ede0._.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules__pnpm_12a7ede0._.js.map +0 -1
- package/web/.next/static/chunks/20f7cc98a013b11c.js +0 -1
- package/web/.next/static/chunks/253b4cb30306c280.js +0 -1
- package/web/.next/static/chunks/2dc3e1fe820e11dc.js +0 -5
- package/web/.next/static/chunks/3421835c6fe6fdc9.js +0 -1
- package/web/.next/static/chunks/4cec255f2754e5ec.js +0 -1
- package/web/.next/static/chunks/5b7275374d2696b3.css +0 -1
- package/web/.next/static/chunks/647140fe96a7c88a.js +0 -1
- package/web/.next/static/chunks/6d6f70ff5151b8cb.js +0 -7
- package/web/.next/static/chunks/982aef195c118996.js +0 -1
- package/web/.next/static/chunks/dc134f3f58cdf850.js +0 -5
- package/web/.next/static/chunks/ef458d654df0eb67.js +0 -1
- package/web/.next/static/chunks/f677f0187ac826b8.js +0 -3
- /package/web/.next/static/{Q7nBER7xocT91xgzMb11R → w_8Pssf6--RSvCF6kGM86}/_buildManifest.js +0 -0
- /package/web/.next/static/{Q7nBER7xocT91xgzMb11R → w_8Pssf6--RSvCF6kGM86}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{Q7nBER7xocT91xgzMb11R → w_8Pssf6--RSvCF6kGM86}/_ssgManifest.js +0 -0
|
@@ -39,6 +39,11 @@ properties:
|
|
|
39
39
|
agentRunId:
|
|
40
40
|
type: string
|
|
41
41
|
description: Associated agent run ID for process tracking (optional)
|
|
42
|
+
injectedSkills:
|
|
43
|
+
type: array
|
|
44
|
+
items:
|
|
45
|
+
type: string
|
|
46
|
+
description: Skills that were injected into this feature's worktree during creation
|
|
42
47
|
specPath:
|
|
43
48
|
type: string
|
|
44
49
|
description: Absolute path to the feature spec directory inside the worktree
|
|
@@ -73,6 +78,10 @@ properties:
|
|
|
73
78
|
type: boolean
|
|
74
79
|
default: false
|
|
75
80
|
description: "Enable evidence collection after implementation (default: false)"
|
|
81
|
+
injectSkills:
|
|
82
|
+
type: boolean
|
|
83
|
+
default: false
|
|
84
|
+
description: "Inject curated skills into the feature worktree (default: false)"
|
|
76
85
|
commitEvidence:
|
|
77
86
|
type: boolean
|
|
78
87
|
default: false
|
|
@@ -114,6 +123,7 @@ required:
|
|
|
114
123
|
- commitSpecs
|
|
115
124
|
- ciWatchEnabled
|
|
116
125
|
- enableEvidence
|
|
126
|
+
- injectSkills
|
|
117
127
|
- commitEvidence
|
|
118
128
|
- approvalGates
|
|
119
129
|
allOf:
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
$schema: https://json-schema.org/draft/2020-12/schema
|
|
2
|
+
$id: SkillInjectionConfig.yaml
|
|
3
|
+
type: object
|
|
4
|
+
properties:
|
|
5
|
+
enabled:
|
|
6
|
+
type: boolean
|
|
7
|
+
default: false
|
|
8
|
+
description: "Whether skill injection is enabled (default: false, opt-in)"
|
|
9
|
+
skills:
|
|
10
|
+
type: array
|
|
11
|
+
items:
|
|
12
|
+
$ref: SkillSource.yaml
|
|
13
|
+
description: List of skills to inject into feature worktrees
|
|
14
|
+
required:
|
|
15
|
+
- enabled
|
|
16
|
+
- skills
|
|
17
|
+
description: Skill injection configuration for feature worktrees
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
$schema: https://json-schema.org/draft/2020-12/schema
|
|
2
|
+
$id: SkillSource.yaml
|
|
3
|
+
type: object
|
|
4
|
+
properties:
|
|
5
|
+
name:
|
|
6
|
+
type: string
|
|
7
|
+
description: Unique skill directory name (e.g. 'architecture-reviewer')
|
|
8
|
+
type:
|
|
9
|
+
$ref: SkillSourceType.yaml
|
|
10
|
+
description: How this skill is provisioned (local copy or remote install)
|
|
11
|
+
source:
|
|
12
|
+
type: string
|
|
13
|
+
description: Source path (local) or npm package/URL (remote)
|
|
14
|
+
remoteSkillName:
|
|
15
|
+
type: string
|
|
16
|
+
description: Remote skill name passed to --skill flag (remote type only)
|
|
17
|
+
required:
|
|
18
|
+
- name
|
|
19
|
+
- type
|
|
20
|
+
- source
|
|
21
|
+
description: A skill source for injection into feature worktrees
|
|
@@ -64,6 +64,9 @@ properties:
|
|
|
64
64
|
minimum: -2147483648
|
|
65
65
|
maximum: 2147483647
|
|
66
66
|
description: "Minutes after completion before auto-archiving a feature (default: 10, 0 = disabled)"
|
|
67
|
+
skillInjection:
|
|
68
|
+
$ref: SkillInjectionConfig.yaml
|
|
69
|
+
description: Skill injection configuration (optional, disabled by default)
|
|
67
70
|
required:
|
|
68
71
|
- openPrOnImplementationComplete
|
|
69
72
|
- approvalGateDefaults
|
|
@@ -20,4 +20,5 @@ export type { IDeploymentService, DeploymentStatus } from './deployment-service.
|
|
|
20
20
|
export type { IGitHubRepositoryService, GitHubRepo, GitHubOrganization, ListUserRepositoriesOptions, CloneOptions, ParsedGitHubUrl, } from './github-repository-service.interface.js';
|
|
21
21
|
export { GitHubAuthError, GitHubCloneError, GitHubUrlParseError, GitHubRepoListError, } from './github-repository-service.interface.js';
|
|
22
22
|
export type { IInteractiveSessionService, StreamChunk, UnsubscribeFn, ChatState, } from './interactive-session-service.interface.js';
|
|
23
|
+
export type { ISkillInjectorService, SkillInjectionResult } from './skill-injector.interface.js';
|
|
23
24
|
//# 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,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,kBAAkB,EAClB,2BAA2B,EAC3B,YAAY,EACZ,eAAe,GAChB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,0CAA0C,CAAC;AAClD,YAAY,EACV,0BAA0B,EAC1B,WAAW,EACX,aAAa,EACb,SAAS,GACV,MAAM,4CAA4C,CAAC"}
|
|
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,kBAAkB,EAClB,2BAA2B,EAC3B,YAAY,EACZ,eAAe,GAChB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,0CAA0C,CAAC;AAClD,YAAY,EACV,0BAA0B,EAC1B,WAAW,EACX,aAAa,EACb,SAAS,GACV,MAAM,4CAA4C,CAAC;AACpD,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC"}
|
package/dist/packages/core/src/application/ports/output/services/skill-injector.interface.d.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill Injector Service Interface
|
|
3
|
+
*
|
|
4
|
+
* Output port for injecting curated agent skills into worktrees
|
|
5
|
+
* during feature creation. Handles local skill copying, remote skill
|
|
6
|
+
* installation via npx, idempotency checks, and .gitignore management.
|
|
7
|
+
*/
|
|
8
|
+
import type { SkillInjectionConfig } from '../../../../domain/generated/output.js';
|
|
9
|
+
export interface SkillInjectionResult {
|
|
10
|
+
/** Names of skills that were successfully injected */
|
|
11
|
+
injected: string[];
|
|
12
|
+
/** Names of skills that were already present and skipped */
|
|
13
|
+
skipped: string[];
|
|
14
|
+
/** Skills that failed to inject, with error details */
|
|
15
|
+
failed: {
|
|
16
|
+
name: string;
|
|
17
|
+
error: string;
|
|
18
|
+
}[];
|
|
19
|
+
}
|
|
20
|
+
export interface ISkillInjectorService {
|
|
21
|
+
/**
|
|
22
|
+
* Inject curated skills into a worktree's .claude/skills/ directory.
|
|
23
|
+
*
|
|
24
|
+
* For each skill in the config:
|
|
25
|
+
* - Local skills are deep-copied from the source path
|
|
26
|
+
* - Remote skills are installed via `npx skills add`
|
|
27
|
+
* - Skills already present (SKILL.md exists) are skipped
|
|
28
|
+
* - Newly injected skills are added to .gitignore (unless already tracked in git)
|
|
29
|
+
*
|
|
30
|
+
* Individual skill failures are captured in the result (not thrown).
|
|
31
|
+
*
|
|
32
|
+
* @param worktreePath - Absolute path to the worktree root
|
|
33
|
+
* @param config - Skill injection configuration from settings
|
|
34
|
+
* @param repoRoot - Absolute path to the main repository root (for resolving local skill sources)
|
|
35
|
+
* @returns Counts of injected, skipped, and failed skills
|
|
36
|
+
*/
|
|
37
|
+
inject(worktreePath: string, config: SkillInjectionConfig, repoRoot?: string): Promise<SkillInjectionResult>;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=skill-injector.interface.d.ts.map
|
package/dist/packages/core/src/application/ports/output/services/skill-injector.interface.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-injector.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/skill-injector.interface.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAEnF,MAAM,WAAW,oBAAoB;IACnC,sDAAsD;IACtD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,uDAAuD;IACvD,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,qBAAqB;IACpC;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CACJ,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,oBAAoB,CAAC,CAAC;CAClC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill Injector Service Interface
|
|
3
|
+
*
|
|
4
|
+
* Output port for injecting curated agent skills into worktrees
|
|
5
|
+
* during feature creation. Handles local skill copying, remote skill
|
|
6
|
+
* installation via npx, idempotency checks, and .gitignore management.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
package/dist/packages/core/src/application/use-cases/features/adopt-branch.use-case.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adopt-branch.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/features/adopt-branch.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAe,MAAM,qCAAqC,CAAC;AAEhF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AAC1G,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oEAAoE,CAAC;AAChH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAClG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yDAAyD,CAAC;AAG7F,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;CAClB;AAKD,qBACa,kBAAkB;IAG3B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,YAAY;gBANZ,WAAW,EAAE,kBAAkB,EAE/B,cAAc,EAAE,qBAAqB,EAErC,eAAe,EAAE,gBAAgB,EAEjC,YAAY,EAAE,aAAa;IAGxC,OAAO,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"adopt-branch.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/features/adopt-branch.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAe,MAAM,qCAAqC,CAAC;AAEhF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AAC1G,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oEAAoE,CAAC;AAChH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAClG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yDAAyD,CAAC;AAG7F,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;CAClB;AAKD,qBACa,kBAAkB;IAG3B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,YAAY;gBANZ,WAAW,EAAE,kBAAkB,EAE/B,cAAc,EAAE,qBAAqB,EAErC,eAAe,EAAE,gBAAgB,EAEjC,YAAY,EAAE,aAAa;IAGxC,OAAO,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA+FlE;;;;OAIG;YACW,gBAAgB;IAiB9B;;;;OAIG;YACW,iBAAiB;IA4B/B;;;OAGG;YACW,iBAAiB;CAuBhC"}
|
package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts
CHANGED
|
@@ -24,6 +24,7 @@ import type { ISpecInitializerService } from '../../../ports/output/services/spe
|
|
|
24
24
|
import type { IRepositoryRepository } from '../../../ports/output/repositories/repository-repository.interface.js';
|
|
25
25
|
import type { IGitPrService } from '../../../ports/output/services/git-pr-service.interface.js';
|
|
26
26
|
import type { IAgentValidator } from '../../../ports/output/agents/agent-validator.interface.js';
|
|
27
|
+
import type { ISkillInjectorService } from '../../../ports/output/services/skill-injector.interface.js';
|
|
27
28
|
import { AttachmentStorageService } from '../../../../infrastructure/services/attachment-storage.service.js';
|
|
28
29
|
import { MetadataGenerator } from './metadata-generator.js';
|
|
29
30
|
import { SlugResolver } from './slug-resolver.js';
|
|
@@ -40,7 +41,8 @@ export declare class CreateFeatureUseCase {
|
|
|
40
41
|
private readonly gitPrService;
|
|
41
42
|
private readonly attachmentStorage;
|
|
42
43
|
private readonly agentValidator;
|
|
43
|
-
|
|
44
|
+
private readonly skillInjector;
|
|
45
|
+
constructor(featureRepo: IFeatureRepository, worktreeService: IWorktreeService, agentProcess: IFeatureAgentProcessService, runRepository: IAgentRunRepository, specInitializer: ISpecInitializerService, metadataGenerator: MetadataGenerator, slugResolver: SlugResolver, repositoryRepo: IRepositoryRepository, gitPrService: IGitPrService, attachmentStorage: AttachmentStorageService, agentValidator: IAgentValidator, skillInjector: ISkillInjectorService);
|
|
44
46
|
/**
|
|
45
47
|
* Full synchronous execution: creates record, initializes worktree/spec, spawns agent.
|
|
46
48
|
* Used by the CLI which shows a spinner and needs everything done before returning.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-feature.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/use-cases/features/create/create-feature.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AAMtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oEAAoE,CAAC;AAC7G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8DAA8D,CAAC;AACrG,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iEAAiE,CAAC;AACnH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gEAAgE,CAAC;AAC1G,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8DAA8D,CAAC;AAC5G,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uEAAuE,CAAC;AACnH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4DAA4D,CAAC;AAChG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2DAA2D,CAAC;
|
|
1
|
+
{"version":3,"file":"create-feature.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/use-cases/features/create/create-feature.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AAMtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oEAAoE,CAAC;AAC7G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8DAA8D,CAAC;AACrG,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iEAAiE,CAAC;AACnH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gEAAgE,CAAC;AAC1G,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8DAA8D,CAAC;AAC5G,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uEAAuE,CAAC;AACnH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4DAA4D,CAAC;AAChG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2DAA2D,CAAC;AACjG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4DAA4D,CAAC;AAIxG,OAAO,EAAE,wBAAwB,EAAE,MAAM,mEAAmE,CAAC;AAC7G,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE9F,qBACa,oBAAoB;IAG7B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAElC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAElC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAtBb,WAAW,EAAE,kBAAkB,EAE/B,eAAe,EAAE,gBAAgB,EAEjC,YAAY,EAAE,2BAA2B,EAEzC,aAAa,EAAE,mBAAmB,EAElC,eAAe,EAAE,uBAAuB,EAExC,iBAAiB,EAAE,iBAAiB,EAEpC,YAAY,EAAE,YAAY,EAE1B,cAAc,EAAE,qBAAqB,EAErC,YAAY,EAAE,aAAa,EAE3B,iBAAiB,EAAE,wBAAwB,EAE3C,cAAc,EAAE,eAAe,EAE/B,aAAa,EAAE,qBAAqB;IAGvD;;;OAGG;IACG,OAAO,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAMtE;;;;OAIG;IACG,YAAY,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAyI1E;;;OAGG;IACG,kBAAkB,CACtB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,kBAAkB,EACzB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,OAAO,CAAA;KAAE,CAAC;CAsK1D"}
|
package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js
CHANGED
|
@@ -31,6 +31,7 @@ import { injectable, inject } from 'tsyringe';
|
|
|
31
31
|
import { randomUUID } from 'node:crypto';
|
|
32
32
|
import { SdlcLifecycle, AgentRunStatus, } from '../../../../domain/generated/output.js';
|
|
33
33
|
import { getSettings } from '../../../../infrastructure/services/settings.service.js';
|
|
34
|
+
import { createDefaultSettings } from '../../../../domain/factories/settings-defaults.factory.js';
|
|
34
35
|
import { POST_IMPLEMENTATION } from '../../../../domain/lifecycle-gates.js';
|
|
35
36
|
import { AttachmentStorageService } from '../../../../infrastructure/services/attachment-storage.service.js';
|
|
36
37
|
import { MetadataGenerator } from './metadata-generator.js';
|
|
@@ -47,7 +48,8 @@ let CreateFeatureUseCase = class CreateFeatureUseCase {
|
|
|
47
48
|
gitPrService;
|
|
48
49
|
attachmentStorage;
|
|
49
50
|
agentValidator;
|
|
50
|
-
|
|
51
|
+
skillInjector;
|
|
52
|
+
constructor(featureRepo, worktreeService, agentProcess, runRepository, specInitializer, metadataGenerator, slugResolver, repositoryRepo, gitPrService, attachmentStorage, agentValidator, skillInjector) {
|
|
51
53
|
this.featureRepo = featureRepo;
|
|
52
54
|
this.worktreeService = worktreeService;
|
|
53
55
|
this.agentProcess = agentProcess;
|
|
@@ -59,6 +61,7 @@ let CreateFeatureUseCase = class CreateFeatureUseCase {
|
|
|
59
61
|
this.gitPrService = gitPrService;
|
|
60
62
|
this.attachmentStorage = attachmentStorage;
|
|
61
63
|
this.agentValidator = agentValidator;
|
|
64
|
+
this.skillInjector = skillInjector;
|
|
62
65
|
}
|
|
63
66
|
/**
|
|
64
67
|
* Full synchronous execution: creates record, initializes worktree/spec, spawns agent.
|
|
@@ -157,6 +160,7 @@ let CreateFeatureUseCase = class CreateFeatureUseCase {
|
|
|
157
160
|
commitSpecs: input.commitSpecs ?? true,
|
|
158
161
|
ciWatchEnabled: input.ciWatchEnabled ?? true,
|
|
159
162
|
enableEvidence: input.enableEvidence ?? false,
|
|
163
|
+
injectSkills: input.injectSkills ?? false,
|
|
160
164
|
commitEvidence: input.commitEvidence ?? false,
|
|
161
165
|
approvalGates: input.approvalGates ?? {
|
|
162
166
|
allowPrd: false,
|
|
@@ -255,6 +259,20 @@ let CreateFeatureUseCase = class CreateFeatureUseCase {
|
|
|
255
259
|
// Attachment storage failure should not block feature creation
|
|
256
260
|
}
|
|
257
261
|
}
|
|
262
|
+
// Inject curated skills into the worktree (opt-in, guarded by settings or CLI flag)
|
|
263
|
+
const settings = getSettings();
|
|
264
|
+
const shouldInject = input.injectSkills ?? settings.workflow.skillInjection?.enabled ?? false;
|
|
265
|
+
let injectedSkillNames;
|
|
266
|
+
const skillConfig = settings.workflow.skillInjection ?? createDefaultSettings().workflow.skillInjection;
|
|
267
|
+
if (shouldInject && skillConfig.skills?.length) {
|
|
268
|
+
try {
|
|
269
|
+
const result = await this.skillInjector.inject(worktreePath, skillConfig, effectiveRepoPath);
|
|
270
|
+
injectedSkillNames = [...result.injected, ...result.skipped];
|
|
271
|
+
}
|
|
272
|
+
catch {
|
|
273
|
+
// Skill injection failure must not block feature creation (NFR-3)
|
|
274
|
+
}
|
|
275
|
+
}
|
|
258
276
|
// Update feature record with refined metadata, branch, specPath, and attachments
|
|
259
277
|
const updatedFeature = {
|
|
260
278
|
...feature,
|
|
@@ -264,6 +282,7 @@ let CreateFeatureUseCase = class CreateFeatureUseCase {
|
|
|
264
282
|
branch,
|
|
265
283
|
specPath: specDir,
|
|
266
284
|
...(committedAttachments?.length ? { attachments: committedAttachments } : {}),
|
|
285
|
+
...(injectedSkillNames?.length ? { injectedSkills: injectedSkillNames } : {}),
|
|
267
286
|
updatedAt: new Date(),
|
|
268
287
|
};
|
|
269
288
|
await this.featureRepo.update(updatedFeature);
|
|
@@ -273,7 +292,6 @@ let CreateFeatureUseCase = class CreateFeatureUseCase {
|
|
|
273
292
|
// a background worker — prevents the feature from getting stuck
|
|
274
293
|
// with a silent failure in the detached worker process.
|
|
275
294
|
// Skip validation when using mock executor (E2E tests, CI without real agents).
|
|
276
|
-
const settings = getSettings();
|
|
277
295
|
const effectiveAgentType = input.agentType ?? settings.agent.type;
|
|
278
296
|
const isMockExecutor = process.env.SHEP_MOCK_EXECUTOR === '1';
|
|
279
297
|
const validation = isMockExecutor
|
|
@@ -326,7 +344,8 @@ CreateFeatureUseCase = __decorate([
|
|
|
326
344
|
__param(8, inject('IGitPrService')),
|
|
327
345
|
__param(9, inject(AttachmentStorageService)),
|
|
328
346
|
__param(10, inject('IAgentValidator')),
|
|
347
|
+
__param(11, inject('ISkillInjectorService')),
|
|
329
348
|
__metadata("design:paramtypes", [Object, Object, Object, Object, Object, MetadataGenerator,
|
|
330
|
-
SlugResolver, Object, Object, AttachmentStorageService, Object])
|
|
349
|
+
SlugResolver, Object, Object, AttachmentStorageService, Object, Object])
|
|
331
350
|
], CreateFeatureUseCase);
|
|
332
351
|
export { CreateFeatureUseCase };
|
|
@@ -37,6 +37,8 @@ export interface CreateFeatureInput {
|
|
|
37
37
|
attachmentPaths?: string[];
|
|
38
38
|
/** Sync the default branch from remote before creating the feature branch (default: true). */
|
|
39
39
|
rebaseBeforeBranch?: boolean;
|
|
40
|
+
/** Inject curated skills into the worktree (overrides settings.workflow.skillInjection.enabled). */
|
|
41
|
+
injectSkills?: boolean;
|
|
40
42
|
}
|
|
41
43
|
export interface CreateFeatureResult {
|
|
42
44
|
feature: Feature;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/use-cases/features/create/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AAEjG,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0EAA0E;IAC1E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uFAAuF;IACvF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,wEAAwE;IACxE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,uEAAuE;IACvE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4FAA4F;IAC5F,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,8FAA8F;IAC9F,kBAAkB,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/use-cases/features/create/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AAEjG,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0EAA0E;IAC1E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uFAAuF;IACvF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,wEAAwE;IACxE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,uEAAuE;IACvE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4FAA4F;IAC5F,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,8FAA8F;IAC9F,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,oGAAoG;IACpG,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,8EAA8E;AAC9E,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,yEAAyE;IACzE,WAAW,EAAE,OAAO,CAAC;CACtB"}
|
|
@@ -24,7 +24,6 @@ export declare class UpgradeCliUseCase {
|
|
|
24
24
|
constructor(versionService: IVersionService, daemonService: IDaemonService);
|
|
25
25
|
execute(onOutput?: (data: string) => void): Promise<UpgradeResult>;
|
|
26
26
|
private getLatestVersion;
|
|
27
|
-
private preDownloadPackage;
|
|
28
27
|
/**
|
|
29
28
|
* Schedule a daemon self-restart after upgrade.
|
|
30
29
|
* Reads the current daemon port, spawns a new daemon process with the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade-cli.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/upgrade/upgrade-cli.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0DAA0D,CAAC;AAChG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yDAAyD,CAAC;AAE9F,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,GAAG,UAAU,GAAG,OAAO,CAAC;IAC5C,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;
|
|
1
|
+
{"version":3,"file":"upgrade-cli.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/upgrade/upgrade-cli.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0DAA0D,CAAC;AAChG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yDAAyD,CAAC;AAE9F,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,GAAG,UAAU,GAAG,OAAO,CAAC;IAC5C,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAOD,qBACa,iBAAiB;IAG1B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAFb,cAAc,EAAE,eAAe,EAE/B,aAAa,EAAE,cAAc;IAG1C,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC;IAkCxE,OAAO,CAAC,gBAAgB;IA6CxB;;;;OAIG;IACG,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B5C,OAAO,CAAC,aAAa;CAuBtB"}
|
|
@@ -25,7 +25,6 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
25
25
|
import { injectable, inject } from 'tsyringe';
|
|
26
26
|
import { spawn } from 'node:child_process';
|
|
27
27
|
const VERSION_CHECK_TIMEOUT_MS = 10_000;
|
|
28
|
-
const NPM_CACHE_ADD_TIMEOUT_MS = 120_000;
|
|
29
28
|
/** Delay (ms) before the current process exits to allow the SSE response to flush. */
|
|
30
29
|
const SELF_RESTART_DELAY_MS = 1_000;
|
|
31
30
|
let UpgradeCliUseCase = class UpgradeCliUseCase {
|
|
@@ -44,14 +43,8 @@ let UpgradeCliUseCase = class UpgradeCliUseCase {
|
|
|
44
43
|
onOutput?.(`Already up to date (v${currentVersion})\n`);
|
|
45
44
|
return { status: 'up-to-date', currentVersion, latestVersion };
|
|
46
45
|
}
|
|
47
|
-
// 3.
|
|
46
|
+
// 3. Run upgrade
|
|
48
47
|
const target = latestVersion ? `v${latestVersion}` : 'latest';
|
|
49
|
-
onOutput?.(`Downloading @shepai/cli@latest...\n`);
|
|
50
|
-
const cached = await this.preDownloadPackage();
|
|
51
|
-
if (!cached) {
|
|
52
|
-
onOutput?.('Pre-download did not complete — proceeding with install...\n');
|
|
53
|
-
}
|
|
54
|
-
// 4. Run install (fast if cached)
|
|
55
48
|
onOutput?.(`Upgrading from v${currentVersion} to ${target}...\n`);
|
|
56
49
|
try {
|
|
57
50
|
const exitCode = await this.runNpmInstall(onOutput);
|
|
@@ -111,35 +104,6 @@ let UpgradeCliUseCase = class UpgradeCliUseCase {
|
|
|
111
104
|
});
|
|
112
105
|
});
|
|
113
106
|
}
|
|
114
|
-
preDownloadPackage() {
|
|
115
|
-
return new Promise((resolve) => {
|
|
116
|
-
let settled = false;
|
|
117
|
-
const child = spawn('npm', ['cache', 'add', '@shepai/cli@latest'], {
|
|
118
|
-
stdio: ['ignore', 'ignore', 'pipe'],
|
|
119
|
-
});
|
|
120
|
-
const timeout = setTimeout(() => {
|
|
121
|
-
if (!settled) {
|
|
122
|
-
settled = true;
|
|
123
|
-
child.kill();
|
|
124
|
-
resolve(false);
|
|
125
|
-
}
|
|
126
|
-
}, NPM_CACHE_ADD_TIMEOUT_MS);
|
|
127
|
-
child.on('close', (code) => {
|
|
128
|
-
if (!settled) {
|
|
129
|
-
settled = true;
|
|
130
|
-
clearTimeout(timeout);
|
|
131
|
-
resolve(code === 0);
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
|
-
child.on('error', () => {
|
|
135
|
-
if (!settled) {
|
|
136
|
-
settled = true;
|
|
137
|
-
clearTimeout(timeout);
|
|
138
|
-
resolve(false);
|
|
139
|
-
}
|
|
140
|
-
});
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
107
|
/**
|
|
144
108
|
* Schedule a daemon self-restart after upgrade.
|
|
145
109
|
* Reads the current daemon port, spawns a new daemon process with the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-defaults.factory.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/domain/factories/settings-defaults.factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,QAAQ,
|
|
1
|
+
{"version":3,"file":"settings-defaults.factory.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/domain/factories/settings-defaults.factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,QAAQ,EAWT,MAAM,qBAAqB,CAAC;AAmD7B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,qBAAqB,IAAI,QAAQ,CA8IhD"}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* - Auto-update enabled, log level set to info
|
|
12
12
|
* - Unique IDs and timestamps generated for each instance
|
|
13
13
|
*/
|
|
14
|
-
import { AgentType, AgentAuthMethod, EditorType, TerminalType } from '../generated/output.js';
|
|
14
|
+
import { AgentType, AgentAuthMethod, EditorType, SkillSourceType, TerminalType, } from '../generated/output.js';
|
|
15
15
|
/**
|
|
16
16
|
* Default AI model for all SDLC agents.
|
|
17
17
|
* Provides balanced performance and cost for all workflow stages.
|
|
@@ -112,6 +112,59 @@ export function createDefaultSettings() {
|
|
|
112
112
|
allowMerge: false,
|
|
113
113
|
pushOnImplementationComplete: false,
|
|
114
114
|
};
|
|
115
|
+
const skillInjection = {
|
|
116
|
+
enabled: false,
|
|
117
|
+
skills: [
|
|
118
|
+
{
|
|
119
|
+
name: 'architecture-reviewer',
|
|
120
|
+
type: SkillSourceType.Remote,
|
|
121
|
+
source: 'shep-ai/shep',
|
|
122
|
+
remoteSkillName: 'architecture-reviewer',
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
name: 'cross-validate-artifacts',
|
|
126
|
+
type: SkillSourceType.Remote,
|
|
127
|
+
source: 'shep-ai/shep',
|
|
128
|
+
remoteSkillName: 'cross-validate-artifacts',
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
name: 'mermaid-diagrams',
|
|
132
|
+
type: SkillSourceType.Remote,
|
|
133
|
+
source: 'shep-ai/shep',
|
|
134
|
+
remoteSkillName: 'mermaid-diagrams',
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
name: 'react-flow',
|
|
138
|
+
type: SkillSourceType.Remote,
|
|
139
|
+
source: 'shep-ai/shep',
|
|
140
|
+
remoteSkillName: 'react-flow',
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
name: 'shadcn-ui',
|
|
144
|
+
type: SkillSourceType.Remote,
|
|
145
|
+
source: 'shep-ai/shep',
|
|
146
|
+
remoteSkillName: 'shadcn-ui',
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
name: 'tsp-model',
|
|
150
|
+
type: SkillSourceType.Remote,
|
|
151
|
+
source: 'shep-ai/shep',
|
|
152
|
+
remoteSkillName: 'tsp-model',
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
name: 'vercel-react-best-practices',
|
|
156
|
+
type: SkillSourceType.Remote,
|
|
157
|
+
source: 'shep-ai/shep',
|
|
158
|
+
remoteSkillName: 'vercel-react-best-practices',
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
name: 'frontend-design',
|
|
162
|
+
type: SkillSourceType.Remote,
|
|
163
|
+
source: 'anthropics/claude-code',
|
|
164
|
+
remoteSkillName: 'frontend-design',
|
|
165
|
+
},
|
|
166
|
+
],
|
|
167
|
+
};
|
|
115
168
|
const workflow = {
|
|
116
169
|
openPrOnImplementationComplete: false,
|
|
117
170
|
approvalGateDefaults,
|
|
@@ -120,6 +173,7 @@ export function createDefaultSettings() {
|
|
|
120
173
|
commitEvidence: false,
|
|
121
174
|
defaultFastMode: true,
|
|
122
175
|
autoArchiveDelayMinutes: 10,
|
|
176
|
+
skillInjection,
|
|
123
177
|
};
|
|
124
178
|
const featureFlags = {
|
|
125
179
|
skills: false,
|
|
@@ -379,6 +379,44 @@ export type AnalyzeRepoTimeouts = {
|
|
|
379
379
|
*/
|
|
380
380
|
analyzeMs?: number;
|
|
381
381
|
};
|
|
382
|
+
export declare enum SkillSourceType {
|
|
383
|
+
Local = "local",
|
|
384
|
+
Remote = "remote"
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* A skill source for injection into feature worktrees
|
|
388
|
+
*/
|
|
389
|
+
export type SkillSource = {
|
|
390
|
+
/**
|
|
391
|
+
* Unique skill directory name (e.g. 'architecture-reviewer')
|
|
392
|
+
*/
|
|
393
|
+
name: string;
|
|
394
|
+
/**
|
|
395
|
+
* How this skill is provisioned (local copy or remote install)
|
|
396
|
+
*/
|
|
397
|
+
type: SkillSourceType;
|
|
398
|
+
/**
|
|
399
|
+
* Source path (local) or npm package/URL (remote)
|
|
400
|
+
*/
|
|
401
|
+
source: string;
|
|
402
|
+
/**
|
|
403
|
+
* Remote skill name passed to --skill flag (remote type only)
|
|
404
|
+
*/
|
|
405
|
+
remoteSkillName?: string;
|
|
406
|
+
};
|
|
407
|
+
/**
|
|
408
|
+
* Skill injection configuration for feature worktrees
|
|
409
|
+
*/
|
|
410
|
+
export type SkillInjectionConfig = {
|
|
411
|
+
/**
|
|
412
|
+
* Whether skill injection is enabled (default: false, opt-in)
|
|
413
|
+
*/
|
|
414
|
+
enabled: boolean;
|
|
415
|
+
/**
|
|
416
|
+
* List of skills to inject into feature worktrees
|
|
417
|
+
*/
|
|
418
|
+
skills: SkillSource[];
|
|
419
|
+
};
|
|
382
420
|
/**
|
|
383
421
|
* Global workflow configuration defaults
|
|
384
422
|
*/
|
|
@@ -443,6 +481,10 @@ export type WorkflowConfig = {
|
|
|
443
481
|
* Minutes after completion before auto-archiving a feature (default: 10, 0 = disabled)
|
|
444
482
|
*/
|
|
445
483
|
autoArchiveDelayMinutes?: number;
|
|
484
|
+
/**
|
|
485
|
+
* Skill injection configuration (optional, disabled by default)
|
|
486
|
+
*/
|
|
487
|
+
skillInjection?: SkillInjectionConfig;
|
|
446
488
|
};
|
|
447
489
|
export declare enum AgentType {
|
|
448
490
|
ClaudeCode = "claude-code",
|
|
@@ -990,6 +1032,10 @@ export type Feature = SoftDeletableEntity & {
|
|
|
990
1032
|
* Associated agent run ID for process tracking (optional)
|
|
991
1033
|
*/
|
|
992
1034
|
agentRunId?: string;
|
|
1035
|
+
/**
|
|
1036
|
+
* Skills that were injected into this feature's worktree during creation
|
|
1037
|
+
*/
|
|
1038
|
+
injectedSkills?: string[];
|
|
993
1039
|
/**
|
|
994
1040
|
* Absolute path to the feature spec directory inside the worktree
|
|
995
1041
|
*/
|
|
@@ -1026,6 +1072,10 @@ export type Feature = SoftDeletableEntity & {
|
|
|
1026
1072
|
* Enable evidence collection after implementation (default: false)
|
|
1027
1073
|
*/
|
|
1028
1074
|
enableEvidence: boolean;
|
|
1075
|
+
/**
|
|
1076
|
+
* Inject curated skills into the feature worktree (default: false)
|
|
1077
|
+
*/
|
|
1078
|
+
injectSkills: boolean;
|
|
1029
1079
|
/**
|
|
1030
1080
|
* Commit evidence to PR (default: false, requires enableEvidence)
|
|
1031
1081
|
*/
|