@shepai/cli 1.62.0 → 1.64.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/packages/core/src/application/ports/output/agents/agent-executor-factory.interface.d.ts +18 -0
- package/dist/packages/core/src/application/ports/output/agents/agent-executor-factory.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/agents/index.d.ts +1 -1
- package/dist/packages/core/src/application/ports/output/agents/index.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-factory.service.d.ts +2 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-factory.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-factory.service.js +7 -0
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/mock-executor-factory.service.d.ts +2 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/mock-executor-factory.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/mock-executor-factory.service.js +3 -0
- package/dist/packages/core/src/infrastructure/services/filesystem/shep-directory.service.d.ts +7 -0
- package/dist/packages/core/src/infrastructure/services/filesystem/shep-directory.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/filesystem/shep-directory.service.js +9 -0
- package/dist/packages/core/src/infrastructure/services/git/worktree.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/git/worktree.service.js +18 -4
- package/dist/packages/core/src/infrastructure/services/pr-sync/pr-sync-watcher.service.js +1 -1
- package/dist/src/presentation/cli/commands/daemon/start-daemon.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/daemon/start-daemon.js +24 -15
- package/dist/src/presentation/cli/commands/status.command.d.ts +7 -0
- package/dist/src/presentation/cli/commands/status.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/status.command.js +167 -3
- package/dist/src/presentation/web/components/common/base-drawer/base-drawer.d.ts +17 -0
- package/dist/src/presentation/web/components/common/base-drawer/base-drawer.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/base-drawer/base-drawer.js +23 -0
- package/dist/src/presentation/web/components/common/base-drawer/base-drawer.stories.d.ts +22 -0
- package/dist/src/presentation/web/components/common/base-drawer/base-drawer.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/base-drawer/base-drawer.stories.js +56 -0
- package/dist/src/presentation/web/components/common/base-drawer/index.d.ts +2 -0
- package/dist/src/presentation/web/components/common/base-drawer/index.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/base-drawer/index.js +1 -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 +9 -16
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts +1 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.js +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.js +14 -14
- package/dist/src/presentation/web/components/common/repository-node/index.d.ts +1 -0
- package/dist/src/presentation/web/components/common/repository-node/index.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/repository-node/index.js +1 -0
- package/dist/src/presentation/web/components/common/repository-node/repository-drawer.d.ts +7 -0
- package/dist/src/presentation/web/components/common/repository-node/repository-drawer.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/repository-node/repository-drawer.js +12 -0
- package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.d.ts +9 -0
- package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.js +34 -0
- package/dist/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell.js +4 -6
- 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 +20 -2
- package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts +3 -1
- package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/features-canvas/features-canvas.js +4 -2
- package/dist/src/presentation/web/components/features/skills/skill-detail-drawer.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/skills/skill-detail-drawer.js +3 -6
- 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/cache/.previewinfo +1 -1
- package/web/.next/cache/.rscinfo +1 -1
- package/web/.next/cache/.tsbuildinfo +1 -1
- package/web/.next/cache/config.json +3 -3
- 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/_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 +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/page/server-reference-manifest.json +14 -14
- package/web/.next/server/app/page.js.nft.json +1 -1
- package/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills/page/server-reference-manifest.json +1 -1
- 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 +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/server-reference-manifest.json +1 -1
- package/web/.next/server/app/version/page.js.nft.json +1 -1
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__5e0f14e9._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__5e0f14e9._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js +4 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ae251147._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ae251147._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b6839c3f._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b6839c3f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__da0ade1f._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__da0ade1f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__dd5b62cb._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__dd5b62cb._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fbc89707._.js +1 -1
- package/web/.next/server/chunks/ssr/_73d14b70._.js +3 -0
- package/web/.next/server/chunks/ssr/_73d14b70._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_7f386377._.js +3 -0
- package/web/.next/server/chunks/ssr/_7f386377._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_d3711354._.js +2 -2
- package/web/.next/server/chunks/ssr/_d3711354._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_a64b7b24._.js → _d81184e2._.js} +2 -2
- package/web/.next/server/chunks/ssr/_d81184e2._.js.map +1 -0
- package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/node_modules__pnpm_fe355030._.js → server/chunks/ssr/node_modules__pnpm_87f920e7._.js} +2 -2
- package/web/.next/server/chunks/ssr/{node_modules__pnpm_fe355030._.js.map → node_modules__pnpm_87f920e7._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_7a0b09da._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_components_7a0b09da._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -0
- 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 +15 -15
- package/web/.next/standalone/src/presentation/web/.next/BUILD_ID +1 -1
- package/web/.next/standalone/src/presentation/web/.next/build-manifest.json +2 -2
- package/web/.next/standalone/src/presentation/web/.next/prerender-manifest.json +3 -3
- package/web/.next/standalone/src/presentation/web/.next/required-server-files.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/page/server-reference-manifest.json +14 -14
- package/web/.next/standalone/src/presentation/web/.next/server/app/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/server-reference-manifest.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/server-reference-manifest.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/version/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__5e0f14e9._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js +4 -4
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__ae251147._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__b6839c3f._.js +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__da0ade1f._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__dd5b62cb._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__fbc89707._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_73d14b70._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_7f386377._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_d3711354._.js +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{_a64b7b24._.js → _d81184e2._.js} +2 -2
- package/web/.next/{server/chunks/ssr/node_modules__pnpm_fe355030._.js → standalone/src/presentation/web/.next/server/chunks/ssr/node_modules__pnpm_87f920e7._.js} +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_7a0b09da._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/pages/500.html +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.json +15 -15
- package/web/.next/standalone/src/presentation/web/components/common/base-drawer/base-drawer.stories.tsx +207 -0
- package/web/.next/standalone/src/presentation/web/components/common/base-drawer/base-drawer.tsx +90 -0
- package/web/.next/standalone/src/presentation/web/components/common/base-drawer/index.ts +1 -0
- package/web/.next/standalone/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.tsx +1 -1
- package/web/.next/standalone/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.tsx +143 -172
- package/web/.next/standalone/src/presentation/web/components/common/feature-drawer/feature-drawer.tsx +119 -133
- package/web/.next/standalone/src/presentation/web/components/common/repository-node/index.ts +1 -0
- package/web/.next/standalone/src/presentation/web/components/common/repository-node/repository-drawer.stories.tsx +58 -0
- package/web/.next/standalone/src/presentation/web/components/common/repository-node/repository-drawer.tsx +82 -0
- package/web/.next/standalone/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell.tsx +79 -96
- package/web/.next/standalone/src/presentation/web/components/features/control-center/control-center-inner.tsx +30 -2
- package/web/.next/standalone/src/presentation/web/components/features/features-canvas/features-canvas.tsx +7 -0
- package/web/.next/standalone/src/presentation/web/components/features/skills/skill-detail-drawer.tsx +71 -77
- package/web/.next/standalone/src/presentation/web/server.js +1 -1
- package/web/.next/static/chunks/04d22f0d67c6671b.js +10 -0
- package/web/.next/static/chunks/0c6654ec27f11c7e.js +1 -0
- package/web/.next/static/chunks/12c70bfd5951cf9b.js +1 -0
- package/web/.next/static/chunks/21541b346dd4dd28.js +1 -0
- package/web/.next/static/chunks/{cb1b27e4a21415d3.js → 3b941e59ac013e12.js} +2 -2
- package/web/.next/static/chunks/{09d898be63c54f20.js → 78919481e7c5ad4f.js} +1 -1
- package/web/.next/static/chunks/a5b6a22de303e877.css +2 -0
- package/web/.next/static/chunks/af7a5bcb7c49e46e.js +1 -0
- package/web/.next/static/chunks/bcd97add650ece51.js +1 -0
- package/web/.next/static/chunks/be784143669bb992.js +1 -0
- package/web/.next/trace +1 -1
- package/web/.next/trace-build +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__2395adc6._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__2395adc6._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__87fda958._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__87fda958._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ee7cffe1._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ee7cffe1._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_9915d2a7._.js +0 -3
- package/web/.next/server/chunks/ssr/_9915d2a7._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_a64b7b24._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_e7a4b0e4._.js +0 -3
- package/web/.next/server/chunks/ssr/_e7a4b0e4._.js.map +0 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__2395adc6._.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__87fda958._.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__ee7cffe1._.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_9915d2a7._.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_e7a4b0e4._.js +0 -3
- package/web/.next/static/chunks/13664c029245afc8.js +0 -1
- package/web/.next/static/chunks/25f42652257ff43d.js +0 -1
- package/web/.next/static/chunks/2934854f0378f815.js +0 -1
- package/web/.next/static/chunks/45f510f84c7c417d.css +0 -2
- package/web/.next/static/chunks/8e4c719503d9387e.js +0 -1
- package/web/.next/static/chunks/cd44f06f18e3425a.js +0 -10
- /package/web/.next/static/{2z-UoCok36_D1hh1-N88G → R37CbaEU-TK9xR6x4aI_Z}/_buildManifest.js +0 -0
- /package/web/.next/static/{2z-UoCok36_D1hh1-N88G → R37CbaEU-TK9xR6x4aI_Z}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{2z-UoCok36_D1hh1-N88G → R37CbaEU-TK9xR6x4aI_Z}/_ssgManifest.js +0 -0
|
@@ -20,6 +20,8 @@ import { FeaturesCanvas } from '@/components/features/features-canvas';
|
|
|
20
20
|
import type { CanvasNodeType } from '@/components/features/features-canvas';
|
|
21
21
|
import type { FeatureNodeData } from '@/components/common/feature-node';
|
|
22
22
|
import { FeatureDrawer, FeatureCreateDrawer } from '@/components/common';
|
|
23
|
+
import { RepositoryDrawer } from '@/components/common/repository-node';
|
|
24
|
+
import type { RepositoryNodeData } from '@/components/common/repository-node';
|
|
23
25
|
import { PrdQuestionnaireDrawer } from '@/components/common/prd-questionnaire';
|
|
24
26
|
import type { PrdQuestionnaireData } from '@/components/common/prd-questionnaire';
|
|
25
27
|
import { TechDecisionsDrawer } from '@/components/common/tech-decisions-review';
|
|
@@ -98,6 +100,28 @@ export function ControlCenterInner({ initialNodes, initialEdges }: ControlCenter
|
|
|
98
100
|
const [mergeReviewData, setMergeReviewData] = useState<MergeReviewData | null>(null);
|
|
99
101
|
const [isLoadingMergeReview, setIsLoadingMergeReview] = useState(false);
|
|
100
102
|
|
|
103
|
+
// Repository drawer state
|
|
104
|
+
const [selectedRepoNode, setSelectedRepoNode] = useState<RepositoryNodeData | null>(null);
|
|
105
|
+
|
|
106
|
+
// Clear all drawers — used for pane click and canvas drag
|
|
107
|
+
const handleClearDrawers = useCallback(() => {
|
|
108
|
+
clearSelection();
|
|
109
|
+
setSelectedRepoNode(null);
|
|
110
|
+
closeCreateDrawer();
|
|
111
|
+
}, [clearSelection, closeCreateDrawer]);
|
|
112
|
+
|
|
113
|
+
// Open repository drawer when a repo node is clicked
|
|
114
|
+
const handleRepositoryClick = useCallback(
|
|
115
|
+
(nodeId: string) => {
|
|
116
|
+
const node = nodes.find((n) => n.id === nodeId);
|
|
117
|
+
if (node?.type === 'repositoryNode') {
|
|
118
|
+
clearSelection();
|
|
119
|
+
setSelectedRepoNode(node.data as RepositoryNodeData);
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
[nodes, clearSelection]
|
|
123
|
+
);
|
|
124
|
+
|
|
101
125
|
const showPrdDrawer =
|
|
102
126
|
selectedNode?.lifecycle === 'requirements' && selectedNode?.state === 'action-required';
|
|
103
127
|
|
|
@@ -105,7 +129,8 @@ export function ControlCenterInner({ initialNodes, initialEdges }: ControlCenter
|
|
|
105
129
|
selectedNode?.lifecycle === 'implementation' && selectedNode?.state === 'action-required';
|
|
106
130
|
|
|
107
131
|
const showMergeReviewDrawer =
|
|
108
|
-
selectedNode?.lifecycle === 'review' &&
|
|
132
|
+
selectedNode?.lifecycle === 'review' &&
|
|
133
|
+
(selectedNode?.state === 'action-required' || selectedNode?.state === 'error');
|
|
109
134
|
|
|
110
135
|
const handlePrdSelect = useCallback((questionId: string, optionId: string) => {
|
|
111
136
|
setPrdSelections((prev) => ({ ...prev, [questionId]: optionId }));
|
|
@@ -378,10 +403,12 @@ export function ControlCenterInner({ initialNodes, initialEdges }: ControlCenter
|
|
|
378
403
|
onAddFeature={handleAddFeature}
|
|
379
404
|
onNodeAction={handleAddFeatureToFeature}
|
|
380
405
|
onNodeClick={handleNodeClick}
|
|
381
|
-
onPaneClick={
|
|
406
|
+
onPaneClick={handleClearDrawers}
|
|
382
407
|
onRepositoryAdd={handleAddFeatureToRepo}
|
|
408
|
+
onRepositoryClick={handleRepositoryClick}
|
|
383
409
|
onRepositoryDelete={handleDeleteRepository}
|
|
384
410
|
onRepositorySelect={handleAddRepository}
|
|
411
|
+
onCanvasDrag={handleClearDrawers}
|
|
385
412
|
emptyState={<ControlCenterEmptyState onRepositorySelect={handleAddRepository} />}
|
|
386
413
|
/>
|
|
387
414
|
<FeatureDrawer
|
|
@@ -458,6 +485,7 @@ export function ControlCenterInner({ initialNodes, initialEdges }: ControlCenter
|
|
|
458
485
|
features={featureOptions}
|
|
459
486
|
initialParentId={pendingParentFeatureId}
|
|
460
487
|
/>
|
|
488
|
+
<RepositoryDrawer data={selectedRepoNode} onClose={() => setSelectedRepoNode(null)} />
|
|
461
489
|
</>
|
|
462
490
|
);
|
|
463
491
|
}
|
|
@@ -26,9 +26,11 @@ export interface FeaturesCanvasProps {
|
|
|
26
26
|
onNodeClick?: (event: React.MouseEvent, node: CanvasNodeType) => void;
|
|
27
27
|
onPaneClick?: (event: React.MouseEvent) => void;
|
|
28
28
|
onRepositoryAdd?: (repoNodeId: string) => void;
|
|
29
|
+
onRepositoryClick?: (nodeId: string) => void;
|
|
29
30
|
onRepositoryDelete?: (repositoryId: string) => void;
|
|
30
31
|
onConnect?: (connection: Connection) => void;
|
|
31
32
|
onRepositorySelect?: (path: string) => void;
|
|
33
|
+
onCanvasDrag?: () => void;
|
|
32
34
|
toolbar?: React.ReactNode;
|
|
33
35
|
emptyState?: React.ReactNode;
|
|
34
36
|
}
|
|
@@ -44,8 +46,10 @@ export function FeaturesCanvas({
|
|
|
44
46
|
onNodeClick,
|
|
45
47
|
onPaneClick,
|
|
46
48
|
onRepositoryAdd,
|
|
49
|
+
onRepositoryClick,
|
|
47
50
|
onRepositoryDelete,
|
|
48
51
|
onRepositorySelect,
|
|
52
|
+
onCanvasDrag,
|
|
49
53
|
toolbar,
|
|
50
54
|
emptyState,
|
|
51
55
|
}: FeaturesCanvasProps) {
|
|
@@ -96,6 +100,7 @@ export function FeaturesCanvas({
|
|
|
96
100
|
: {}),
|
|
97
101
|
...(node.type === 'repositoryNode' && {
|
|
98
102
|
onAdd: onRepositoryAdd ? () => onRepositoryAdd(node.id) : undefined,
|
|
103
|
+
onClick: onRepositoryClick ? () => onRepositoryClick(node.id) : undefined,
|
|
99
104
|
onDelete: onRepositoryDelete,
|
|
100
105
|
}),
|
|
101
106
|
...(node.type === 'addRepositoryNode' && {
|
|
@@ -109,6 +114,7 @@ export function FeaturesCanvas({
|
|
|
109
114
|
onNodeAction,
|
|
110
115
|
onNodeSettings,
|
|
111
116
|
onRepositoryAdd,
|
|
117
|
+
onRepositoryClick,
|
|
112
118
|
onRepositoryDelete,
|
|
113
119
|
onRepositorySelect,
|
|
114
120
|
]
|
|
@@ -151,6 +157,7 @@ export function FeaturesCanvas({
|
|
|
151
157
|
onNodesChange={onNodesChange}
|
|
152
158
|
onNodeClick={onNodeClick}
|
|
153
159
|
onPaneClick={onPaneClick}
|
|
160
|
+
onMoveStart={onCanvasDrag}
|
|
154
161
|
defaultViewport={{ x: 30, y: 30, zoom: 0.85 }}
|
|
155
162
|
nodesDraggable={false}
|
|
156
163
|
nodesConnectable={false}
|
package/web/.next/standalone/src/presentation/web/components/features/skills/skill-detail-drawer.tsx
CHANGED
|
@@ -1,14 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
SheetContent,
|
|
6
|
-
SheetHeader,
|
|
7
|
-
SheetTitle,
|
|
8
|
-
SheetDescription,
|
|
9
|
-
} from '@/components/ui/sheet';
|
|
3
|
+
import { BaseDrawer } from '@/components/common/base-drawer';
|
|
4
|
+
import { DrawerTitle, DrawerDescription } from '@/components/ui/drawer';
|
|
10
5
|
import { Badge } from '@/components/ui/badge';
|
|
11
|
-
import { ScrollArea } from '@/components/ui/scroll-area';
|
|
12
6
|
import { Separator } from '@/components/ui/separator';
|
|
13
7
|
import { FolderOpen } from 'lucide-react';
|
|
14
8
|
import type { SkillData } from '@/lib/skills';
|
|
@@ -20,81 +14,81 @@ export interface SkillDetailDrawerProps {
|
|
|
20
14
|
|
|
21
15
|
export function SkillDetailDrawer({ skill, onClose }: SkillDetailDrawerProps) {
|
|
22
16
|
return (
|
|
23
|
-
<
|
|
17
|
+
<BaseDrawer
|
|
24
18
|
open={skill !== null}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
19
|
+
onClose={onClose}
|
|
20
|
+
size="sm"
|
|
21
|
+
modal
|
|
22
|
+
data-testid="skill-detail-drawer"
|
|
23
|
+
header={
|
|
24
|
+
skill ? (
|
|
31
25
|
<>
|
|
32
|
-
<
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
26
|
+
<DrawerTitle>{skill.displayName}</DrawerTitle>
|
|
27
|
+
<DrawerDescription>{skill.name}</DrawerDescription>
|
|
28
|
+
</>
|
|
29
|
+
) : undefined
|
|
30
|
+
}
|
|
31
|
+
>
|
|
32
|
+
{skill ? (
|
|
33
|
+
<div className="px-4 pb-4">
|
|
34
|
+
{/* Description */}
|
|
35
|
+
<p className="text-muted-foreground text-sm">{skill.description}</p>
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
{/* Badges */}
|
|
38
|
+
<div className="mt-4 flex flex-wrap items-center gap-1.5">
|
|
39
|
+
<Badge variant={skill.source === 'project' ? 'secondary' : 'outline'}>
|
|
40
|
+
{skill.source === 'project' ? 'Project' : 'Global'}
|
|
41
|
+
</Badge>
|
|
42
|
+
<Badge variant="outline">{skill.category}</Badge>
|
|
43
|
+
{skill.context ? <Badge variant="outline">{skill.context}</Badge> : null}
|
|
44
|
+
</div>
|
|
40
45
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<
|
|
47
|
-
|
|
46
|
+
{/* Allowed Tools */}
|
|
47
|
+
{skill.allowedTools ? (
|
|
48
|
+
<>
|
|
49
|
+
<Separator className="my-4" />
|
|
50
|
+
<div>
|
|
51
|
+
<h3 className="text-sm font-semibold">Allowed Tools</h3>
|
|
52
|
+
<p className="text-muted-foreground mt-1 text-sm">{skill.allowedTools}</p>
|
|
48
53
|
</div>
|
|
54
|
+
</>
|
|
55
|
+
) : null}
|
|
49
56
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
<FolderOpen className="size-3.5 shrink-0" />
|
|
74
|
-
<span>
|
|
75
|
-
{resource.name}/ — {resource.fileCount}{' '}
|
|
76
|
-
{resource.fileCount === 1 ? 'file' : 'files'}
|
|
77
|
-
</span>
|
|
78
|
-
</li>
|
|
79
|
-
))}
|
|
80
|
-
</ul>
|
|
81
|
-
</div>
|
|
82
|
-
</>
|
|
83
|
-
) : null}
|
|
57
|
+
{/* Resources */}
|
|
58
|
+
{skill.resources.length > 0 ? (
|
|
59
|
+
<>
|
|
60
|
+
<Separator className="my-4" />
|
|
61
|
+
<div>
|
|
62
|
+
<h3 className="text-sm font-semibold">Resources</h3>
|
|
63
|
+
<ul className="mt-2 space-y-1.5">
|
|
64
|
+
{skill.resources.map((resource) => (
|
|
65
|
+
<li
|
|
66
|
+
key={resource.name}
|
|
67
|
+
className="text-muted-foreground flex items-center gap-2 text-sm"
|
|
68
|
+
>
|
|
69
|
+
<FolderOpen className="size-3.5 shrink-0" />
|
|
70
|
+
<span>
|
|
71
|
+
{resource.name}/ — {resource.fileCount}{' '}
|
|
72
|
+
{resource.fileCount === 1 ? 'file' : 'files'}
|
|
73
|
+
</span>
|
|
74
|
+
</li>
|
|
75
|
+
))}
|
|
76
|
+
</ul>
|
|
77
|
+
</div>
|
|
78
|
+
</>
|
|
79
|
+
) : null}
|
|
84
80
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
</SheetContent>
|
|
98
|
-
</Sheet>
|
|
81
|
+
{/* Body */}
|
|
82
|
+
{skill.body ? (
|
|
83
|
+
<>
|
|
84
|
+
<Separator className="my-4" />
|
|
85
|
+
<pre className="text-muted-foreground text-sm leading-relaxed whitespace-pre-wrap">
|
|
86
|
+
{skill.body}
|
|
87
|
+
</pre>
|
|
88
|
+
</>
|
|
89
|
+
) : null}
|
|
90
|
+
</div>
|
|
91
|
+
) : null}
|
|
92
|
+
</BaseDrawer>
|
|
99
93
|
);
|
|
100
94
|
}
|
|
@@ -15,7 +15,7 @@ const currentPort = parseInt(process.env.PORT, 10) || 3000
|
|
|
15
15
|
const hostname = process.env.HOSTNAME || '0.0.0.0'
|
|
16
16
|
|
|
17
17
|
let keepAliveTimeout = parseInt(process.env.KEEP_ALIVE_TIMEOUT, 10)
|
|
18
|
-
const nextConfig = {"env":{"NEXT_PUBLIC_SHEP_VERSION":"1.
|
|
18
|
+
const nextConfig = {"env":{"NEXT_PUBLIC_SHEP_VERSION":"1.63.0","NEXT_PUBLIC_SHEP_PACKAGE_NAME":"@shepai/cli","NEXT_PUBLIC_SHEP_DESCRIPTION":"Autonomous AI Native SDLC Platform - Automate the development cycle from idea to deploy"},"webpack":null,"typescript":{"ignoreBuildErrors":false},"typedRoutes":true,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.ts","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"maximumResponseBody":50000000,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":null,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/home/runner/work/cli/cli","cacheComponents":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"experimental":{"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"dynamicOnHover":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":3,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"viewTransition":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":false,"serverComponentsHmrCache":true,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"inlineCss":false,"useCache":false,"globalNotFound":false,"browserDebugInfoInTerminal":false,"lockDistDir":true,"isolatedDevBuild":true,"proxyClientMaxBodySize":10485760,"hideLogsAfterAbort":false,"mcpServer":true,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":false,"turbopackInferModuleSideEffects":false,"optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.ts","turbopack":{"root":"/home/runner/work/cli/cli"},"serverExternalPackages":["tsyringe","reflect-metadata","better-sqlite3","node:os","node:child_process","node:fs"],"distDirRoot":".next"}
|
|
19
19
|
|
|
20
20
|
process.env.__NEXT_PRIVATE_STANDALONE_CONFIG = JSON.stringify(nextConfig)
|
|
21
21
|
|