@shepai/cli 1.170.0-pr513.cff27cb → 1.170.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/apis/json-schema/Feature.yaml +5 -17
- package/apis/json-schema/SdlcLifecycle.yaml +0 -1
- package/apis/json-schema/WorkflowConfig.yaml +5 -10
- package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts +2 -2
- 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 +3 -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/agents/approve-agent-run.use-case.js +2 -2
- package/dist/packages/core/src/application/use-cases/agents/reject-agent-run.use-case.js +2 -2
- package/dist/packages/core/src/application/use-cases/features/adopt-branch.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/adopt-branch.use-case.js +2 -3
- package/dist/packages/core/src/application/use-cases/features/check-and-unblock-features.use-case.js +2 -2
- 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 +7 -18
- package/dist/packages/core/src/application/use-cases/features/create/types.d.ts +2 -3
- package/dist/packages/core/src/application/use-cases/features/create/types.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/delete-feature.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/delete-feature.use-case.js +0 -13
- package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.js +2 -2
- package/dist/packages/core/src/application/use-cases/features/start-feature.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/start-feature.use-case.js +3 -5
- package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
- package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +1 -2
- package/dist/packages/core/src/domain/generated/output.d.ts +4 -22
- package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
- package/dist/packages/core/src/domain/generated/output.js +0 -7
- package/dist/packages/core/src/domain/lifecycle-gates.d.ts +6 -21
- package/dist/packages/core/src/domain/lifecycle-gates.d.ts.map +1 -1
- package/dist/packages/core/src/domain/lifecycle-gates.js +6 -25
- package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/di/container.js +0 -5
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts +1 -3
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.js +4 -10
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +1 -2
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +2 -7
- package/dist/packages/core/src/infrastructure/repositories/sqlite-feature.repository.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/repositories/sqlite-feature.repository.js +3 -5
- package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +3 -3
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts +0 -20
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts +0 -68
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts +2 -2
- 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 +3 -3
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts +2 -2
- 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 +8 -19
- 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/agents/feature-agent/nodes/node-helpers.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +0 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.d.ts +0 -4
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.js +0 -17
- 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 +4 -7
- package/dist/src/presentation/cli/commands/feat/index.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/index.js +1 -5
- package/dist/src/presentation/cli/commands/feat/new.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/new.command.js +5 -18
- package/dist/src/presentation/web/app/actions/create-feature.d.ts +2 -3
- package/dist/src/presentation/web/app/actions/create-feature.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/create-feature.js +3 -3
- package/dist/src/presentation/web/app/actions/get-workflow-defaults.d.ts +1 -2
- package/dist/src/presentation/web/app/actions/get-workflow-defaults.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/get-workflow-defaults.js +1 -2
- package/dist/src/presentation/web/app/api/agent-events/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/agent-events/route.js +0 -1
- package/dist/src/presentation/web/app/build-feature-node-data.d.ts.map +1 -1
- package/dist/src/presentation/web/app/build-feature-node-data.js +2 -4
- package/dist/src/presentation/web/app/build-graph-nodes.js +2 -4
- package/dist/src/presentation/web/components/common/control-center-drawer/drawer-view.d.ts +1 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/drawer-view.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/drawer-view.js +0 -3
- package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.js +1 -65
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts +2 -3
- 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 +11 -15
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.js +1 -2
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts +1 -6
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.js +4 -16
- package/dist/src/presentation/web/components/common/feature-node/derive-feature-state.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/derive-feature-state.js +0 -2
- package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts +2 -6
- package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.js +0 -12
- package/dist/src/presentation/web/components/common/feature-node/feature-node.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-node.js +2 -7
- package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/settings-page-client.js +6 -6
- package/dist/src/presentation/web/components/features/settings/workflow-settings-section.stories.js +3 -3
- package/dist/translations/ar/cli.json +0 -24
- package/dist/translations/ar/web.json +2 -6
- package/dist/translations/de/cli.json +0 -24
- package/dist/translations/de/web.json +2 -6
- package/dist/translations/en/cli.json +0 -24
- package/dist/translations/en/web.json +2 -6
- package/dist/translations/es/cli.json +0 -24
- package/dist/translations/es/web.json +2 -6
- package/dist/translations/fr/cli.json +0 -24
- package/dist/translations/fr/web.json +2 -6
- package/dist/translations/he/cli.json +0 -24
- package/dist/translations/he/web.json +2 -6
- package/dist/translations/pt/cli.json +0 -24
- package/dist/translations/pt/web.json +2 -6
- package/dist/translations/ru/cli.json +0 -24
- package/dist/translations/ru/web.json +2 -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/fallback-build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +3 -3
- package/web/.next/required-server-files.json +3 -3
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +76 -121
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +1 -2
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +76 -121
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -2
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +76 -121
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +1 -2
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +76 -121
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -2
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
- 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 +6 -6
- package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
- package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
- package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
- package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -1
- package/web/.next/server/app/features/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/features/page.js.nft.json +1 -1
- package/web/.next/server/app/features/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/settings/page/server-reference-manifest.json +9 -9
- package/web/.next/server/app/settings/page.js.nft.json +1 -1
- package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills/page/server-reference-manifest.json +13 -13
- 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 +11 -11
- 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 +6 -6
- 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/403f9_next_dist_esm_build_templates_app-route_370c43b1.js +1 -1
- package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js.map +1 -1
- package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js +1 -1
- package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js.map +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__c78383b1._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__c78383b1._.js.map +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +3 -3
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__4ed9b909._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__4fb81977._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__4fb81977._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__684a868c._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__684a868c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__69dd3217._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__69dd3217._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7dcd0917._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7dcd0917._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__92ffd5ee._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__92ffd5ee._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b020c17d._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b020c17d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ba7f5873._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ba7f5873._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c1262d08._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c16bf5de._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c16bf5de._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c5e09f6f._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c5e09f6f._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fa525872._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fa525872._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_02e01240._.js +1 -1
- package/web/.next/server/chunks/ssr/_02e01240._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_05c23ad9._.js +1 -1
- package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_0fd635d7._.js → _0d7dd23b._.js} +2 -2
- package/web/.next/server/chunks/ssr/_0d7dd23b._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_16eb4fec._.js +1 -1
- package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_18886033._.js +1 -1
- package/web/.next/server/chunks/ssr/_18886033._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_22e00a14._.js +1 -1
- package/web/.next/server/chunks/ssr/_22e00a14._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_45496654._.js +1 -1
- package/web/.next/server/chunks/ssr/_45496654._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_4cbb7f95._.js +1 -1
- package/web/.next/server/chunks/ssr/_4cbb7f95._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_5119a3df._.js +1 -1
- package/web/.next/server/chunks/ssr/_5119a3df._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
- package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_34d897da._.js → _77ae079a._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_34d897da._.js.map → _77ae079a._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_a5a5901d._.js +1 -1
- package/web/.next/server/chunks/ssr/_a5a5901d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_a963dd3c._.js +3 -0
- package/web/.next/server/chunks/ssr/_a963dd3c._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_ad09f271._.js +1 -1
- package/web/.next/server/chunks/ssr/_ad09f271._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_c3f595c6._.js +1 -1
- package/web/.next/server/chunks/ssr/_c3f595c6._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_cac4abe6._.js → _deabc145._.js} +2 -2
- package/web/.next/server/chunks/ssr/_deabc145._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_df737cce._.js +1 -1
- package/web/.next/server/chunks/ssr/_e3f14907._.js +9 -0
- package/web/.next/server/chunks/ssr/_e3f14907._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_ea9e1556._.js +1 -1
- package/web/.next/server/chunks/ssr/_ea9e1556._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_f1ba9be6._.js +2 -2
- package/web/.next/server/chunks/ssr/_f1ba9be6._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_f33cd07e._.js +2 -2
- package/web/.next/server/chunks/ssr/_f33cd07e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_f8b45233._.js +1 -1
- package/web/.next/server/chunks/ssr/_f8b45233._.js.map +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
- package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_db9fa0c2._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_db9fa0c2._.js.map +1 -1
- package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js +1 -1
- package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js.map +1 -1
- package/web/.next/server/pages/500.html +2 -2
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +202 -310
- package/web/.next/static/chunks/06a86173379e6c51.js +1 -0
- package/web/.next/static/chunks/16ed73f9880b7d63.js +1 -0
- package/web/.next/static/chunks/{e93ae5725b0babeb.js → 2b2f3a70ebd6ac1c.js} +1 -1
- package/web/.next/static/chunks/{37f9543560c58ea6.js → 3d1df5c349d855eb.js} +1 -1
- package/web/.next/static/chunks/{5e20f692bbfcfb94.js → 4559a403ee40dd19.js} +1 -1
- package/web/.next/static/chunks/74e5b5c7950efbc1.js +1 -0
- package/web/.next/static/chunks/{0f30a983f3467cd5.js → 7a6854bb07182777.js} +1 -1
- package/web/.next/static/chunks/{52681a7f14138e48.js → 8e12deeabf6624e9.js} +1 -1
- package/web/.next/static/chunks/9c6f8f49799efd3a.js +1 -0
- package/web/.next/static/chunks/{9a78b4c5dcd28196.js → a3802d6f8677cd04.js} +2 -2
- package/web/.next/static/chunks/{09a25231e5fc1ab8.js → b0a6fce5425f8d3a.js} +1 -1
- package/web/.next/static/chunks/b14085e99b88e7f7.css +1 -0
- package/web/.next/static/chunks/b65e555419a0c664.js +1 -0
- package/web/.next/static/chunks/{478adf5d5156f002.js → c5a0b452afc8fe47.js} +1 -1
- package/web/.next/static/chunks/ca23a8642f750548.js +5 -0
- package/web/.next/static/chunks/{2a9af061f4fbe7f5.js → d5366257d6b9f855.js} +1 -1
- package/web/.next/static/chunks/{fc595d95626ac9bb.js → f29814a72404ea2b.js} +1 -1
- package/web/.next/static/chunks/{0769c695d6b663c7.js → f51250616da82bd2.js} +1 -1
- package/web/.next/static/chunks/{4219ddfde68a6d0b.js → f9da308b3033c57a.js} +1 -1
- package/apis/json-schema/FeatureMode.yaml +0 -8
- package/dist/packages/core/src/application/use-cases/features/promote/promote-exploration.use-case.d.ts +0 -40
- package/dist/packages/core/src/application/use-cases/features/promote/promote-exploration.use-case.d.ts.map +0 -1
- package/dist/packages/core/src/application/use-cases/features/promote/promote-exploration.use-case.js +0 -125
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/051-replace-fast-with-mode.d.ts +0 -19
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/051-replace-fast-with-mode.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/051-replace-fast-with-mode.js +0 -46
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/052-replace-default-fast-mode-with-default-mode.d.ts +0 -17
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/052-replace-default-fast-mode-with-default-mode.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/052-replace-default-fast-mode-with-default-mode.js +0 -37
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-exploration-max-iterations.d.ts +0 -12
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-exploration-max-iterations.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-exploration-max-iterations.js +0 -17
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/exploration-agent-graph.d.ts +0 -362
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/exploration-agent-graph.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/exploration-agent-graph.js +0 -72
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/apply-feedback.node.d.ts +0 -18
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/apply-feedback.node.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/apply-feedback.node.js +0 -52
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/apply-feedback.prompt.d.ts +0 -24
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/apply-feedback.prompt.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/apply-feedback.prompt.js +0 -38
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/prototype-generate.prompt.d.ts +0 -31
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/prototype-generate.prompt.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/prototype-generate.prompt.js +0 -240
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prototype-generate.node.d.ts +0 -21
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prototype-generate.node.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prototype-generate.node.js +0 -134
- package/dist/src/presentation/cli/commands/feat/feedback.command.d.ts +0 -12
- package/dist/src/presentation/cli/commands/feat/feedback.command.d.ts.map +0 -1
- package/dist/src/presentation/cli/commands/feat/feedback.command.js +0 -64
- package/dist/src/presentation/cli/commands/feat/promote.command.d.ts +0 -13
- package/dist/src/presentation/cli/commands/feat/promote.command.d.ts.map +0 -1
- package/dist/src/presentation/cli/commands/feat/promote.command.js +0 -41
- package/dist/src/presentation/web/app/actions/discard-exploration.d.ts +0 -9
- package/dist/src/presentation/web/app/actions/discard-exploration.d.ts.map +0 -1
- package/dist/src/presentation/web/app/actions/discard-exploration.js +0 -29
- package/dist/src/presentation/web/app/actions/promote-exploration.d.ts +0 -11
- package/dist/src/presentation/web/app/actions/promote-exploration.d.ts.map +0 -1
- package/dist/src/presentation/web/app/actions/promote-exploration.js +0 -21
- package/dist/src/presentation/web/app/actions/submit-exploration-feedback.d.ts +0 -12
- package/dist/src/presentation/web/app/actions/submit-exploration-feedback.d.ts.map +0 -1
- package/dist/src/presentation/web/app/actions/submit-exploration-feedback.js +0 -40
- package/dist/src/presentation/web/components/common/feature-create-drawer/mode-selector.d.ts +0 -8
- package/dist/src/presentation/web/components/common/feature-create-drawer/mode-selector.d.ts.map +0 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/mode-selector.js +0 -33
- package/dist/src/presentation/web/components/common/feature-create-drawer/mode-selector.stories.d.ts +0 -10
- package/dist/src/presentation/web/components/common/feature-create-drawer/mode-selector.stories.d.ts.map +0 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/mode-selector.stories.js +0 -33
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/prototype-tab.d.ts +0 -11
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/prototype-tab.d.ts.map +0 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/prototype-tab.js +0 -34
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/prototype-tab.stories.d.ts +0 -16
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/prototype-tab.stories.d.ts.map +0 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/prototype-tab.stories.js +0 -70
- package/dist/src/presentation/web/components/ui/toggle-group.d.ts +0 -10
- package/dist/src/presentation/web/components/ui/toggle-group.d.ts.map +0 -1
- package/dist/src/presentation/web/components/ui/toggle-group.js +0 -22
- package/dist/src/presentation/web/components/ui/toggle.d.ts +0 -10
- package/dist/src/presentation/web/components/ui/toggle.d.ts.map +0 -1
- package/dist/src/presentation/web/components/ui/toggle.js +0 -26
- package/web/.next/server/chunks/ssr/[root-of-the-server]__03c66352._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__03c66352._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__403afc23._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__403afc23._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__df550e85._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__df550e85._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__df5602bf._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__df5602bf._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e9f4767a._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e9f4767a._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_0fd635d7._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_30ddea9d._.js +0 -9
- package/web/.next/server/chunks/ssr/_30ddea9d._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_6e79a2cc._.js +0 -3
- package/web/.next/server/chunks/ssr/_6e79a2cc._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_cac4abe6._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_approve-feature_ts_9453ce8b._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_approve-feature_ts_9453ce8b._.js.map +0 -1
- package/web/.next/static/chunks/2ceebcc839ee0d4b.js +0 -1
- package/web/.next/static/chunks/5743a9c1c63e5261.js +0 -5
- package/web/.next/static/chunks/5cf9745e2ef3837c.js +0 -1
- package/web/.next/static/chunks/c80e8e3d0cf5baa6.css +0 -1
- package/web/.next/static/chunks/d5bf9c963b5346e1.js +0 -1
- package/web/.next/static/chunks/d60cee2e7318f425.js +0 -1
- package/web/.next/static/chunks/da565c85277c2461.js +0 -1
- package/web/.next/static/chunks/fb89cf91c10b2e8b.js +0 -1
- /package/web/.next/static/{G895CgnbZl4YvWN_DaRC- → 0KDwNT3AGQmFGIwjHx99r}/_buildManifest.js +0 -0
- /package/web/.next/static/{G895CgnbZl4YvWN_DaRC- → 0KDwNT3AGQmFGIwjHx99r}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{G895CgnbZl4YvWN_DaRC- → 0KDwNT3AGQmFGIwjHx99r}/_ssgManifest.js +0 -0
|
@@ -1,240 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Prototype-Generate Prompt Builder
|
|
3
|
-
*
|
|
4
|
-
* Builds the prompt for exploration mode prototype generation.
|
|
5
|
-
* Emphasizes quick prototyping, minimal scope, and throwaway quality.
|
|
6
|
-
* Includes iteration context (feedback history) for subsequent rounds.
|
|
7
|
-
*
|
|
8
|
-
* The prompt instructs the executor to produce a working prototype that
|
|
9
|
-
* demonstrates the idea — prioritizing concept demonstration over
|
|
10
|
-
* production quality.
|
|
11
|
-
*/
|
|
12
|
-
import { readFileSync, readdirSync, statSync } from 'node:fs';
|
|
13
|
-
import { join } from 'node:path';
|
|
14
|
-
import yaml from 'js-yaml';
|
|
15
|
-
import { readSpecFile } from '../node-helpers.js';
|
|
16
|
-
/**
|
|
17
|
-
* Read a file from the worktree, returning empty string if not found.
|
|
18
|
-
*/
|
|
19
|
-
function readWorktreeFile(worktreePath, filename) {
|
|
20
|
-
try {
|
|
21
|
-
return readFileSync(join(worktreePath, filename), 'utf-8');
|
|
22
|
-
}
|
|
23
|
-
catch {
|
|
24
|
-
return '';
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Build a shallow directory listing (depth 1-2) of the worktree.
|
|
29
|
-
* Returns a tree-style string. Skips common noise directories.
|
|
30
|
-
*/
|
|
31
|
-
function buildDirectoryListing(worktreePath) {
|
|
32
|
-
const SKIP_DIRS = new Set([
|
|
33
|
-
'node_modules',
|
|
34
|
-
'.git',
|
|
35
|
-
'.next',
|
|
36
|
-
'dist',
|
|
37
|
-
'build',
|
|
38
|
-
'coverage',
|
|
39
|
-
'.turbo',
|
|
40
|
-
'.cache',
|
|
41
|
-
'.shep',
|
|
42
|
-
]);
|
|
43
|
-
const lines = [];
|
|
44
|
-
try {
|
|
45
|
-
const topLevel = readdirSync(worktreePath);
|
|
46
|
-
for (const entry of topLevel) {
|
|
47
|
-
if (SKIP_DIRS.has(entry))
|
|
48
|
-
continue;
|
|
49
|
-
const fullPath = join(worktreePath, entry);
|
|
50
|
-
let isDir = false;
|
|
51
|
-
try {
|
|
52
|
-
isDir = statSync(fullPath).isDirectory();
|
|
53
|
-
}
|
|
54
|
-
catch {
|
|
55
|
-
continue;
|
|
56
|
-
}
|
|
57
|
-
if (isDir) {
|
|
58
|
-
lines.push(`${entry}/`);
|
|
59
|
-
try {
|
|
60
|
-
const children = readdirSync(fullPath);
|
|
61
|
-
for (const child of children) {
|
|
62
|
-
if (SKIP_DIRS.has(child))
|
|
63
|
-
continue;
|
|
64
|
-
const childPath = join(fullPath, child);
|
|
65
|
-
let childIsDir = false;
|
|
66
|
-
try {
|
|
67
|
-
childIsDir = statSync(childPath).isDirectory();
|
|
68
|
-
}
|
|
69
|
-
catch {
|
|
70
|
-
continue;
|
|
71
|
-
}
|
|
72
|
-
lines.push(` ${child}${childIsDir ? '/' : ''}`);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
catch {
|
|
76
|
-
// Cannot read subdirectory — skip
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
lines.push(entry);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
catch {
|
|
85
|
-
return '(unable to list directory)';
|
|
86
|
-
}
|
|
87
|
-
return lines.join('\n');
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Extract the user query from spec.yaml's userQuery field.
|
|
91
|
-
* Falls back to the raw YAML content if parsing fails.
|
|
92
|
-
*/
|
|
93
|
-
function extractUserQuery(specDir) {
|
|
94
|
-
const specContent = readSpecFile(specDir, 'spec.yaml');
|
|
95
|
-
if (!specContent) {
|
|
96
|
-
// For exploration mode, also check feature.yaml for the prompt
|
|
97
|
-
const featureContent = readSpecFile(specDir, 'feature.yaml');
|
|
98
|
-
if (!featureContent)
|
|
99
|
-
return '';
|
|
100
|
-
try {
|
|
101
|
-
const data = yaml.load(featureContent);
|
|
102
|
-
const userQuery = data?.userQuery ?? data?.feature?.description;
|
|
103
|
-
if (typeof userQuery === 'string' && userQuery.trim()) {
|
|
104
|
-
return userQuery.trim();
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
catch {
|
|
108
|
-
// Fall through
|
|
109
|
-
}
|
|
110
|
-
return featureContent;
|
|
111
|
-
}
|
|
112
|
-
try {
|
|
113
|
-
const data = yaml.load(specContent);
|
|
114
|
-
const userQuery = data?.userQuery;
|
|
115
|
-
if (typeof userQuery === 'string' && userQuery.trim()) {
|
|
116
|
-
return userQuery.trim();
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
catch {
|
|
120
|
-
// Fall through to raw content
|
|
121
|
-
}
|
|
122
|
-
return specContent;
|
|
123
|
-
}
|
|
124
|
-
/** Maximum number of recent feedback entries to include in full detail. */
|
|
125
|
-
const MAX_FULL_FEEDBACK_ENTRIES = 3;
|
|
126
|
-
/**
|
|
127
|
-
* Build a feedback history section for the prompt.
|
|
128
|
-
* Recent feedback (last 3) gets full detail; older entries are summarized.
|
|
129
|
-
*/
|
|
130
|
-
export function buildFeedbackHistorySection(feedbackHistory) {
|
|
131
|
-
if (feedbackHistory.length === 0)
|
|
132
|
-
return '';
|
|
133
|
-
const sections = [];
|
|
134
|
-
if (feedbackHistory.length > MAX_FULL_FEEDBACK_ENTRIES) {
|
|
135
|
-
const older = feedbackHistory.slice(0, -MAX_FULL_FEEDBACK_ENTRIES);
|
|
136
|
-
sections.push('### Earlier feedback (summarized)');
|
|
137
|
-
older.forEach((fb, i) => {
|
|
138
|
-
// Truncate each older entry to a single line summary
|
|
139
|
-
const summary = fb.length > 100 ? `${fb.slice(0, 100)}...` : fb;
|
|
140
|
-
sections.push(`- Iteration ${i + 1}: ${summary}`);
|
|
141
|
-
});
|
|
142
|
-
sections.push('');
|
|
143
|
-
}
|
|
144
|
-
const recent = feedbackHistory.slice(-MAX_FULL_FEEDBACK_ENTRIES);
|
|
145
|
-
const startIdx = feedbackHistory.length - recent.length;
|
|
146
|
-
sections.push('### Recent feedback (act on these)');
|
|
147
|
-
recent.forEach((fb, i) => {
|
|
148
|
-
sections.push(`**Iteration ${startIdx + i + 1}:** ${fb}`);
|
|
149
|
-
});
|
|
150
|
-
return `## Feedback History\n\n${sections.join('\n')}`;
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Build the prototype-generate prompt.
|
|
154
|
-
*
|
|
155
|
-
* The prompt includes:
|
|
156
|
-
* 1. Exploration mode instructions (speed over quality)
|
|
157
|
-
* 2. User's idea/query
|
|
158
|
-
* 3. Iteration context (feedback history from prior rounds)
|
|
159
|
-
* 4. CLAUDE.md content (if exists)
|
|
160
|
-
* 5. Shallow directory listing
|
|
161
|
-
*
|
|
162
|
-
* Instructs the executor to produce a quick, working prototype.
|
|
163
|
-
*/
|
|
164
|
-
export function buildPrototypeGeneratePrompt(state) {
|
|
165
|
-
const cwd = state.worktreePath || state.repositoryPath;
|
|
166
|
-
const userQuery = extractUserQuery(state.specDir);
|
|
167
|
-
const iterationCount = state.iterationCount ?? 0;
|
|
168
|
-
const feedbackHistory = state.feedbackHistory ?? [];
|
|
169
|
-
// Read optional context files
|
|
170
|
-
const claudeMd = readWorktreeFile(cwd, 'CLAUDE.md');
|
|
171
|
-
const dirListing = buildDirectoryListing(cwd);
|
|
172
|
-
const isFirstIteration = iterationCount === 0;
|
|
173
|
-
const sections = [];
|
|
174
|
-
// Main instruction
|
|
175
|
-
sections.push(`You are a senior software engineer in EXPLORATION MODE — generating a quick prototype.
|
|
176
|
-
|
|
177
|
-
## Mode: Exploration (Prototype)
|
|
178
|
-
|
|
179
|
-
**Priority: SPEED over quality. Show the concept, don't build for production.**
|
|
180
|
-
|
|
181
|
-
- Generate a working prototype that demonstrates the idea
|
|
182
|
-
- Keep scope minimal — focus on the core concept
|
|
183
|
-
- Skip edge cases, error handling, and production polish
|
|
184
|
-
- Write just enough code to show how the idea would work
|
|
185
|
-
- This is throwaway code — it will be rewritten if the idea is promoted to a real feature`);
|
|
186
|
-
// User request
|
|
187
|
-
if (isFirstIteration) {
|
|
188
|
-
sections.push(`## User's Idea
|
|
189
|
-
|
|
190
|
-
${userQuery}`);
|
|
191
|
-
}
|
|
192
|
-
else {
|
|
193
|
-
sections.push(`## User's Idea (Original)
|
|
194
|
-
|
|
195
|
-
${userQuery}
|
|
196
|
-
|
|
197
|
-
## Current Iteration: ${iterationCount + 1}
|
|
198
|
-
|
|
199
|
-
This is iteration ${iterationCount + 1} of the prototype. Review the feedback below and update the prototype accordingly.`);
|
|
200
|
-
}
|
|
201
|
-
// Feedback history
|
|
202
|
-
const feedbackSection = buildFeedbackHistorySection(feedbackHistory);
|
|
203
|
-
if (feedbackSection) {
|
|
204
|
-
sections.push(feedbackSection);
|
|
205
|
-
}
|
|
206
|
-
// Implementation instructions
|
|
207
|
-
sections.push(`## Implementation Instructions
|
|
208
|
-
|
|
209
|
-
1. ${isFirstIteration ? 'Create' : 'Update'} the prototype based on ${isFirstIteration ? 'the idea above' : 'the feedback above'}
|
|
210
|
-
2. Make the code functional — it should compile and demonstrate the concept
|
|
211
|
-
3. Commit your work with a conventional commit message (e.g. \`feat(domain): prototype workspace grouping\`)
|
|
212
|
-
4. Do NOT write tests — this is a prototype
|
|
213
|
-
5. Do NOT run linters or builds — speed is the priority
|
|
214
|
-
6. Do NOT push to remote
|
|
215
|
-
|
|
216
|
-
## Working Directory
|
|
217
|
-
|
|
218
|
-
${cwd}`);
|
|
219
|
-
if (claudeMd) {
|
|
220
|
-
sections.push(`## Project Guidelines (CLAUDE.md)
|
|
221
|
-
|
|
222
|
-
${claudeMd}`);
|
|
223
|
-
}
|
|
224
|
-
if (dirListing && dirListing !== '(unable to list directory)') {
|
|
225
|
-
sections.push(`## Project Structure
|
|
226
|
-
|
|
227
|
-
\`\`\`
|
|
228
|
-
${dirListing}
|
|
229
|
-
\`\`\``);
|
|
230
|
-
}
|
|
231
|
-
sections.push(`## Constraints
|
|
232
|
-
|
|
233
|
-
- SPEED is the priority — generate a working prototype quickly
|
|
234
|
-
- Keep changes minimal and focused on demonstrating the concept
|
|
235
|
-
- Do NOT modify any spec YAML files
|
|
236
|
-
- Do NOT enter plan mode — implement directly
|
|
237
|
-
- Do NOT ask questions — make reasonable assumptions and proceed
|
|
238
|
-
- You MUST create or modify actual code files — a plan or summary alone is not acceptable`);
|
|
239
|
-
return sections.join('\n\n');
|
|
240
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Prototype-Generate Node
|
|
3
|
-
*
|
|
4
|
-
* Exploration mode node that generates a quick prototype by calling the
|
|
5
|
-
* agent executor with an exploration-focused prompt. After generation,
|
|
6
|
-
* interrupts for user feedback. Uses shared utilities (retryExecute,
|
|
7
|
-
* createNodeLogger) but NOT executeNode() which is coupled to approval gates.
|
|
8
|
-
*
|
|
9
|
-
* Follows the same factory pattern as other nodes: takes executor
|
|
10
|
-
* dependency, returns async (state) => Partial<FeatureAgentState>.
|
|
11
|
-
*/
|
|
12
|
-
import type { IAgentExecutor } from '../../../../../application/ports/output/agents/agent-executor.interface.js';
|
|
13
|
-
import type { FeatureAgentState } from '../state.js';
|
|
14
|
-
/**
|
|
15
|
-
* Factory that creates the prototype-generate node function.
|
|
16
|
-
*
|
|
17
|
-
* @param executor - The agent executor to use for prototype generation
|
|
18
|
-
* @returns A LangGraph node function
|
|
19
|
-
*/
|
|
20
|
-
export declare function createPrototypeGenerateNode(executor: IAgentExecutor): (state: FeatureAgentState) => Promise<Partial<FeatureAgentState>>;
|
|
21
|
-
//# sourceMappingURL=prototype-generate.node.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prototype-generate.node.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/prototype-generate.node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AACpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAOrD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,cAAc,IAGpD,OAAO,iBAAiB,KAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAuH7E"}
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Prototype-Generate Node
|
|
3
|
-
*
|
|
4
|
-
* Exploration mode node that generates a quick prototype by calling the
|
|
5
|
-
* agent executor with an exploration-focused prompt. After generation,
|
|
6
|
-
* interrupts for user feedback. Uses shared utilities (retryExecute,
|
|
7
|
-
* createNodeLogger) but NOT executeNode() which is coupled to approval gates.
|
|
8
|
-
*
|
|
9
|
-
* Follows the same factory pattern as other nodes: takes executor
|
|
10
|
-
* dependency, returns async (state) => Partial<FeatureAgentState>.
|
|
11
|
-
*/
|
|
12
|
-
import { interrupt, isGraphBubbleUp } from '@langchain/langgraph';
|
|
13
|
-
import { createNodeLogger, buildExecutorOptions, retryExecute } from './node-helpers.js';
|
|
14
|
-
import { reportNodeStart } from '../heartbeat.js';
|
|
15
|
-
import { recordPhaseStart, recordPhaseEnd } from '../phase-timing-context.js';
|
|
16
|
-
import { updateNodeLifecycle } from '../lifecycle-context.js';
|
|
17
|
-
import { buildPrototypeGeneratePrompt } from './prompts/prototype-generate.prompt.js';
|
|
18
|
-
/**
|
|
19
|
-
* Factory that creates the prototype-generate node function.
|
|
20
|
-
*
|
|
21
|
-
* @param executor - The agent executor to use for prototype generation
|
|
22
|
-
* @returns A LangGraph node function
|
|
23
|
-
*/
|
|
24
|
-
export function createPrototypeGenerateNode(executor) {
|
|
25
|
-
const log = createNodeLogger('prototype-generate');
|
|
26
|
-
return async (state) => {
|
|
27
|
-
log.activate();
|
|
28
|
-
const iterationCount = state.iterationCount ?? 0;
|
|
29
|
-
const maxIterations = state.maxIterations ?? 10;
|
|
30
|
-
log.info(`Starting prototype generation (iteration ${iterationCount + 1}/${maxIterations})`);
|
|
31
|
-
reportNodeStart('prototype-generate');
|
|
32
|
-
await updateNodeLifecycle('prototype-generate');
|
|
33
|
-
// On resume from interrupt, LangGraph re-executes the node function.
|
|
34
|
-
// If _approvalAction is set, the worker has resumed us with a user action.
|
|
35
|
-
// Return early and let the conditional edge route to apply-feedback or END.
|
|
36
|
-
if (state._approvalAction !== null && state._approvalAction !== undefined) {
|
|
37
|
-
if (state._approvalAction === 'rejected') {
|
|
38
|
-
log.info('Resumed with feedback — routing to apply-feedback');
|
|
39
|
-
return {
|
|
40
|
-
currentNode: 'prototype-generate',
|
|
41
|
-
explorationStatus: 'applying-feedback',
|
|
42
|
-
messages: ['[prototype-generate] Resumed — routing feedback to apply-feedback'],
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
log.info('Resumed with promote/discard — routing to END');
|
|
47
|
-
return {
|
|
48
|
-
currentNode: 'prototype-generate',
|
|
49
|
-
explorationStatus: 'promoting',
|
|
50
|
-
messages: ['[prototype-generate] Resumed — routing to END (promote/discard)'],
|
|
51
|
-
_approvalAction: null,
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
// Check if max iterations reached — force user to promote or discard
|
|
56
|
-
if (iterationCount >= maxIterations) {
|
|
57
|
-
log.info(`Max iterations (${maxIterations}) reached — interrupting for final action`);
|
|
58
|
-
interrupt({
|
|
59
|
-
node: 'prototype-generate',
|
|
60
|
-
message: `Maximum iterations (${maxIterations}) reached. Please promote or discard this exploration.`,
|
|
61
|
-
iterationCount,
|
|
62
|
-
maxIterations,
|
|
63
|
-
forceAction: true,
|
|
64
|
-
});
|
|
65
|
-
// If we get here after resume, the graph router will handle the action
|
|
66
|
-
return {
|
|
67
|
-
currentNode: 'prototype-generate',
|
|
68
|
-
explorationStatus: 'waiting-feedback',
|
|
69
|
-
messages: [
|
|
70
|
-
`[prototype-generate] Max iterations reached (${maxIterations}) — awaiting promote/discard`,
|
|
71
|
-
],
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
const startTime = Date.now();
|
|
75
|
-
const prompt = buildPrototypeGeneratePrompt(state);
|
|
76
|
-
const timingId = await recordPhaseStart('prototype-generate', {
|
|
77
|
-
prompt,
|
|
78
|
-
modelId: state.model,
|
|
79
|
-
agentType: executor.agentType,
|
|
80
|
-
});
|
|
81
|
-
try {
|
|
82
|
-
const options = buildExecutorOptions(state, undefined, 'prototype-generate');
|
|
83
|
-
log.info(`Executing agent at cwd=${options.cwd}`);
|
|
84
|
-
log.info(`Prompt length: ${prompt.length} chars`);
|
|
85
|
-
const result = await retryExecute(executor, prompt, options, { logger: log });
|
|
86
|
-
const durationMs = Date.now() - startTime;
|
|
87
|
-
const elapsed = (durationMs / 1000).toFixed(1);
|
|
88
|
-
log.info(`Prototype generated (${result.result.length} chars, ${elapsed}s)`);
|
|
89
|
-
await recordPhaseEnd(timingId, durationMs, {
|
|
90
|
-
inputTokens: result.usage?.inputTokens,
|
|
91
|
-
outputTokens: result.usage?.outputTokens,
|
|
92
|
-
cacheCreationInputTokens: result.usage?.cacheCreationInputTokens,
|
|
93
|
-
cacheReadInputTokens: result.usage?.cacheReadInputTokens,
|
|
94
|
-
costUsd: result.usage?.costUsd,
|
|
95
|
-
numTurns: result.usage?.numTurns,
|
|
96
|
-
durationApiMs: result.usage?.durationApiMs,
|
|
97
|
-
exitCode: 'success',
|
|
98
|
-
});
|
|
99
|
-
const newIterationCount = iterationCount + 1;
|
|
100
|
-
// Interrupt for user feedback
|
|
101
|
-
log.info(`Interrupting for feedback (iteration ${newIterationCount}/${maxIterations})`);
|
|
102
|
-
interrupt({
|
|
103
|
-
node: 'prototype-generate',
|
|
104
|
-
message: `Prototype iteration ${newIterationCount} complete. Review and provide feedback, promote, or discard.`,
|
|
105
|
-
iterationCount: newIterationCount,
|
|
106
|
-
maxIterations,
|
|
107
|
-
resultSummary: result.result.slice(0, 500),
|
|
108
|
-
});
|
|
109
|
-
// After resume, return the updated state
|
|
110
|
-
return {
|
|
111
|
-
currentNode: 'prototype-generate',
|
|
112
|
-
iterationCount: newIterationCount,
|
|
113
|
-
explorationStatus: 'waiting-feedback',
|
|
114
|
-
messages: [
|
|
115
|
-
`[prototype-generate] Iteration ${newIterationCount} complete (${result.result.length} chars, ${elapsed}s)`,
|
|
116
|
-
],
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
catch (err) {
|
|
120
|
-
if (isGraphBubbleUp(err))
|
|
121
|
-
throw err;
|
|
122
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
123
|
-
const durationMs = Date.now() - startTime;
|
|
124
|
-
const elapsed = (durationMs / 1000).toFixed(1);
|
|
125
|
-
log.error(`${message} (after ${elapsed}s)`);
|
|
126
|
-
await recordPhaseEnd(timingId, durationMs, {
|
|
127
|
-
exitCode: 'error',
|
|
128
|
-
errorMessage: message.slice(0, 1000),
|
|
129
|
-
});
|
|
130
|
-
// Throw so LangGraph does NOT checkpoint this node as "completed"
|
|
131
|
-
throw new Error(`[prototype-generate] ${message}`);
|
|
132
|
-
}
|
|
133
|
-
};
|
|
134
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Feature Feedback Command
|
|
3
|
-
*
|
|
4
|
-
* Sends feedback on an exploration prototype to iterate on the design.
|
|
5
|
-
* Resumes the interrupted exploration agent graph with the provided feedback.
|
|
6
|
-
*
|
|
7
|
-
* Usage:
|
|
8
|
-
* shep feat feedback <id> <feedback-text>
|
|
9
|
-
*/
|
|
10
|
-
import { Command } from 'commander';
|
|
11
|
-
export declare function createFeedbackCommand(): Command;
|
|
12
|
-
//# sourceMappingURL=feedback.command.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"feedback.command.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/feat/feedback.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,qBAAqB,IAAI,OAAO,CA+D/C"}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Feature Feedback Command
|
|
3
|
-
*
|
|
4
|
-
* Sends feedback on an exploration prototype to iterate on the design.
|
|
5
|
-
* Resumes the interrupted exploration agent graph with the provided feedback.
|
|
6
|
-
*
|
|
7
|
-
* Usage:
|
|
8
|
-
* shep feat feedback <id> <feedback-text>
|
|
9
|
-
*/
|
|
10
|
-
import { Command } from 'commander';
|
|
11
|
-
import { container } from '../../../../../packages/core/src/infrastructure/di/container.js';
|
|
12
|
-
import { RejectAgentRunUseCase } from '../../../../../packages/core/src/application/use-cases/agents/reject-agent-run.use-case.js';
|
|
13
|
-
import { FeatureMode, SdlcLifecycle } from '../../../../../packages/core/src/domain/generated/output.js';
|
|
14
|
-
import { colors, messages } from '../../ui/index.js';
|
|
15
|
-
import { getCliI18n } from '../../i18n.js';
|
|
16
|
-
export function createFeedbackCommand() {
|
|
17
|
-
const t = getCliI18n().t;
|
|
18
|
-
return new Command('feedback')
|
|
19
|
-
.description(t('cli:commands.feat.feedback.description'))
|
|
20
|
-
.argument('<id>', t('cli:commands.feat.feedback.idArgument'))
|
|
21
|
-
.argument('<feedback>', t('cli:commands.feat.feedback.feedbackArgument'))
|
|
22
|
-
.action(async (featureId, feedback) => {
|
|
23
|
-
try {
|
|
24
|
-
const featureRepo = container.resolve('IFeatureRepository');
|
|
25
|
-
const runRepo = container.resolve('IAgentRunRepository');
|
|
26
|
-
const feature = (await featureRepo.findById(featureId)) ?? (await featureRepo.findByIdPrefix(featureId));
|
|
27
|
-
if (!feature) {
|
|
28
|
-
throw new Error(`Feature not found: ${featureId}`);
|
|
29
|
-
}
|
|
30
|
-
if (feature.mode !== FeatureMode.Exploration ||
|
|
31
|
-
feature.lifecycle !== SdlcLifecycle.Exploring) {
|
|
32
|
-
messages.error(t('cli:commands.feat.feedback.notExploration', {
|
|
33
|
-
name: feature.name,
|
|
34
|
-
mode: feature.mode,
|
|
35
|
-
lifecycle: feature.lifecycle,
|
|
36
|
-
}));
|
|
37
|
-
process.exitCode = 1;
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
if (!feature.agentRunId) {
|
|
41
|
-
throw new Error(`Feature "${feature.name}" has no agent run`);
|
|
42
|
-
}
|
|
43
|
-
const run = await runRepo.findById(feature.agentRunId);
|
|
44
|
-
if (!run) {
|
|
45
|
-
throw new Error(`Agent run not found: ${feature.agentRunId}`);
|
|
46
|
-
}
|
|
47
|
-
const rejectUseCase = container.resolve(RejectAgentRunUseCase);
|
|
48
|
-
const result = await rejectUseCase.execute(run.id, feedback);
|
|
49
|
-
if (!result.rejected) {
|
|
50
|
-
throw new Error(result.reason);
|
|
51
|
-
}
|
|
52
|
-
messages.newline();
|
|
53
|
-
messages.success(t('cli:commands.feat.feedback.feedbackSubmitted', { name: feature.name }));
|
|
54
|
-
console.log(` ${colors.muted(t('cli:commands.feat.feedback.iterationLabel'))} ${result.iteration}`);
|
|
55
|
-
console.log(` ${colors.muted(t('cli:commands.feat.feedback.agentLabel'))} ${t('cli:commands.feat.feedback.agentIterating')}`);
|
|
56
|
-
messages.newline();
|
|
57
|
-
}
|
|
58
|
-
catch (error) {
|
|
59
|
-
const err = error instanceof Error ? error : new Error(String(error));
|
|
60
|
-
messages.error(t('cli:commands.feat.feedback.failedToSubmit'), err);
|
|
61
|
-
process.exitCode = 1;
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Feature Promote Command
|
|
3
|
-
*
|
|
4
|
-
* Promotes an exploration feature to Regular or Fast mode via
|
|
5
|
-
* in-place mode transition using PromoteExplorationUseCase.
|
|
6
|
-
*
|
|
7
|
-
* Usage:
|
|
8
|
-
* shep feat promote <id> # Promote to Regular mode
|
|
9
|
-
* shep feat promote <id> --fast # Promote to Fast mode
|
|
10
|
-
*/
|
|
11
|
-
import { Command } from 'commander';
|
|
12
|
-
export declare function createPromoteCommand(): Command;
|
|
13
|
-
//# sourceMappingURL=promote.command.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"promote.command.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/feat/promote.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,wBAAgB,oBAAoB,IAAI,OAAO,CAiC9C"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Feature Promote Command
|
|
3
|
-
*
|
|
4
|
-
* Promotes an exploration feature to Regular or Fast mode via
|
|
5
|
-
* in-place mode transition using PromoteExplorationUseCase.
|
|
6
|
-
*
|
|
7
|
-
* Usage:
|
|
8
|
-
* shep feat promote <id> # Promote to Regular mode
|
|
9
|
-
* shep feat promote <id> --fast # Promote to Fast mode
|
|
10
|
-
*/
|
|
11
|
-
import { Command } from 'commander';
|
|
12
|
-
import { container } from '../../../../../packages/core/src/infrastructure/di/container.js';
|
|
13
|
-
import { PromoteExplorationUseCase } from '../../../../../packages/core/src/application/use-cases/features/promote/promote-exploration.use-case.js';
|
|
14
|
-
import { FeatureMode } from '../../../../../packages/core/src/domain/generated/output.js';
|
|
15
|
-
import { colors, messages, spinner } from '../../ui/index.js';
|
|
16
|
-
import { getCliI18n } from '../../i18n.js';
|
|
17
|
-
export function createPromoteCommand() {
|
|
18
|
-
const t = getCliI18n().t;
|
|
19
|
-
return new Command('promote')
|
|
20
|
-
.description(t('cli:commands.feat.promote.description'))
|
|
21
|
-
.argument('<id>', t('cli:commands.feat.promote.idArgument'))
|
|
22
|
-
.option('--fast', t('cli:commands.feat.promote.fastOption'))
|
|
23
|
-
.action(async (featureId, options) => {
|
|
24
|
-
try {
|
|
25
|
-
const targetMode = options.fast ? FeatureMode.Fast : FeatureMode.Regular;
|
|
26
|
-
const useCase = container.resolve(PromoteExplorationUseCase);
|
|
27
|
-
const { feature } = await spinner(t('cli:commands.feat.promote.description'), () => useCase.execute({ featureId, targetMode }));
|
|
28
|
-
messages.newline();
|
|
29
|
-
messages.success(t('cli:commands.feat.promote.promoted', { name: feature.name }));
|
|
30
|
-
console.log(` ${colors.muted(t('cli:commands.feat.promote.modeLabel'))} ${feature.mode}`);
|
|
31
|
-
console.log(` ${colors.muted(t('cli:commands.feat.promote.statusLabel'))} ${feature.lifecycle}`);
|
|
32
|
-
console.log(` ${colors.muted(t('cli:commands.feat.promote.agentLabel'))} ${t('cli:commands.feat.promote.agentSpawned', { mode: targetMode })}`);
|
|
33
|
-
messages.newline();
|
|
34
|
-
}
|
|
35
|
-
catch (error) {
|
|
36
|
-
const err = error instanceof Error ? error : new Error(String(error));
|
|
37
|
-
messages.error(t('cli:commands.feat.promote.failedToPromote'), err);
|
|
38
|
-
process.exitCode = 1;
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Discard an exploration feature, cleaning up the worktree and branch.
|
|
3
|
-
* Validates the feature is in exploration mode before deleting.
|
|
4
|
-
*/
|
|
5
|
-
export declare function discardExploration(featureId: string): Promise<{
|
|
6
|
-
discarded: boolean;
|
|
7
|
-
error?: string;
|
|
8
|
-
}>;
|
|
9
|
-
//# sourceMappingURL=discard-exploration.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"discard-exploration.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/discard-exploration.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAwBjD"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
'use server';
|
|
2
|
-
import { resolve } from '../../lib/server-container.js';
|
|
3
|
-
import { FeatureMode } from '../../../../../packages/core/src/domain/generated/output.js';
|
|
4
|
-
/**
|
|
5
|
-
* Discard an exploration feature, cleaning up the worktree and branch.
|
|
6
|
-
* Validates the feature is in exploration mode before deleting.
|
|
7
|
-
*/
|
|
8
|
-
export async function discardExploration(featureId) {
|
|
9
|
-
if (!featureId.trim()) {
|
|
10
|
-
return { discarded: false, error: 'Feature id is required' };
|
|
11
|
-
}
|
|
12
|
-
try {
|
|
13
|
-
const featureRepo = resolve('IFeatureRepository');
|
|
14
|
-
const feature = await featureRepo.findById(featureId);
|
|
15
|
-
if (!feature) {
|
|
16
|
-
return { discarded: false, error: 'Feature not found' };
|
|
17
|
-
}
|
|
18
|
-
if (feature.mode !== FeatureMode.Exploration) {
|
|
19
|
-
return { discarded: false, error: 'Feature is not in exploration mode' };
|
|
20
|
-
}
|
|
21
|
-
const deleteUseCase = resolve('DeleteFeatureUseCase');
|
|
22
|
-
await deleteUseCase.execute(featureId, { cleanup: true });
|
|
23
|
-
return { discarded: true };
|
|
24
|
-
}
|
|
25
|
-
catch (error) {
|
|
26
|
-
const message = error instanceof Error ? error.message : 'Failed to discard exploration';
|
|
27
|
-
return { discarded: false, error: message };
|
|
28
|
-
}
|
|
29
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { Feature, FeatureMode } from '../../../../../packages/core/src/domain/generated/output.js';
|
|
2
|
-
/**
|
|
3
|
-
* Promote an exploration feature to Regular or Fast mode.
|
|
4
|
-
* Transitions the feature from Exploring lifecycle to the appropriate
|
|
5
|
-
* starting state and spawns the new agent graph.
|
|
6
|
-
*/
|
|
7
|
-
export declare function promoteExploration(featureId: string, targetMode: FeatureMode.Regular | FeatureMode.Fast): Promise<{
|
|
8
|
-
feature?: Feature;
|
|
9
|
-
error?: string;
|
|
10
|
-
}>;
|
|
11
|
-
//# sourceMappingURL=promote-exploration.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"promote-exploration.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/promote-exploration.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAEjF;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,IAAI,GACjD,OAAO,CAAC;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAahD"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
'use server';
|
|
2
|
-
import { resolve } from '../../lib/server-container.js';
|
|
3
|
-
/**
|
|
4
|
-
* Promote an exploration feature to Regular or Fast mode.
|
|
5
|
-
* Transitions the feature from Exploring lifecycle to the appropriate
|
|
6
|
-
* starting state and spawns the new agent graph.
|
|
7
|
-
*/
|
|
8
|
-
export async function promoteExploration(featureId, targetMode) {
|
|
9
|
-
if (!featureId.trim()) {
|
|
10
|
-
return { error: 'Feature id is required' };
|
|
11
|
-
}
|
|
12
|
-
try {
|
|
13
|
-
const useCase = resolve('PromoteExplorationUseCase');
|
|
14
|
-
const result = await useCase.execute({ featureId, targetMode });
|
|
15
|
-
return { feature: result.feature };
|
|
16
|
-
}
|
|
17
|
-
catch (error) {
|
|
18
|
-
const message = error instanceof Error ? error.message : 'Failed to promote exploration';
|
|
19
|
-
return { error: message };
|
|
20
|
-
}
|
|
21
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Submit feedback on an exploration prototype. This resumes the exploration
|
|
3
|
-
* graph with the feedback text, triggering the next iteration. Internally
|
|
4
|
-
* uses the RejectAgentRunUseCase since exploration feedback follows the
|
|
5
|
-
* same interrupt/resume mechanism as approval gate rejections.
|
|
6
|
-
*/
|
|
7
|
-
export declare function submitExplorationFeedback(featureId: string, feedback: string): Promise<{
|
|
8
|
-
submitted: boolean;
|
|
9
|
-
iteration?: number;
|
|
10
|
-
error?: string;
|
|
11
|
-
}>;
|
|
12
|
-
//# sourceMappingURL=submit-exploration-feedback.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"submit-exploration-feedback.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/submit-exploration-feedback.ts"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAqCrE"}
|