@shepai/cli 1.119.0 → 1.120.0-pr375.33a59f9
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/use-cases/features/resume-feature.use-case.d.ts +3 -1
- package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.js +4 -2
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.js +13 -1
- package/dist/src/presentation/web/app/actions/approve-feature.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/approve-feature.js +9 -0
- package/dist/src/presentation/web/app/actions/reject-feature.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/reject-feature.js +9 -0
- package/dist/src/presentation/web/components/layouts/app-shell/app-shell.d.ts.map +1 -1
- package/dist/src/presentation/web/components/layouts/app-shell/app-shell.js +8 -3
- 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/create/page/server-reference-manifest.json +21 -21
- 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 +27 -27
- 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 +27 -27
- 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 +19 -19
- 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 +21 -21
- 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 +27 -27
- 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 +27 -27
- 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 +19 -19
- 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 +19 -19
- 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/settings/page/server-reference-manifest.json +6 -6
- 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 +6 -6
- 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_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/[root-of-the-server]__a402b567._.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_ed372306.js +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_ed372306.js.map +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_32e26434.js +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_32e26434.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__06fef644._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__3b14e5a0._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__3b14e5a0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__545792ab._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__545792ab._.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]__6bb00d90._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__8b59c03e._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__8b59c03e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__8c553503._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__994ad9fe._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__994ad9fe._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a022445f._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a7de2711._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c9c1cfee._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c9c1cfee._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_135edb9c._.js +1 -1
- package/web/.next/server/chunks/ssr/_135edb9c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_2f6f48b8._.js +1 -1
- package/web/.next/server/chunks/ssr/_2f6f48b8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_aeb74a70._.js → _336de097._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_aeb74a70._.js.map → _336de097._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_ab069e13._.js +1 -1
- package/web/.next/server/chunks/ssr/_ab069e13._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_cc77a143._.js +1 -1
- package/web/.next/server/chunks/ssr/_cc77a143._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_d4434170._.js +3 -0
- package/web/.next/server/chunks/ssr/{_59ae996e._.js.map → _d4434170._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{_bed4bbb9._.js → _db02ed22._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_bed4bbb9._.js.map → _db02ed22._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_0835b28e._.js +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_0835b28e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_e99d78dd.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_e99d78dd.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_bf50c527._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_de814675._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_e8034a29._.js +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_e8034a29._.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 +33 -33
- package/web/.next/static/chunks/{7c57a9143e66868c.js → 300e8e9e5b895491.js} +1 -1
- package/web/.next/static/chunks/3d7dcc23fb3a0794.js +2 -0
- package/web/.next/static/chunks/{2b35632c1b784fae.js → 4ec0f46f478fc555.js} +1 -1
- package/web/.next/static/chunks/{1c5310cfde612b81.js → 578c4ec540731c6c.js} +1 -1
- package/web/.next/static/chunks/{69c6d3ba1606e98d.js → 5a152f713b67a1f9.js} +1 -1
- package/web/.next/static/chunks/{f3c4a7bb76c69b01.js → 5e05da73246f2332.js} +1 -1
- package/web/.next/static/chunks/{619af41a8d3232e5.js → 71161130b2462279.js} +1 -1
- package/web/.next/static/chunks/{30097f88cdf8fad8.js → 87dc022b2f29dde6.js} +1 -1
- package/web/.next/static/chunks/{c4477c532d2081e8.js → 91c3dcfa4edac343.js} +1 -1
- package/web/.next/static/chunks/{c1a6934d2281c088.js → ac91403380104d17.js} +1 -1
- package/web/.next/static/chunks/{ed113fb744f2e4d8.js → ed470010824ea6b3.js} +1 -1
- package/web/.next/server/chunks/ssr/_59ae996e._.js +0 -3
- package/web/.next/static/chunks/3678617c34576e18.js +0 -2
- /package/web/.next/static/{qmHUdyRBvaVksgjcL6w-m → AibFEAgKinepn_JE-WVCd}/_buildManifest.js +0 -0
- /package/web/.next/static/{qmHUdyRBvaVksgjcL6w-m → AibFEAgKinepn_JE-WVCd}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{qmHUdyRBvaVksgjcL6w-m → AibFEAgKinepn_JE-WVCd}/_ssgManifest.js +0 -0
|
@@ -19,6 +19,8 @@ export declare class ResumeFeatureUseCase {
|
|
|
19
19
|
private readonly processService;
|
|
20
20
|
private readonly worktreeService;
|
|
21
21
|
constructor(featureRepo: IFeatureRepository, runRepo: IAgentRunRepository, processService: IFeatureAgentProcessService, worktreeService: IWorktreeService);
|
|
22
|
-
execute(featureId: string
|
|
22
|
+
execute(featureId: string, options?: {
|
|
23
|
+
promptPrefix?: string;
|
|
24
|
+
}): Promise<ResumeFeatureResult>;
|
|
23
25
|
}
|
|
24
26
|
//# sourceMappingURL=resume-feature.use-case.d.ts.map
|
package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resume-feature.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/features/resume-feature.use-case.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAE7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AAC1G,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6DAA6D,CAAC;AACvG,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8DAA8D,CAAC;AAChH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAQlG,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,QAAQ,CAAC;CAClB;AAED,qBACa,oBAAoB;IAG7B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAExB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,eAAe;gBANf,WAAW,EAAE,kBAAkB,EAE/B,OAAO,EAAE,mBAAmB,EAE5B,cAAc,EAAE,2BAA2B,EAE3C,eAAe,EAAE,gBAAgB;IAG9C,OAAO,
|
|
1
|
+
{"version":3,"file":"resume-feature.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/features/resume-feature.use-case.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAE7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AAC1G,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6DAA6D,CAAC;AACvG,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8DAA8D,CAAC;AAChH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAQlG,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,QAAQ,CAAC;CAClB;AAED,qBACa,oBAAoB;IAG7B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAExB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,eAAe;gBANf,WAAW,EAAE,kBAAkB,EAE/B,OAAO,EAAE,mBAAmB,EAE5B,cAAc,EAAE,2BAA2B,EAE3C,eAAe,EAAE,gBAAgB;IAG9C,OAAO,CACX,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAClC,OAAO,CAAC,mBAAmB,CAAC;CAuGhC"}
|
|
@@ -35,7 +35,7 @@ let ResumeFeatureUseCase = class ResumeFeatureUseCase {
|
|
|
35
35
|
this.processService = processService;
|
|
36
36
|
this.worktreeService = worktreeService;
|
|
37
37
|
}
|
|
38
|
-
async execute(featureId) {
|
|
38
|
+
async execute(featureId, options) {
|
|
39
39
|
// Resolve feature by exact ID or prefix
|
|
40
40
|
const feature = (await this.featureRepo.findById(featureId)) ??
|
|
41
41
|
(await this.featureRepo.findByIdPrefix(featureId));
|
|
@@ -79,7 +79,9 @@ let ResumeFeatureUseCase = class ResumeFeatureUseCase {
|
|
|
79
79
|
agentType: lastRun.agentType,
|
|
80
80
|
agentName: lastRun.agentName,
|
|
81
81
|
status: AgentRunStatus.pending,
|
|
82
|
-
prompt:
|
|
82
|
+
prompt: options?.promptPrefix
|
|
83
|
+
? `${options.promptPrefix}\n\n${lastRun.prompt}`
|
|
84
|
+
: lastRun.prompt,
|
|
83
85
|
threadId: lastRun.threadId, // Same thread for checkpoint continuity
|
|
84
86
|
featureId: feature.id,
|
|
85
87
|
repositoryPath: feature.repositoryPath,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fast-implement.node.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAEpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"fast-implement.node.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAEpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAgBrD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,cAAc,IAGhD,OAAO,iBAAiB,KAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAkE7E"}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
import { mkdirSync, writeFileSync } from 'node:fs';
|
|
13
13
|
import { join, dirname } from 'node:path';
|
|
14
14
|
import { isGraphBubbleUp } from '@langchain/langgraph';
|
|
15
|
-
import { createNodeLogger, buildExecutorOptions, retryExecute } from './node-helpers.js';
|
|
15
|
+
import { createNodeLogger, buildExecutorOptions, retryExecute, getCompletedPhases, markPhaseComplete, } from './node-helpers.js';
|
|
16
16
|
import { reportNodeStart } from '../heartbeat.js';
|
|
17
17
|
import { recordPhaseStart, recordPhaseEnd } from '../phase-timing-context.js';
|
|
18
18
|
import { updateNodeLifecycle } from '../lifecycle-context.js';
|
|
@@ -33,6 +33,16 @@ export function createFastImplementNode(executor) {
|
|
|
33
33
|
log.info('Starting fast implementation');
|
|
34
34
|
reportNodeStart('fast-implement');
|
|
35
35
|
await updateNodeLifecycle('fast-implement');
|
|
36
|
+
// Skip if already completed (resume from error path)
|
|
37
|
+
const completedPhases = getCompletedPhases(state.specDir);
|
|
38
|
+
if (completedPhases.includes('fast-implement')) {
|
|
39
|
+
log.info('Phase already completed, skipping execution');
|
|
40
|
+
return {
|
|
41
|
+
currentNode: 'fast-implement',
|
|
42
|
+
messages: ['[fast-implement] already completed — skipping'],
|
|
43
|
+
_needsReexecution: false,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
36
46
|
const startTime = Date.now();
|
|
37
47
|
const timingId = await recordPhaseStart('fast-implement');
|
|
38
48
|
try {
|
|
@@ -51,6 +61,8 @@ export function createFastImplementNode(executor) {
|
|
|
51
61
|
log.info('Evidence collection disabled via settings — skipping');
|
|
52
62
|
}
|
|
53
63
|
await recordPhaseEnd(timingId, durationMs);
|
|
64
|
+
// Mark phase complete so resume from error skips re-execution
|
|
65
|
+
markPhaseComplete(state.specDir, 'fast-implement', log);
|
|
54
66
|
return {
|
|
55
67
|
currentNode: 'fast-implement',
|
|
56
68
|
evidence,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approve-feature.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/approve-feature.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"approve-feature.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/approve-feature.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAK/E,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAsChD"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
'use server';
|
|
2
2
|
import { resolve } from '../../lib/server-container.js';
|
|
3
|
+
import { AgentRunStatus } from '../../../../../packages/core/src/domain/generated/output.js';
|
|
4
|
+
const ERROR_STATUSES = new Set([AgentRunStatus.failed, AgentRunStatus.interrupted]);
|
|
3
5
|
export async function approveFeature(featureId, payload) {
|
|
4
6
|
if (!featureId.trim()) {
|
|
5
7
|
return { approved: false, error: 'Feature id is required' };
|
|
@@ -13,6 +15,13 @@ export async function approveFeature(featureId, payload) {
|
|
|
13
15
|
if (!feature.agentRunId) {
|
|
14
16
|
return { approved: false, error: 'Feature has no agent run' };
|
|
15
17
|
}
|
|
18
|
+
const runRepo = resolve('IAgentRunRepository');
|
|
19
|
+
const run = await runRepo.findById(feature.agentRunId);
|
|
20
|
+
if (run && ERROR_STATUSES.has(run.status)) {
|
|
21
|
+
const resumeUseCase = resolve('ResumeFeatureUseCase');
|
|
22
|
+
await resumeUseCase.execute(featureId, { promptPrefix: 'User approved. Please continue.' });
|
|
23
|
+
return { approved: true };
|
|
24
|
+
}
|
|
16
25
|
const approveUseCase = resolve('ApproveAgentRunUseCase');
|
|
17
26
|
const result = await approveUseCase.execute(feature.agentRunId, payload);
|
|
18
27
|
if (!result.approved) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reject-feature.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/reject-feature.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reject-feature.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/reject-feature.ts"],"names":[],"mappings":"AAWA,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,EAAE,GACrB,OAAO,CAAC;IACT,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CA8CD"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
'use server';
|
|
2
2
|
import { resolve } from '../../lib/server-container.js';
|
|
3
|
+
import { AgentRunStatus } from '../../../../../packages/core/src/domain/generated/output.js';
|
|
4
|
+
const ERROR_STATUSES = new Set([AgentRunStatus.failed, AgentRunStatus.interrupted]);
|
|
3
5
|
export async function rejectFeature(featureId, feedback, attachments) {
|
|
4
6
|
if (!featureId.trim()) {
|
|
5
7
|
return { rejected: false, error: 'Feature id is required' };
|
|
@@ -16,6 +18,13 @@ export async function rejectFeature(featureId, feedback, attachments) {
|
|
|
16
18
|
if (!feature.agentRunId) {
|
|
17
19
|
return { rejected: false, error: 'Feature has no agent run' };
|
|
18
20
|
}
|
|
21
|
+
const runRepo = resolve('IAgentRunRepository');
|
|
22
|
+
const run = await runRepo.findById(feature.agentRunId);
|
|
23
|
+
if (run && ERROR_STATUSES.has(run.status)) {
|
|
24
|
+
const resumeUseCase = resolve('ResumeFeatureUseCase');
|
|
25
|
+
await resumeUseCase.execute(featureId, { promptPrefix: feedback });
|
|
26
|
+
return { rejected: true, iteration: 1 };
|
|
27
|
+
}
|
|
19
28
|
const rejectUseCase = resolve('RejectAgentRunUseCase');
|
|
20
29
|
const result = await rejectUseCase.execute(feature.agentRunId, feedback, attachments);
|
|
21
30
|
if (!result.rejected) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-shell.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/layouts/app-shell/app-shell.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAkC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAsBvE,UAAU,aAAa;IACrB,QAAQ,EAAE,SAAS,CAAC;CACrB;
|
|
1
|
+
{"version":3,"file":"app-shell.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/layouts/app-shell/app-shell.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAkC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAsBvE,UAAU,aAAa;IACrB,QAAQ,EAAE,SAAS,CAAC;CACrB;AA0FD,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE,aAAa,2CAUnD"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { useCallback, useMemo, useState } from 'react';
|
|
4
|
-
import { useRouter } from 'next/navigation';
|
|
4
|
+
import { useRouter, usePathname } from 'next/navigation';
|
|
5
5
|
import { Plus, FolderPlus } from 'lucide-react';
|
|
6
6
|
import { SidebarProvider, SidebarInset } from '../../ui/sidebar.js';
|
|
7
7
|
import { AppSidebar } from '../../layouts/app-sidebar/index.js';
|
|
@@ -14,9 +14,14 @@ import { DrawerCloseGuardProvider, useDrawerCloseGuard } from '../../../hooks/dr
|
|
|
14
14
|
import { SidebarFeaturesProvider, useSidebarFeaturesContext, } from '../../../hooks/sidebar-features-context.js';
|
|
15
15
|
import { useNotifications } from '../../../hooks/use-notifications.js';
|
|
16
16
|
import { useFeatureFlags } from '../../../hooks/feature-flags-context.js';
|
|
17
|
-
/**
|
|
17
|
+
/** Control center route prefixes where the FAB should be visible. */
|
|
18
|
+
const CONTROL_CENTER_PREFIXES = ['/', '/create', '/feature', '/repository'];
|
|
19
|
+
function isControlCenterRoute(pathname) {
|
|
20
|
+
return CONTROL_CENTER_PREFIXES.some((prefix) => pathname === prefix || (prefix !== '/' && pathname.startsWith(`${prefix}/`)));
|
|
21
|
+
}
|
|
18
22
|
function AppShellInner({ children }) {
|
|
19
23
|
const router = useRouter();
|
|
24
|
+
const pathname = usePathname();
|
|
20
25
|
const { guardedNavigate } = useDrawerCloseGuard();
|
|
21
26
|
const featureFlags = useFeatureFlags();
|
|
22
27
|
// Subscribe to agent lifecycle events and dispatch toast/browser notifications
|
|
@@ -58,7 +63,7 @@ function AppShellInner({ children }) {
|
|
|
58
63
|
loading: addingRepo,
|
|
59
64
|
},
|
|
60
65
|
], [handleNewFeature, handleAddRepository, addingRepo]);
|
|
61
|
-
return (_jsxs(SidebarProvider, { defaultOpen: false, children: [_jsx(AppSidebar, { features: features, featureFlags: featureFlags, onFeatureClick: handleFeatureClick }), _jsx(SidebarInset, { children: _jsxs("div", { className: "relative h-full", children: [_jsxs("div", { className: "absolute top-3 right-3 z-50 flex gap-1", "data-test-id": "canvas-actions-toolbar", children: [_jsx(SoundToggle, {}), _jsx(ThemeToggle, {})] }), _jsx("main", { className: "h-full", children: children }), _jsx(FloatingActionButton, { actions: fabActions })] }) })] }));
|
|
66
|
+
return (_jsxs(SidebarProvider, { defaultOpen: false, children: [_jsx(AppSidebar, { features: features, featureFlags: featureFlags, onFeatureClick: handleFeatureClick }), _jsx(SidebarInset, { children: _jsxs("div", { className: "relative h-full", children: [_jsxs("div", { className: "absolute top-3 right-3 z-50 flex gap-1", "data-test-id": "canvas-actions-toolbar", children: [_jsx(SoundToggle, {}), _jsx(ThemeToggle, {})] }), _jsx("main", { className: "h-full", children: children }), isControlCenterRoute(pathname) && _jsx(FloatingActionButton, { actions: fabActions })] }) })] }));
|
|
62
67
|
}
|
|
63
68
|
export function AppShell({ children }) {
|
|
64
69
|
return (_jsx(AgentEventsProvider, { children: _jsx(DrawerCloseGuardProvider, { children: _jsx(SidebarFeaturesProvider, { children: _jsx(AppShellInner, { children: children }) }) }) }));
|