@shepai/cli 1.75.0-pr237.5e7fa4f → 1.75.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/feature-agent-process.interface.d.ts +0 -1
- package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/services/spec-initializer.interface.d.ts +1 -4
- package/dist/packages/core/src/application/ports/output/services/spec-initializer.interface.d.ts.map +1 -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 +2 -5
- package/dist/packages/core/src/application/use-cases/features/create/types.d.ts +0 -2
- package/dist/packages/core/src/application/use-cases/features/create/types.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts +0 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.js +0 -3
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts +0 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +1 -10
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/lifecycle-context.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/lifecycle-context.js +0 -1
- package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.d.ts +1 -1
- package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.js +3 -8
- package/dist/src/presentation/cli/commands/feat/new.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/new.command.js +0 -2
- package/dist/src/presentation/web/app/actions/create-feature.d.ts +0 -2
- package/dist/src/presentation/web/app/actions/create-feature.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/create-feature.js +1 -3
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts +0 -2
- 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 +1 -5
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts +0 -18
- 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 +0 -49
- 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 +5 -31
- package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts +1 -4
- package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/control-center/use-control-center-state.js +2 -4
- package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts +1 -4
- 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 +2 -3
- package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.d.ts +0 -3
- package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.js +0 -89
- package/dist/src/presentation/web/hooks/use-graph-state.d.ts +0 -2
- package/dist/src/presentation/web/hooks/use-graph-state.d.ts.map +1 -1
- package/dist/src/presentation/web/hooks/use-graph-state.js +0 -4
- 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/(dashboard)/@drawer/create/page/server-reference-manifest.json +16 -16
- 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]/page/server-reference-manifest.json +19 -19
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +16 -16
- 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]/page/server-reference-manifest.json +19 -19
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +14 -14
- package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
- 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 +6 -6
- package/web/.next/server/app/tools/page.js.nft.json +1 -1
- package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js.map +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6258349c._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6258349c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js +2 -2
- 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]__94a6d275._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__94a6d275._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0e9d6bf7._.js +1 -1
- package/web/.next/server/chunks/ssr/_0e9d6bf7._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_61351ed3._.js +1 -1
- package/web/.next/server/chunks/ssr/_61351ed3._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_8400c8bb._.js +1 -1
- package/web/.next/server/chunks/ssr/_8400c8bb._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_9f940437._.js +1 -1
- package/web/.next/server/chunks/ssr/_9f940437._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_70427cc3._.js → _fd351734._.js} +3 -3
- package/web/.next/server/chunks/ssr/{_70427cc3._.js.map → _fd351734._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_163038ba._.js +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_163038ba._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_30d7eeda._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_30d7eeda._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_459cb687._.js +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_459cb687._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_565a14f8._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_565a14f8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
- package/web/.next/server/pages/500.html +2 -2
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +22 -22
- 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/(dashboard)/@drawer/create/page/server-reference-manifest.json +16 -16
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +19 -19
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +16 -16
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +19 -19
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +14 -14
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
- 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 +6 -6
- 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_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6258349c._.js +1 -1
- 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]__6cbc1149._.js +2 -2
- 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]__94a6d275._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_0e9d6bf7._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_61351ed3._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_8400c8bb._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_9f940437._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{_70427cc3._.js → _fd351734._.js} +3 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_163038ba._.js +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_30d7eeda._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_459cb687._.js +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_565a14f8._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
- 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 +22 -22
- package/web/.next/standalone/src/presentation/web/app/actions/create-feature.ts +1 -6
- package/web/.next/standalone/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.tsx +0 -57
- package/web/.next/standalone/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.tsx +0 -21
- package/web/.next/standalone/src/presentation/web/components/features/control-center/control-center-inner.tsx +4 -36
- package/web/.next/standalone/src/presentation/web/components/features/control-center/use-control-center-state.ts +3 -7
- package/web/.next/standalone/src/presentation/web/components/features/features-canvas/features-canvas.stories.tsx +0 -103
- package/web/.next/standalone/src/presentation/web/components/features/features-canvas/features-canvas.tsx +1 -7
- package/web/.next/standalone/src/presentation/web/hooks/use-graph-state.ts +0 -7
- package/web/.next/standalone/src/presentation/web/server.js +1 -1
- package/web/.next/static/chunks/{224919f6f72a4a90.js → 0351dfb1a2c04651.js} +1 -1
- package/web/.next/static/chunks/{31a91284309556ca.js → 09e8bde4c8c36032.js} +1 -1
- package/web/.next/static/chunks/{9fd70802deb2e4b6.js → 25c39fb56c1fb992.js} +1 -1
- package/web/.next/static/chunks/2a37d25332b5648b.js +1 -0
- package/web/.next/static/chunks/{bafdd9797848cd20.js → 3ce5a1e5f4215598.js} +3 -3
- package/web/.next/static/chunks/{ab7bce7118a0f933.js → 409477e14c0251ad.js} +1 -1
- package/web/.next/static/chunks/{9de39ba6f1d109ce.js → 7fc4ef147139e5d7.js} +1 -1
- package/web/.next/static/chunks/{ed9bf11850c038ad.js → c98e709ebd484e56.js} +1 -1
- package/web/.next/static/chunks/{a88681644bdb457b.js → d1c098005f96b0c2.js} +1 -1
- package/web/.next/trace +1 -1
- package/web/.next/trace-build +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts +0 -220
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.js +0 -66
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.d.ts +0 -21
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.js +0 -60
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/fast-implement.prompt.d.ts +0 -25
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/fast-implement.prompt.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/fast-implement.prompt.js +0 -176
- package/dist/src/presentation/web/hooks/use-viewport-persistence.d.ts +0 -15
- package/dist/src/presentation/web/hooks/use-viewport-persistence.d.ts.map +0 -1
- package/dist/src/presentation/web/hooks/use-viewport-persistence.js +0 -17
- package/web/.next/standalone/src/presentation/web/hooks/use-viewport-persistence.ts +0 -28
- package/web/.next/static/chunks/9b07281f9fa372ca.js +0 -1
- /package/web/.next/static/{Z3nGW8HgUl_Ajpr-2arJQ → noYkP21cohTYVGvhHBqjY}/_buildManifest.js +0 -0
- /package/web/.next/static/{Z3nGW8HgUl_Ajpr-2arJQ → noYkP21cohTYVGvhHBqjY}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{Z3nGW8HgUl_Ajpr-2arJQ → noYkP21cohTYVGvhHBqjY}/_ssgManifest.js +0 -0
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Fast-Implement Prompt Builder
|
|
3
|
-
*
|
|
4
|
-
* Builds a single-pass implementation prompt for fast mode.
|
|
5
|
-
* Combines the user's raw query with lightweight codebase context
|
|
6
|
-
* (CLAUDE.md, package.json, shallow directory listing).
|
|
7
|
-
*
|
|
8
|
-
* The prompt instructs the executor to implement changes and run tests,
|
|
9
|
-
* but NOT to commit, push, or create PRs (that's the merge node's job).
|
|
10
|
-
*/
|
|
11
|
-
import { readFileSync, readdirSync, statSync } from 'node:fs';
|
|
12
|
-
import { join } from 'node:path';
|
|
13
|
-
import yaml from 'js-yaml';
|
|
14
|
-
import { readSpecFile } from '../node-helpers.js';
|
|
15
|
-
/**
|
|
16
|
-
* Read a file from the worktree, returning empty string if not found.
|
|
17
|
-
*/
|
|
18
|
-
function readWorktreeFile(worktreePath, filename) {
|
|
19
|
-
try {
|
|
20
|
-
return readFileSync(join(worktreePath, filename), 'utf-8');
|
|
21
|
-
}
|
|
22
|
-
catch {
|
|
23
|
-
return '';
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Build a shallow directory listing (depth 1-2) of the worktree.
|
|
28
|
-
* Returns a tree-style string. Skips common noise directories.
|
|
29
|
-
*/
|
|
30
|
-
function buildDirectoryListing(worktreePath) {
|
|
31
|
-
const SKIP_DIRS = new Set([
|
|
32
|
-
'node_modules',
|
|
33
|
-
'.git',
|
|
34
|
-
'.next',
|
|
35
|
-
'dist',
|
|
36
|
-
'build',
|
|
37
|
-
'coverage',
|
|
38
|
-
'.turbo',
|
|
39
|
-
'.cache',
|
|
40
|
-
'.shep',
|
|
41
|
-
]);
|
|
42
|
-
const lines = [];
|
|
43
|
-
try {
|
|
44
|
-
const topLevel = readdirSync(worktreePath);
|
|
45
|
-
for (const entry of topLevel) {
|
|
46
|
-
if (SKIP_DIRS.has(entry))
|
|
47
|
-
continue;
|
|
48
|
-
const fullPath = join(worktreePath, entry);
|
|
49
|
-
let isDir = false;
|
|
50
|
-
try {
|
|
51
|
-
isDir = statSync(fullPath).isDirectory();
|
|
52
|
-
}
|
|
53
|
-
catch {
|
|
54
|
-
continue;
|
|
55
|
-
}
|
|
56
|
-
if (isDir) {
|
|
57
|
-
lines.push(`${entry}/`);
|
|
58
|
-
try {
|
|
59
|
-
const children = readdirSync(fullPath);
|
|
60
|
-
for (const child of children) {
|
|
61
|
-
if (SKIP_DIRS.has(child))
|
|
62
|
-
continue;
|
|
63
|
-
const childPath = join(fullPath, child);
|
|
64
|
-
let childIsDir = false;
|
|
65
|
-
try {
|
|
66
|
-
childIsDir = statSync(childPath).isDirectory();
|
|
67
|
-
}
|
|
68
|
-
catch {
|
|
69
|
-
continue;
|
|
70
|
-
}
|
|
71
|
-
lines.push(` ${child}${childIsDir ? '/' : ''}`);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
catch {
|
|
75
|
-
// Cannot read subdirectory — skip
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
lines.push(entry);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
catch {
|
|
84
|
-
return '(unable to list directory)';
|
|
85
|
-
}
|
|
86
|
-
return lines.join('\n');
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Extract the user query from spec.yaml's userQuery field.
|
|
90
|
-
* Falls back to the raw YAML content if parsing fails.
|
|
91
|
-
*/
|
|
92
|
-
function extractUserQuery(specDir) {
|
|
93
|
-
const specContent = readSpecFile(specDir, 'spec.yaml');
|
|
94
|
-
if (!specContent)
|
|
95
|
-
return '';
|
|
96
|
-
try {
|
|
97
|
-
const data = yaml.load(specContent);
|
|
98
|
-
const userQuery = data?.userQuery;
|
|
99
|
-
if (typeof userQuery === 'string' && userQuery.trim()) {
|
|
100
|
-
return userQuery.trim();
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
catch {
|
|
104
|
-
// Fall through to raw content
|
|
105
|
-
}
|
|
106
|
-
return specContent;
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Build the fast-implement prompt from user query + codebase context.
|
|
110
|
-
*
|
|
111
|
-
* The prompt includes:
|
|
112
|
-
* 1. User's raw query (from spec.yaml userQuery field)
|
|
113
|
-
* 2. CLAUDE.md content (if exists)
|
|
114
|
-
* 3. package.json (if exists)
|
|
115
|
-
* 4. Shallow directory listing (depth 1-2)
|
|
116
|
-
*
|
|
117
|
-
* Instructs the executor to implement, test, and validate — but NOT
|
|
118
|
-
* commit/push/PR (that's the merge node's job).
|
|
119
|
-
*/
|
|
120
|
-
export function buildFastImplementPrompt(state) {
|
|
121
|
-
const cwd = state.worktreePath || state.repositoryPath;
|
|
122
|
-
const userQuery = extractUserQuery(state.specDir);
|
|
123
|
-
// Read optional context files
|
|
124
|
-
const claudeMd = readWorktreeFile(cwd, 'CLAUDE.md');
|
|
125
|
-
const packageJson = readWorktreeFile(cwd, 'package.json');
|
|
126
|
-
const dirListing = buildDirectoryListing(cwd);
|
|
127
|
-
// Build sections conditionally
|
|
128
|
-
const sections = [];
|
|
129
|
-
sections.push(`You are a senior software engineer implementing a change directly from a user request.
|
|
130
|
-
|
|
131
|
-
## User Request
|
|
132
|
-
|
|
133
|
-
${userQuery}
|
|
134
|
-
|
|
135
|
-
## Implementation Instructions
|
|
136
|
-
|
|
137
|
-
1. Implement the requested changes in the codebase
|
|
138
|
-
2. Write tests for your changes where appropriate
|
|
139
|
-
3. Run the test suite and fix any failures
|
|
140
|
-
4. Run the linter and fix any issues
|
|
141
|
-
5. Ensure the project builds successfully
|
|
142
|
-
6. Do NOT commit, push, or create a PR — just make the code changes
|
|
143
|
-
|
|
144
|
-
## Working Directory
|
|
145
|
-
|
|
146
|
-
${cwd}`);
|
|
147
|
-
if (claudeMd) {
|
|
148
|
-
sections.push(`## Project Guidelines (CLAUDE.md)
|
|
149
|
-
|
|
150
|
-
${claudeMd}`);
|
|
151
|
-
}
|
|
152
|
-
if (packageJson) {
|
|
153
|
-
// Truncate large package.json to stay within prompt budget
|
|
154
|
-
const truncated = packageJson.length > 3000 ? `${packageJson.slice(0, 3000)}\n...(truncated)` : packageJson;
|
|
155
|
-
sections.push(`## Package Configuration (package.json)
|
|
156
|
-
|
|
157
|
-
\`\`\`json
|
|
158
|
-
${truncated}
|
|
159
|
-
\`\`\``);
|
|
160
|
-
}
|
|
161
|
-
if (dirListing && dirListing !== '(unable to list directory)') {
|
|
162
|
-
sections.push(`## Project Structure
|
|
163
|
-
|
|
164
|
-
\`\`\`
|
|
165
|
-
${dirListing}
|
|
166
|
-
\`\`\``);
|
|
167
|
-
}
|
|
168
|
-
sections.push(`## Constraints
|
|
169
|
-
|
|
170
|
-
- Implement ONLY what the user requested — nothing more
|
|
171
|
-
- Follow existing codebase conventions and patterns
|
|
172
|
-
- Do NOT commit, push, or create pull requests
|
|
173
|
-
- Do NOT modify any spec YAML files
|
|
174
|
-
- Keep changes focused and minimal`);
|
|
175
|
-
return sections.join('\n\n');
|
|
176
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export interface Viewport {
|
|
2
|
-
x: number;
|
|
3
|
-
y: number;
|
|
4
|
-
zoom: number;
|
|
5
|
-
}
|
|
6
|
-
export declare const DEFAULT_VIEWPORT: Viewport;
|
|
7
|
-
/**
|
|
8
|
-
* Persists the ReactFlow viewport position across re-renders so the canvas
|
|
9
|
-
* doesn't jump back to the origin when nodes update.
|
|
10
|
-
*/
|
|
11
|
-
export declare function useViewportPersistence(): {
|
|
12
|
-
defaultViewport: Viewport;
|
|
13
|
-
onMoveEnd: (viewport: Viewport) => void;
|
|
14
|
-
};
|
|
15
|
-
//# sourceMappingURL=use-viewport-persistence.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-viewport-persistence.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/hooks/use-viewport-persistence.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,gBAAgB,EAAE,QAAkC,CAAC;AAElE;;;GAGG;AACH,wBAAgB,sBAAsB;;0BAGK,QAAQ;EAQlD"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { useCallback, useRef } from 'react';
|
|
3
|
-
export const DEFAULT_VIEWPORT = { x: 0, y: 0, zoom: 1 };
|
|
4
|
-
/**
|
|
5
|
-
* Persists the ReactFlow viewport position across re-renders so the canvas
|
|
6
|
-
* doesn't jump back to the origin when nodes update.
|
|
7
|
-
*/
|
|
8
|
-
export function useViewportPersistence() {
|
|
9
|
-
const viewportRef = useRef(DEFAULT_VIEWPORT);
|
|
10
|
-
const onMoveEnd = useCallback((viewport) => {
|
|
11
|
-
viewportRef.current = viewport;
|
|
12
|
-
}, []);
|
|
13
|
-
return {
|
|
14
|
-
defaultViewport: viewportRef.current,
|
|
15
|
-
onMoveEnd,
|
|
16
|
-
};
|
|
17
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import { useCallback, useRef } from 'react';
|
|
4
|
-
|
|
5
|
-
export interface Viewport {
|
|
6
|
-
x: number;
|
|
7
|
-
y: number;
|
|
8
|
-
zoom: number;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export const DEFAULT_VIEWPORT: Viewport = { x: 0, y: 0, zoom: 1 };
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Persists the ReactFlow viewport position across re-renders so the canvas
|
|
15
|
-
* doesn't jump back to the origin when nodes update.
|
|
16
|
-
*/
|
|
17
|
-
export function useViewportPersistence() {
|
|
18
|
-
const viewportRef = useRef<Viewport>(DEFAULT_VIEWPORT);
|
|
19
|
-
|
|
20
|
-
const onMoveEnd = useCallback((viewport: Viewport) => {
|
|
21
|
-
viewportRef.current = viewport;
|
|
22
|
-
}, []);
|
|
23
|
-
|
|
24
|
-
return {
|
|
25
|
-
defaultViewport: viewportRef.current,
|
|
26
|
-
onMoveEnd,
|
|
27
|
-
};
|
|
28
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,15203,e=>{"use strict";var t=e.i(20314),r=e.i(79054),a=e.i(31406),o=e.i(60112),s=e.i(21023);let n=(0,s.createServerReference)("40c36ea2620451a275b0e9f63982922e6d13d7a1cf",s.callServer,void 0,s.findSourceMapURL,"createFeature");var i=e.i(91891),i=i,l=e.i(3645);let d=(0,l.default)("file",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}]]);var c=e.i(16298),c=c;let u=(0,l.default)("image",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]]),p=(0,l.default)("code",[["path",{d:"m16 18 6-6-6-6",key:"eg8j8"}],["path",{d:"m8 6-6 6 6 6",key:"ppft3o"}]]);var f=e.i(69512),f=f;let m=(0,l.default)("chevrons-up-down",[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]]);var h=e.i(1012),h=h,x=e.i(31777),g=e.i(8361);e.i(1650);var v=e.i(11495),b=e.i(45811),j=e.i(35364),w=e.i(98127);function C({className:e,...r}){return(0,t.jsx)("textarea",{"data-slot":"textarea",className:(0,x.cn)("placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input field-sizing-content min-h-[80px] w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e),...r})}var k=e.i(87620),y=r.forwardRef((e,r)=>(0,t.jsx)(k.Primitive.label,{...e,ref:r,onMouseDown:t=>{t.target.closest("button, input, select, textarea")||(e.onMouseDown?.(t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));y.displayName="Label",e.s(["Label",()=>y,"Root",()=>y],27572);var N=e.i(27572),N=N;let P=(0,e.i(94237).cva)("text-sm leading-none font-medium peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),R=r.forwardRef(({className:e,...r},a)=>(0,t.jsx)(N.Root,{ref:a,className:(0,x.cn)(P(),e),...r}));R.displayName=N.Root.displayName;var h=h;let E=(0,l.default)("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]);var S=e.i(5978),A=e.i(22528),F=e.i(91967),O=e.i(36589),D=e.i(77624),M=e.i(85995),T="Checkbox",[I,_]=(0,A.createContextScope)(T),[B,L]=I(T);function z(e){let{__scopeCheckbox:a,checked:o,children:s,defaultChecked:n,disabled:i,form:l,name:d,onCheckedChange:c,required:u,value:p="on",internal_do_not_use_render:f}=e,[m,h]=(0,O.useControllableState)({prop:o,defaultProp:n??!1,onChange:c,caller:T}),[x,g]=r.useState(null),[v,b]=r.useState(null),j=r.useRef(!1),w=!x||!!l||!!x.closest("form"),C={checked:m,disabled:i,setChecked:h,control:x,setControl:g,name:d,form:l,value:p,hasConsumerStoppedPropagationRef:j,required:u,defaultChecked:!W(n)&&n,isFormControl:w,bubbleInput:v,setBubbleInput:b};return(0,t.jsx)(B,{scope:a,...C,children:"function"==typeof f?f(C):s})}var H="CheckboxTrigger",G=r.forwardRef(({__scopeCheckbox:e,onKeyDown:a,onClick:o,...s},n)=>{let{control:i,value:l,disabled:d,checked:c,required:u,setControl:p,setChecked:f,hasConsumerStoppedPropagationRef:m,isFormControl:h,bubbleInput:x}=L(H,e),g=(0,S.useComposedRefs)(n,p),v=r.useRef(c);return r.useEffect(()=>{let e=i?.form;if(e){let t=()=>f(v.current);return e.addEventListener("reset",t),()=>e.removeEventListener("reset",t)}},[i,f]),(0,t.jsx)(k.Primitive.button,{type:"button",role:"checkbox","aria-checked":W(c)?"mixed":c,"aria-required":u,"data-state":Y(c),"data-disabled":d?"":void 0,disabled:d,value:l,...s,ref:g,onKeyDown:(0,F.composeEventHandlers)(a,e=>{"Enter"===e.key&&e.preventDefault()}),onClick:(0,F.composeEventHandlers)(o,e=>{f(e=>!!W(e)||!e),x&&h&&(m.current=e.isPropagationStopped(),m.current||e.stopPropagation())})})});G.displayName=H;var U=r.forwardRef((e,r)=>{let{__scopeCheckbox:a,name:o,checked:s,defaultChecked:n,required:i,disabled:l,value:d,onCheckedChange:c,form:u,...p}=e;return(0,t.jsx)(z,{__scopeCheckbox:a,checked:s,defaultChecked:n,disabled:l,required:i,onCheckedChange:c,name:o,form:u,value:d,internal_do_not_use_render:({isFormControl:e})=>(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(G,{...p,ref:r,__scopeCheckbox:a}),e&&(0,t.jsx)(V,{__scopeCheckbox:a})]})})});U.displayName=T;var $="CheckboxIndicator",K=r.forwardRef((e,r)=>{let{__scopeCheckbox:a,forceMount:o,...s}=e,n=L($,a);return(0,t.jsx)(M.Presence,{present:o||W(n.checked)||!0===n.checked,children:(0,t.jsx)(k.Primitive.span,{"data-state":Y(n.checked),"data-disabled":n.disabled?"":void 0,...s,ref:r,style:{pointerEvents:"none",...e.style}})})});K.displayName=$;var q="CheckboxBubbleInput",V=r.forwardRef(({__scopeCheckbox:e,...a},o)=>{let s,{control:n,hasConsumerStoppedPropagationRef:i,checked:l,defaultChecked:d,required:c,disabled:u,name:p,value:f,form:m,bubbleInput:h,setBubbleInput:x}=L(q,e),g=(0,S.useComposedRefs)(o,x),v=(s=r.useRef({value:l,previous:l}),r.useMemo(()=>(s.current.value!==l&&(s.current.previous=s.current.value,s.current.value=l),s.current.previous),[l])),b=(0,D.useSize)(n);r.useEffect(()=>{if(!h)return;let e=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set,t=!i.current;if(v!==l&&e){let r=new Event("click",{bubbles:t});h.indeterminate=W(l),e.call(h,!W(l)&&l),h.dispatchEvent(r)}},[h,v,l,i]);let j=r.useRef(!W(l)&&l);return(0,t.jsx)(k.Primitive.input,{type:"checkbox","aria-hidden":!0,defaultChecked:d??j.current,required:c,disabled:u,name:p,value:f,form:m,...a,tabIndex:-1,ref:g,style:{...a.style,...b,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function W(e){return"indeterminate"===e}function Y(e){return W(e)?"indeterminate":e?"checked":"unchecked"}V.displayName=q,e.s(["Checkbox",()=>U,"CheckboxIndicator",()=>K,"Indicator",()=>K,"Root",()=>U,"createCheckboxScope",()=>_,"unstable_BubbleInput",()=>V,"unstable_CheckboxBubbleInput",()=>V,"unstable_CheckboxProvider",()=>z,"unstable_CheckboxTrigger",()=>G,"unstable_Provider",()=>z,"unstable_Trigger",()=>G],57696);var X=e.i(57696),X=X;function Z({className:e,...r}){return(0,t.jsx)(X.Root,{"data-slot":"checkbox",className:(0,x.cn)("peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground data-[state=indeterminate]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 cursor-pointer rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",e),...r,children:(0,t.jsx)(X.Indicator,{"data-slot":"checkbox-indicator",className:"grid place-content-center text-current transition-none",children:"indeterminate"===r.checked?(0,t.jsx)(E,{className:"size-3.5"}):(0,t.jsx)(h.default,{className:"size-3.5"})})})}function J({id:e,label:r,description:a,checked:o,onCheckedChange:s,disabled:n}){return(0,t.jsxs)("div",{className:"flex items-start gap-2",children:[(0,t.jsx)(Z,{id:e,className:"mt-0.75",checked:o,onCheckedChange:e=>s(!0===e),disabled:n}),(0,t.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,t.jsx)(R,{htmlFor:e,className:"cursor-pointer text-sm font-medium",children:r}),a?(0,t.jsx)(R,{htmlFor:e,className:"text-muted-foreground cursor-pointer text-xs font-normal",children:a}):null]})]})}function Q({label:e,description:r,parentAriaLabel:a,options:o,value:s,onValueChange:n,disabled:i}){let l=o.filter(e=>s[e.id]).length,d=l===o.length,c=l>0&&!d,u=`${e.toLowerCase().replace(/\s+/g,"-")}-group`;return(0,t.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,t.jsxs)("div",{className:"flex items-start gap-2",children:[(0,t.jsx)(Z,{id:u,className:"mt-0.75",checked:c?"indeterminate":d,onCheckedChange:()=>{let e=l<o.length,t={};for(let r of o)t[r.id]=e;n(t)},disabled:i,"aria-label":a??`${e} select all`}),(0,t.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,t.jsx)(R,{htmlFor:u,className:"cursor-pointer text-sm font-medium",children:e}),r?(0,t.jsx)(R,{htmlFor:u,className:"text-muted-foreground cursor-pointer text-xs font-normal",children:r}):null]})]}),(0,t.jsx)("div",{className:"flex flex-col gap-3 pl-6",children:o.map(e=>(0,t.jsx)(J,{id:e.id,label:e.label,description:e.description,checked:s[e.id]??!1,onCheckedChange:t=>{var r;return r=e.id,void n({...s,[r]:t})},disabled:i},e.id))})]})}var ee=e.i(81846),et=e.i(53532),er=e.i(41687),ea=e.i(56720),eo=e.i(13123),es=e.i(52740),en=e.i(39979),ei=e.i(86874),el=e.i(73772),ed=e.i(13044),ec="Popover",[eu,ep]=(0,A.createContextScope)(ec,[es.createPopperScope]),ef=(0,es.createPopperScope)(),[em,eh]=eu(ec),ex=e=>{let{__scopePopover:a,children:o,open:s,defaultOpen:n,onOpenChange:i,modal:l=!1}=e,d=ef(a),c=r.useRef(null),[u,p]=r.useState(!1),[f,m]=(0,O.useControllableState)({prop:s,defaultProp:n??!1,onChange:i,caller:ec});return(0,t.jsx)(es.Root,{...d,children:(0,t.jsx)(em,{scope:a,contentId:(0,eo.useId)(),triggerRef:c,open:f,onOpenChange:m,onOpenToggle:r.useCallback(()=>m(e=>!e),[m]),hasCustomAnchor:u,onCustomAnchorAdd:r.useCallback(()=>p(!0),[]),onCustomAnchorRemove:r.useCallback(()=>p(!1),[]),modal:l,children:o})})};ex.displayName=ec;var eg="PopoverAnchor",ev=r.forwardRef((e,a)=>{let{__scopePopover:o,...s}=e,n=eh(eg,o),i=ef(o),{onCustomAnchorAdd:l,onCustomAnchorRemove:d}=n;return r.useEffect(()=>(l(),()=>d()),[l,d]),(0,t.jsx)(es.Anchor,{...i,...s,ref:a})});ev.displayName=eg;var eb="PopoverTrigger",ej=r.forwardRef((e,r)=>{let{__scopePopover:a,...o}=e,s=eh(eb,a),n=ef(a),i=(0,S.useComposedRefs)(r,s.triggerRef),l=(0,t.jsx)(k.Primitive.button,{type:"button","aria-haspopup":"dialog","aria-expanded":s.open,"aria-controls":s.contentId,"data-state":eM(s.open),...o,ref:i,onClick:(0,F.composeEventHandlers)(e.onClick,s.onOpenToggle)});return s.hasCustomAnchor?l:(0,t.jsx)(es.Anchor,{asChild:!0,...n,children:l})});ej.displayName=eb;var ew="PopoverPortal",[eC,ek]=eu(ew,{forceMount:void 0}),ey=e=>{let{__scopePopover:r,forceMount:a,children:o,container:s}=e,n=eh(ew,r);return(0,t.jsx)(eC,{scope:r,forceMount:a,children:(0,t.jsx)(M.Presence,{present:a||n.open,children:(0,t.jsx)(en.Portal,{asChild:!0,container:s,children:o})})})};ey.displayName=ew;var eN="PopoverContent",eP=r.forwardRef((e,r)=>{let a=ek(eN,e.__scopePopover),{forceMount:o=a.forceMount,...s}=e,n=eh(eN,e.__scopePopover);return(0,t.jsx)(M.Presence,{present:o||n.open,children:n.modal?(0,t.jsx)(eE,{...s,ref:r}):(0,t.jsx)(eS,{...s,ref:r})})});eP.displayName=eN;var eR=(0,ei.createSlot)("PopoverContent.RemoveScroll"),eE=r.forwardRef((e,a)=>{let o=eh(eN,e.__scopePopover),s=r.useRef(null),n=(0,S.useComposedRefs)(a,s),i=r.useRef(!1);return r.useEffect(()=>{let e=s.current;if(e)return(0,el.hideOthers)(e)},[]),(0,t.jsx)(ed.RemoveScroll,{as:eR,allowPinchZoom:!0,children:(0,t.jsx)(eA,{...e,ref:n,trapFocus:o.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,F.composeEventHandlers)(e.onCloseAutoFocus,e=>{e.preventDefault(),i.current||o.triggerRef.current?.focus()}),onPointerDownOutside:(0,F.composeEventHandlers)(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,r=0===t.button&&!0===t.ctrlKey;i.current=2===t.button||r},{checkForDefaultPrevented:!1}),onFocusOutside:(0,F.composeEventHandlers)(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1})})})}),eS=r.forwardRef((e,a)=>{let o=eh(eN,e.__scopePopover),s=r.useRef(!1),n=r.useRef(!1);return(0,t.jsx)(eA,{...e,ref:a,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(s.current||o.triggerRef.current?.focus(),t.preventDefault()),s.current=!1,n.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(s.current=!0,"pointerdown"===t.detail.originalEvent.type&&(n.current=!0));let r=t.target;o.triggerRef.current?.contains(r)&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&n.current&&t.preventDefault()}})}),eA=r.forwardRef((e,r)=>{let{__scopePopover:a,trapFocus:o,onOpenAutoFocus:s,onCloseAutoFocus:n,disableOutsidePointerEvents:i,onEscapeKeyDown:l,onPointerDownOutside:d,onFocusOutside:c,onInteractOutside:u,...p}=e,f=eh(eN,a),m=ef(a);return(0,er.useFocusGuards)(),(0,t.jsx)(ea.FocusScope,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:s,onUnmountAutoFocus:n,children:(0,t.jsx)(et.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:i,onInteractOutside:u,onEscapeKeyDown:l,onPointerDownOutside:d,onFocusOutside:c,onDismiss:()=>f.onOpenChange(!1),children:(0,t.jsx)(es.Content,{"data-state":eM(f.open),role:"dialog",id:f.contentId,...m,...p,ref:r,style:{...p.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),eF="PopoverClose",eO=r.forwardRef((e,r)=>{let{__scopePopover:a,...o}=e,s=eh(eF,a);return(0,t.jsx)(k.Primitive.button,{type:"button",...o,ref:r,onClick:(0,F.composeEventHandlers)(e.onClick,()=>s.onOpenChange(!1))})});eO.displayName=eF;var eD=r.forwardRef((e,r)=>{let{__scopePopover:a,...o}=e,s=ef(a);return(0,t.jsx)(es.Arrow,{...s,...o,ref:r})});function eM(e){return e?"open":"closed"}eD.displayName="PopoverArrow",e.s(["Anchor",()=>ev,"Arrow",()=>eD,"Close",()=>eO,"Content",()=>eP,"Popover",()=>ex,"PopoverAnchor",()=>ev,"PopoverArrow",()=>eD,"PopoverClose",()=>eO,"PopoverContent",()=>eP,"PopoverPortal",()=>ey,"PopoverTrigger",()=>ej,"Portal",()=>ey,"Root",()=>ex,"Trigger",()=>ej,"createPopoverScope",()=>ep],89920);var eT=e.i(89920),eT=eT;let eI=eT.Root,e_=eT.Trigger;eT.Anchor;let eB=r.forwardRef(({className:e,align:r="center",sideOffset:a=4,...o},s)=>(0,t.jsx)(eT.Portal,{children:(0,t.jsx)(eT.Content,{ref:s,align:r,sideOffset:a,className:(0,x.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 rounded-md border p-4 shadow-md outline-none",e),...o})}));eB.displayName=eT.Content.displayName;var eL=e.i(30153);async function ez(){let e=await fetch("/api/dialog/pick-files",{method:"POST"});if(!e.ok)throw Error("Failed to open file dialog");let t=await e.json();return t.cancelled?null:t.files}let eH=[{id:"allowPrd",label:"PRD",description:"Auto-approve requirements move to planning."},{id:"allowPlan",label:"Plan",description:"Auto-approve planning move to implementation."},{id:"allowMerge",label:"Merge",description:"Auto-approve merge move to Done."}],eG={allowPrd:!1,allowPlan:!1,allowMerge:!1};function eU({open:e,onClose:a,onSubmit:o,repositoryPath:s,isSubmitting:n=!1,workflowDefaults:l,features:d,initialParentId:c}){let u=(0,g.useSoundAction)("create"),p=l?.approvalGates??eG,f=l?.push??!1,m=l?.openPr??!1,[h,x]=(0,r.useState)(""),[w,k]=(0,r.useState)([]),[y,N]=(0,r.useState)({...p}),[P,E]=(0,r.useState)(f),[S,A]=(0,r.useState)(m),[F,O]=(0,r.useState)(void 0),[D,M]=(0,r.useState)(!1);(0,r.useEffect)(()=>{l&&(N({...l.approvalGates}),E(l.push),A(l.openPr))},[l]),(0,r.useEffect)(()=>{e&&c&&O(c)},[e,c]);let T=(0,r.useCallback)(()=>{x(""),k([]),N({...p}),E(f),A(m),O(void 0),M(!1)},[p,f,m]),I=""!==h.trim()||w.length>0,{attemptClose:_}=(0,eL.useGuardedDrawerClose)({open:e,isDirty:I,onClose:a,onReset:T}),B=(0,r.useCallback)(e=>{e.preventDefault(),h.trim()&&(u.play(),o({description:h.trim(),attachments:w,repositoryPath:s,approvalGates:{allowPrd:y.allowPrd??!1,allowPlan:y.allowPlan??!1,allowMerge:y.allowMerge??!1},push:P||S,openPr:S,fast:D,...F?{parentId:F}:{}}),T())},[h,w,y,s,o,P,S,D,F,u,T]),L=(0,r.useCallback)(async()=>{try{let e=await ez();e&&k(t=>[...t,...e])}catch{}},[]),z=(0,r.useCallback)(e=>{k(t=>t.filter(t=>t.path!==e))},[]),H=d&&d.length>0;return(0,t.jsx)(v.BaseDrawer,{open:e,onClose:_,size:"md",modal:!1,dismissOnOutsideClick:!0,"data-testid":"feature-create-drawer",header:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("div",{className:"h-2.5 w-2.5 shrink-0 rounded-full bg-blue-500"}),(0,t.jsx)(b.DrawerTitle,{children:"NEW FEATURE"})]}),n?(0,t.jsx)(b.DrawerDescription,{asChild:!0,children:(0,t.jsx)("div",{children:(0,t.jsx)(ee.Badge,{variant:"secondary",children:"Creating..."})})}):null]}),footer:(0,t.jsxs)("div",{className:"flex flex-row justify-end gap-2",children:[(0,t.jsx)(j.Button,{variant:"outline",onClick:_,disabled:n,children:"Cancel"}),(0,t.jsx)(j.Button,{type:"submit",form:"create-feature-form",disabled:!h.trim()||n,children:n?"Creating...":"+ Create Feature"})]}),children:(0,t.jsx)("div",{className:"overflow-y-auto p-4",children:(0,t.jsxs)("form",{id:"create-feature-form",onSubmit:B,className:"flex flex-col gap-4",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)(R,{htmlFor:"feature-description",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"DESCRIBE YOUR FEATURE"}),(0,t.jsx)(C,{id:"feature-description",placeholder:"e.g. Add GitHub OAuth login with callback handling and token refresh...",value:h,onChange:e=>x(e.target.value),rows:4,required:!0,disabled:n})]}),H?(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)(R,{htmlFor:"parent-feature",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"PARENT FEATURE"}),(0,t.jsx)(e$,{features:d,value:F,onChange:O,disabled:n})]}):null,(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)(R,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"MODE"}),(0,t.jsx)(J,{id:"fast-mode",label:"Fast Mode",description:"Skip SDLC phases and implement directly from your prompt.",checked:D,onCheckedChange:M,disabled:n})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)(R,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"APPROVE"}),(0,t.jsx)(Q,{label:"Autonomous Mode",description:"YOLO!",parentAriaLabel:"Auto approve all",options:eH,value:y,onValueChange:N,disabled:n})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)(R,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"GIT"}),(0,t.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,t.jsx)(J,{id:"push",label:"Push",description:"Push branch to remote after implementation.",checked:P||S,onCheckedChange:E,disabled:S||n}),(0,t.jsx)(J,{id:"open-pr",label:"Create PR",description:"Open a pull request after pushing.",checked:S,onCheckedChange:A,disabled:n})]})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)(R,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:["ATTACHMENTS",w.length>0&&(0,t.jsxs)("span",{className:"text-muted-foreground/60 ml-1.5",children:["(",w.length,")"]})]}),(0,t.jsxs)(j.Button,{type:"button",variant:"outline",size:"xs",onClick:L,disabled:n,children:[(0,t.jsx)(i.default,{className:"size-3"}),"Add Files"]})]}),w.length>0&&(0,t.jsx)("div",{className:"flex flex-col gap-2",children:w.map(e=>(0,t.jsx)(eK,{file:e,onRemove:()=>z(e.path),disabled:n},e.path))})]})]})})})}function e$({features:e,value:a,onChange:o,disabled:s}){let[n,i]=(0,r.useState)(!1),[l,d]=(0,r.useState)(""),c=(0,r.useRef)(null),u=e.find(e=>e.id===a),p=l.trim()?e.filter(e=>e.name.toLowerCase().includes(l.toLowerCase())||e.id.toLowerCase().includes(l.toLowerCase())):e,f=(0,r.useCallback)(e=>{o(e),i(!1),d("")},[o]);return(0,r.useEffect)(()=>{n?setTimeout(()=>c.current?.focus(),0):d("")},[n]),(0,t.jsxs)(eI,{open:n,onOpenChange:i,children:[(0,t.jsx)(e_,{asChild:!0,children:(0,t.jsxs)("button",{id:"parent-feature",type:"button",role:"combobox","aria-expanded":n,"aria-label":"Parent Feature",disabled:s,"data-testid":"parent-feature-combobox",className:(0,x.cn)("border-input bg-background ring-offset-background focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border px-3 py-2 text-sm focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50",!u&&"text-muted-foreground"),children:[(0,t.jsx)("span",{className:"truncate",children:u?`${u.name} (${u.id.slice(0,8)})`:"Select parent feature..."}),(0,t.jsx)(m,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,t.jsx)(eB,{className:"w-80 p-0",align:"start","data-testid":"parent-feature-combobox-content",children:(0,t.jsxs)("div",{className:"flex flex-col",children:[(0,t.jsx)("div",{className:"border-b p-2",children:(0,t.jsx)(w.Input,{ref:c,placeholder:"Search features...",value:l,onChange:e=>d(e.target.value),className:"h-8 border-0 p-0 text-sm shadow-none focus-visible:ring-0","data-testid":"parent-feature-search"})}),(0,t.jsxs)("div",{className:"max-h-48 overflow-y-auto py-1",role:"listbox","aria-label":"Features",children:[(0,t.jsxs)("button",{type:"button",role:"option","aria-selected":void 0===a,onClick:()=>f(void 0),className:(0,x.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",void 0===a&&"bg-accent/50"),"data-testid":"parent-feature-option-none",children:[(0,t.jsx)(h.default,{className:(0,x.cn)("h-4 w-4 shrink-0",void 0!==a&&"invisible")}),(0,t.jsx)("span",{className:"text-muted-foreground italic",children:"No parent"})]}),0===p.length&&l?(0,t.jsx)("p",{className:"text-muted-foreground px-3 py-2 text-sm",children:"No features found."}):p.map(e=>(0,t.jsxs)("button",{type:"button",role:"option","aria-selected":a===e.id,onClick:()=>f(e.id),className:(0,x.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",a===e.id&&"bg-accent/50"),"data-testid":`parent-feature-option-${e.id}`,children:[(0,t.jsx)(h.default,{className:(0,x.cn)("h-4 w-4 shrink-0",a!==e.id&&"invisible")}),(0,t.jsxs)("span",{className:"truncate",children:[e.name," ",(0,t.jsxs)("span",{className:"text-muted-foreground font-mono text-xs",children:["(",e.id.slice(0,8),")"]})]})]},e.id))]})]})})]})}function eK({file:e,onRemove:r,disabled:a}){var o,s,n;let i,l=(i=(o=e.name).lastIndexOf("."))>=0?o.slice(i).toLowerCase():"",m=(s=l,eq.has(s)?u:".pdf"===s?c.default:eV.has(s)?p:d),h=".pdf"===(n=l)?"bg-red-50 text-red-600":eq.has(n)?"bg-blue-50 text-blue-600":eV.has(n)?"bg-emerald-50 text-emerald-600":"bg-gray-50 text-gray-600";return(0,t.jsxs)("div",{className:"flex items-center gap-3 rounded-md border p-2",children:[(0,t.jsx)("div",{className:(0,x.cn)("flex h-8 w-8 shrink-0 items-center justify-center rounded",h),children:(0,t.jsx)(m,{className:"h-4 w-4"})}),(0,t.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col",children:[(0,t.jsx)("span",{className:"truncate text-sm font-medium",children:e.name}),(0,t.jsx)("span",{className:"text-muted-foreground truncate text-xs",children:e.path}),(0,t.jsx)("span",{className:"text-muted-foreground text-xs",children:function(e){if(0===e)return"0 B";let t=Math.floor(Math.log(e)/Math.log(1024));return`${(e/Math.pow(1024,t)).toFixed(+(0!==t))} ${["B","KB","MB","GB"][t]}`}(e.size)})]}),(0,t.jsx)(j.Button,{type:"button",variant:"ghost",size:"icon-xs",onClick:r,disabled:a,"aria-label":`Remove ${e.name}`,children:(0,t.jsx)(f.default,{className:"h-3 w-3"})})]})}let eq=new Set([".png",".jpg",".jpeg",".gif",".svg",".webp",".ico",".bmp"]),eV=new Set([".ts",".tsx",".js",".jsx",".json",".yaml",".yml",".xml",".html",".css",".md"]);function eW({repositoryPath:e,initialParentId:s,features:i,workflowDefaults:l}){let d=(0,a.useRouter)(),[c,u]=(0,r.useState)(!1),p=(0,a.usePathname)().startsWith("/create"),f=!c&&p;(0,r.useEffect)(()=>{!p&&c&&u(!1)},[p,c]);let m=(0,r.useCallback)(()=>{d.push("/")},[d]),h=(0,r.useCallback)(e=>{u(!0),d.push("/"),n(e).then(t=>{t.error?o.toast.error(t.error):window.dispatchEvent(new CustomEvent("shep:feature-created",{detail:{featureId:t.feature.id,name:t.feature.name,description:t.feature.description,repositoryPath:t.feature.repositoryPath,parentId:e.parentId}}))}).catch(()=>{o.toast.error("Failed to create feature"),u(!1)})},[d]);return(0,t.jsx)(eU,{open:f,onClose:m,onSubmit:h,repositoryPath:e,features:i,workflowDefaults:l,initialParentId:s,isSubmitting:c})}e.s(["CreateDrawerClient",()=>eW],15203)}]);
|
|
File without changes
|
|
File without changes
|
|
File without changes
|