@shepai/cli 1.150.0-pr472.498e2c5 → 1.150.1
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/infrastructure/services/agents/feature-agent/nodes/evidence.node.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.js +2 -1
- 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 +11 -42
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/implement.node.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/implement.node.js +2 -3
- package/dist/src/presentation/web/app/actions/get-merge-review-data.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/get-merge-review-data.js +1 -10
- 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 +2 -2
- package/web/.next/required-server-files.json +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +28 -28
- 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/create/page/server-reference-manifest.json +28 -28
- 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 +36 -36
- 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 +36 -36
- 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 +26 -26
- 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 +28 -28
- 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 +36 -36
- 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 +36 -36
- 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 +26 -26
- 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 +26 -26
- 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 +3 -3
- 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 +8 -8
- 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 +8 -8
- package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/tools/page/server-reference-manifest.json +8 -8
- package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/version/page/server-reference-manifest.json +3 -3
- 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/[root-of-the-server]__2138fa7e._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__29580090._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__29580090._.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]__3ef34e4c._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c094882b._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c094882b._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__dac5dbf1._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__dac5dbf1._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fae8b355._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fae8b355._.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/_0c5f56e3._.js +2 -2
- package/web/.next/server/chunks/ssr/_0c5f56e3._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_9eb24ecf._.js → _0d43f72b._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_9eb24ecf._.js.map → _0d43f72b._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_16eb4fec._.js +1 -1
- package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_1b719e7f._.js +1 -1
- package/web/.next/server/chunks/ssr/_1b719e7f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_37e8548b._.js +1 -1
- package/web/.next/server/chunks/ssr/_37e8548b._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_55d763e2._.js +1 -1
- package/web/.next/server/chunks/ssr/_55d763e2._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_6256a985._.js +1 -1
- package/web/.next/server/chunks/ssr/_6256a985._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_64bdfc6f._.js +2 -2
- package/web/.next/server/chunks/ssr/_64bdfc6f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_8fcc39d4._.js +1 -1
- package/web/.next/server/chunks/ssr/_8fcc39d4._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_b71645b4._.js +1 -1
- package/web/.next/server/chunks/ssr/_b71645b4._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_d8575088._.js +1 -1
- package/web/.next/server/chunks/ssr/_d8575088._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_580ca274._.js → _e6f4ec90._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_580ca274._.js.map → _e6f4ec90._.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__next-internal_server_app_skills_page_actions_1b176e3c.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.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_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_edb9a758._.js +3 -0
- package/web/.next/server/chunks/ssr/{src_presentation_web_f7c07685._.js.map → src_presentation_web_edb9a758._.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 +44 -44
- package/web/.next/static/chunks/{ff66542d8b6a693b.js → 20c158b8a29d2567.js} +1 -1
- package/web/.next/static/chunks/{63a6aef5209ad111.js → 2fb8c2e502e09420.js} +1 -1
- package/web/.next/static/chunks/{92c350ffb06ac8c9.js → 3a92705d60c43efd.js} +1 -1
- package/web/.next/static/chunks/{27d90addfd3042f4.js → 3eb70de6fd8230d1.js} +1 -1
- package/web/.next/static/chunks/{d0cf4f41c6473d9e.js → 65a81bc1667bd5e5.js} +1 -1
- package/web/.next/static/chunks/{9d30850608895a14.js → 9493276589211dde.js} +2 -2
- package/web/.next/static/chunks/{672a0665307c4656.js → 9e0540b3bb6d8e94.js} +1 -1
- package/web/.next/static/chunks/{e1b442e2b4e27e76.js → af5f5590d479d23b.js} +1 -1
- package/web/.next/static/chunks/{f86e6d52f5309915.js → b0e2a4995f8cb125.js} +1 -1
- package/web/.next/static/chunks/ceaacf9d11979fc4.js +5 -0
- package/web/.next/static/chunks/{51d6a4e38e055da7.js → e3e34a3ecc0dda04.js} +1 -1
- package/web/.next/static/chunks/f711ef106ef5e8d3.js +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_f7c07685._.js +0 -3
- package/web/.next/static/chunks/3488c429220a5428.js +0 -1
- package/web/.next/static/chunks/8154cf726cf76b22.js +0 -5
- /package/web/.next/static/{atHbG6OJQjDFHjONkKfiS → 89D8MDDa2_39rRqMnpKG7}/_buildManifest.js +0 -0
- /package/web/.next/static/{atHbG6OJQjDFHjONkKfiS → 89D8MDDa2_39rRqMnpKG7}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{atHbG6OJQjDFHjONkKfiS → 89D8MDDa2_39rRqMnpKG7}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.node.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAEpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAqDrD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,IAG3C,OAAO,iBAAiB,KAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"evidence.node.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAEpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAqDrD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,IAG3C,OAAO,iBAAiB,KAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAqJ7E"}
|
package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.js
CHANGED
|
@@ -82,8 +82,9 @@ export function createEvidenceNode(executor) {
|
|
|
82
82
|
};
|
|
83
83
|
}
|
|
84
84
|
// --- Configuration ---
|
|
85
|
+
// Use feature-level state for commitEvidence; fall back to global for retries config
|
|
86
|
+
const commitEvidence = state.commitEvidence;
|
|
85
87
|
const settings = hasSettings() ? getSettings() : undefined;
|
|
86
|
-
const commitEvidence = settings?.workflow.commitEvidence ?? false;
|
|
87
88
|
const maxRetries = settings?.workflow.evidenceRetries ?? DEFAULT_MAX_RETRIES;
|
|
88
89
|
const options = buildExecutorOptions(state);
|
|
89
90
|
const tasks = parseTasks(state.specDir);
|
|
@@ -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;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,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;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AACpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAcrD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,cAAc,IAGhD,OAAO,iBAAiB,KAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CA6F7E"}
|
|
@@ -11,14 +11,12 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { execSync } from 'node:child_process';
|
|
13
13
|
import { isGraphBubbleUp } from '@langchain/langgraph';
|
|
14
|
-
import { createNodeLogger, buildExecutorOptions, retryExecute, getCompletedPhases, markPhaseComplete,
|
|
14
|
+
import { createNodeLogger, buildExecutorOptions, retryExecute, getCompletedPhases, markPhaseComplete, } from './node-helpers.js';
|
|
15
15
|
import { reportNodeStart } from '../heartbeat.js';
|
|
16
16
|
import { recordPhaseStart, recordPhaseEnd } from '../phase-timing-context.js';
|
|
17
17
|
import { updateNodeLifecycle } from '../lifecycle-context.js';
|
|
18
18
|
import { buildFastImplementPrompt } from './prompts/fast-implement.prompt.js';
|
|
19
|
-
import {
|
|
20
|
-
import { parseEvidenceRecords } from './evidence-output-parser.js';
|
|
21
|
-
import { hasSettings, getSettings } from '../../../settings.service.js';
|
|
19
|
+
import { createEvidenceNode } from './evidence.node.js';
|
|
22
20
|
/**
|
|
23
21
|
* Factory that creates the fast-implement node function.
|
|
24
22
|
*
|
|
@@ -62,11 +60,15 @@ export function createFastImplementNode(executor) {
|
|
|
62
60
|
if (!hasWorktreeChanges(cwd) && !hasNewCommits(cwd)) {
|
|
63
61
|
throw new Error('[fast-implement] Agent produced no file changes — it may have entered plan mode or asked questions instead of implementing. Retrying.');
|
|
64
62
|
}
|
|
65
|
-
// --- Evidence sub-agent: capture proof of completion (
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
63
|
+
// --- Evidence sub-agent: capture proof of completion (feature-gated) ---
|
|
64
|
+
let evidence = [];
|
|
65
|
+
if (state.enableEvidence) {
|
|
66
|
+
const evidenceNode = createEvidenceNode(executor);
|
|
67
|
+
const evidenceResult = await evidenceNode(state);
|
|
68
|
+
evidence = evidenceResult.evidence ?? [];
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
log.info('Evidence collection disabled — skipping');
|
|
70
72
|
}
|
|
71
73
|
await recordPhaseEnd(timingId, durationMs, {
|
|
72
74
|
inputTokens: result.usage?.inputTokens,
|
|
@@ -106,39 +108,6 @@ export function createFastImplementNode(executor) {
|
|
|
106
108
|
}
|
|
107
109
|
};
|
|
108
110
|
}
|
|
109
|
-
/**
|
|
110
|
-
* Sub-agent call to collect evidence after fast implementation completes.
|
|
111
|
-
* Graceful degradation: returns empty array on any failure so evidence
|
|
112
|
-
* collection never blocks the workflow.
|
|
113
|
-
*/
|
|
114
|
-
async function collectEvidence(executor, state, log) {
|
|
115
|
-
try {
|
|
116
|
-
log.info('Collecting evidence (sub-agent)');
|
|
117
|
-
const commitEvidence = hasSettings() && getSettings().workflow.commitEvidence;
|
|
118
|
-
const prompt = buildEvidencePrompt(state, { commitEvidence });
|
|
119
|
-
const options = buildExecutorOptions(state);
|
|
120
|
-
const result = await retryExecute(executor, prompt, options, { logger: log });
|
|
121
|
-
try {
|
|
122
|
-
const evidence = parseEvidenceRecords(result.result);
|
|
123
|
-
log.info(`Parsed ${evidence.length} evidence record(s)`);
|
|
124
|
-
saveEvidenceManifest(state, evidence, log);
|
|
125
|
-
return evidence;
|
|
126
|
-
}
|
|
127
|
-
catch (parseErr) {
|
|
128
|
-
const msg = parseErr instanceof Error ? parseErr.message : String(parseErr);
|
|
129
|
-
log.error(`Warning: evidence parsing failed: ${msg} — continuing with empty evidence`);
|
|
130
|
-
return [];
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
catch (err) {
|
|
134
|
-
// Re-throw LangGraph control-flow exceptions
|
|
135
|
-
if (isGraphBubbleUp(err))
|
|
136
|
-
throw err;
|
|
137
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
138
|
-
log.error(`Evidence collection failed: ${msg} — continuing without evidence`);
|
|
139
|
-
return [];
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
111
|
/**
|
|
143
112
|
* Check whether the worktree has any uncommitted changes (new, modified, or deleted files).
|
|
144
113
|
* Uses `git status --porcelain` which outputs one line per changed file, or empty if clean.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"implement.node.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/implement.node.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AACpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"implement.node.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/implement.node.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AACpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAoErD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,cAAc,IAG5C,OAAO,iBAAiB,KAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAiQ7E"}
|
package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/implement.node.js
CHANGED
|
@@ -16,7 +16,6 @@ import { recordPhaseStart, recordPhaseEnd, recordApprovalWaitStart, updatePhaseP
|
|
|
16
16
|
import { updateNodeLifecycle } from '../lifecycle-context.js';
|
|
17
17
|
import { buildImplementPhasePrompt, } from './prompts/implement.prompt.js';
|
|
18
18
|
import { createEvidenceNode } from './evidence.node.js';
|
|
19
|
-
import { hasSettings, getSettings } from '../../../settings.service.js';
|
|
20
19
|
/**
|
|
21
20
|
* Update feature.yaml with current implementation progress.
|
|
22
21
|
* Silently no-ops if the file is missing or unparseable.
|
|
@@ -190,8 +189,8 @@ export function createImplementNode(executor) {
|
|
|
190
189
|
log.info(`All phases complete — ${completedTasks}/${totalTasks} tasks (${elapsed}s)`);
|
|
191
190
|
updateFeatureProgress(state.specDir, totalTasks, totalTasks, 'implementation-complete', null, log);
|
|
192
191
|
messages.push(`[implement] Complete: ${totalTasks} tasks across ${totalPhases} phases (${elapsed}s)`);
|
|
193
|
-
// --- Evidence sub-agent: capture proof of completion (
|
|
194
|
-
const evidenceEnabled =
|
|
192
|
+
// --- Evidence sub-agent: capture proof of completion (feature-gated) ---
|
|
193
|
+
const evidenceEnabled = state.enableEvidence;
|
|
195
194
|
let evidenceResult = {};
|
|
196
195
|
if (evidenceEnabled) {
|
|
197
196
|
const evidenceNode = createEvidenceNode(executor);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-merge-review-data.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/get-merge-review-data.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,sDAAsD,CAAC;AAK9D,KAAK,wBAAwB,GAAG,eAAe,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAqCpE,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,
|
|
1
|
+
{"version":3,"file":"get-merge-review-data.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/get-merge-review-data.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,sDAAsD,CAAC;AAK9D,KAAK,wBAAwB,GAAG,eAAe,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAqCpE,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAmG7F"}
|
|
@@ -92,16 +92,7 @@ export async function getMergeReviewData(featureId) {
|
|
|
92
92
|
const manifestPath = join(evidenceDir, 'manifest.json');
|
|
93
93
|
if (existsSync(manifestPath)) {
|
|
94
94
|
const raw = JSON.parse(readFileSync(manifestPath, 'utf-8'));
|
|
95
|
-
|
|
96
|
-
// Deduplicate: same type + relativePath means the same evidence entry
|
|
97
|
-
const seen = new Set();
|
|
98
|
-
evidence = normalized.filter((e) => {
|
|
99
|
-
const key = `${e.type}:${e.relativePath}`;
|
|
100
|
-
if (seen.has(key))
|
|
101
|
-
return false;
|
|
102
|
-
seen.add(key);
|
|
103
|
-
return true;
|
|
104
|
-
});
|
|
95
|
+
evidence = normalizeEvidencePaths(raw, evidenceDir);
|
|
105
96
|
}
|
|
106
97
|
}
|
|
107
98
|
catch {
|