@shepai/cli 1.150.0 → 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.
Files changed (146) hide show
  1. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.d.ts.map +1 -1
  2. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.js +2 -1
  3. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.d.ts.map +1 -1
  4. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.js +11 -42
  5. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/implement.node.d.ts.map +1 -1
  6. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/implement.node.js +2 -3
  7. package/dist/tsconfig.build.tsbuildinfo +1 -1
  8. package/package.json +1 -1
  9. package/web/.next/BUILD_ID +1 -1
  10. package/web/.next/build-manifest.json +2 -2
  11. package/web/.next/fallback-build-manifest.json +2 -2
  12. package/web/.next/prerender-manifest.json +3 -3
  13. package/web/.next/required-server-files.js +2 -2
  14. package/web/.next/required-server-files.json +2 -2
  15. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +28 -28
  16. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  17. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  18. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +28 -28
  19. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  20. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  21. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +36 -36
  22. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  23. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  24. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +36 -36
  25. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  26. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  27. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +26 -26
  28. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  29. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  30. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +28 -28
  31. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  32. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  33. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +36 -36
  34. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  35. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  36. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +36 -36
  37. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  38. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  39. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +26 -26
  40. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  41. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  42. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +26 -26
  43. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  44. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  45. package/web/.next/server/app/_global-error.html +2 -2
  46. package/web/.next/server/app/_global-error.rsc +1 -1
  47. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  48. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  49. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  50. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  51. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  52. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +3 -3
  53. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  54. package/web/.next/server/app/settings/page/server-reference-manifest.json +8 -8
  55. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  56. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  57. package/web/.next/server/app/skills/page/server-reference-manifest.json +8 -8
  58. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  59. package/web/.next/server/app/tools/page/server-reference-manifest.json +8 -8
  60. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  61. package/web/.next/server/app/version/page/server-reference-manifest.json +3 -3
  62. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  63. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  64. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  65. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  66. package/web/.next/server/chunks/ssr/[root-of-the-server]__2138fa7e._.js +2 -2
  67. package/web/.next/server/chunks/ssr/[root-of-the-server]__29580090._.js +1 -1
  68. package/web/.next/server/chunks/ssr/[root-of-the-server]__29580090._.js.map +1 -1
  69. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  70. package/web/.next/server/chunks/ssr/[root-of-the-server]__3ef34e4c._.js +1 -1
  71. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js +1 -1
  72. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js.map +1 -1
  73. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js +1 -1
  74. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js.map +1 -1
  75. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +2 -2
  76. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  77. package/web/.next/server/chunks/ssr/[root-of-the-server]__c094882b._.js +1 -1
  78. package/web/.next/server/chunks/ssr/[root-of-the-server]__c094882b._.js.map +1 -1
  79. package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js +1 -1
  80. package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js.map +1 -1
  81. package/web/.next/server/chunks/ssr/[root-of-the-server]__dac5dbf1._.js +1 -1
  82. package/web/.next/server/chunks/ssr/[root-of-the-server]__dac5dbf1._.js.map +1 -1
  83. package/web/.next/server/chunks/ssr/[root-of-the-server]__fae8b355._.js +1 -1
  84. package/web/.next/server/chunks/ssr/[root-of-the-server]__fae8b355._.js.map +1 -1
  85. package/web/.next/server/chunks/ssr/_05c23ad9._.js +1 -1
  86. package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +1 -1
  87. package/web/.next/server/chunks/ssr/_0c5f56e3._.js +2 -2
  88. package/web/.next/server/chunks/ssr/_0c5f56e3._.js.map +1 -1
  89. package/web/.next/server/chunks/ssr/_0d43f72b._.js +3 -0
  90. package/web/.next/server/chunks/ssr/{_bf695af2._.js.map → _0d43f72b._.js.map} +1 -1
  91. package/web/.next/server/chunks/ssr/_16eb4fec._.js +1 -1
  92. package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -1
  93. package/web/.next/server/chunks/ssr/_1b719e7f._.js +1 -1
  94. package/web/.next/server/chunks/ssr/_1b719e7f._.js.map +1 -1
  95. package/web/.next/server/chunks/ssr/_37e8548b._.js +1 -1
  96. package/web/.next/server/chunks/ssr/_37e8548b._.js.map +1 -1
  97. package/web/.next/server/chunks/ssr/_55d763e2._.js +1 -1
  98. package/web/.next/server/chunks/ssr/_55d763e2._.js.map +1 -1
  99. package/web/.next/server/chunks/ssr/_6256a985._.js +1 -1
  100. package/web/.next/server/chunks/ssr/_6256a985._.js.map +1 -1
  101. package/web/.next/server/chunks/ssr/_64bdfc6f._.js +2 -2
  102. package/web/.next/server/chunks/ssr/_64bdfc6f._.js.map +1 -1
  103. package/web/.next/server/chunks/ssr/_8fcc39d4._.js +1 -1
  104. package/web/.next/server/chunks/ssr/_8fcc39d4._.js.map +1 -1
  105. package/web/.next/server/chunks/ssr/_b71645b4._.js +1 -1
  106. package/web/.next/server/chunks/ssr/_b71645b4._.js.map +1 -1
  107. package/web/.next/server/chunks/ssr/_d8575088._.js +1 -1
  108. package/web/.next/server/chunks/ssr/_d8575088._.js.map +1 -1
  109. package/web/.next/server/chunks/ssr/{_92b9e766._.js → _e6f4ec90._.js} +2 -2
  110. package/web/.next/server/chunks/ssr/{_92b9e766._.js.map → _e6f4ec90._.js.map} +1 -1
  111. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  112. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  113. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js +1 -1
  114. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js.map +1 -1
  115. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js +1 -1
  116. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js.map +1 -1
  117. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
  118. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  119. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  120. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  121. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  122. package/web/.next/server/chunks/ssr/src_presentation_web_edb9a758._.js +3 -0
  123. package/web/.next/server/chunks/ssr/{src_presentation_web_f449e0af._.js.map → src_presentation_web_edb9a758._.js.map} +1 -1
  124. package/web/.next/server/pages/500.html +2 -2
  125. package/web/.next/server/server-reference-manifest.js +1 -1
  126. package/web/.next/server/server-reference-manifest.json +44 -44
  127. package/web/.next/static/chunks/{f9a69279d55bfd3b.js → 20c158b8a29d2567.js} +1 -1
  128. package/web/.next/static/chunks/{ad8f9fe681d88d09.js → 2fb8c2e502e09420.js} +1 -1
  129. package/web/.next/static/chunks/{1f265c393614cad2.js → 3a92705d60c43efd.js} +1 -1
  130. package/web/.next/static/chunks/{f17d6d87a3508ba0.js → 3eb70de6fd8230d1.js} +1 -1
  131. package/web/.next/static/chunks/{413e2ca694528497.js → 65a81bc1667bd5e5.js} +1 -1
  132. package/web/.next/static/chunks/{eb7b91c45ec7b468.js → 9493276589211dde.js} +2 -2
  133. package/web/.next/static/chunks/{97a773e5a88462a0.js → 9e0540b3bb6d8e94.js} +1 -1
  134. package/web/.next/static/chunks/{c69cea3bed20eea7.js → af5f5590d479d23b.js} +1 -1
  135. package/web/.next/static/chunks/{d2e9df0b38f0d962.js → b0e2a4995f8cb125.js} +1 -1
  136. package/web/.next/static/chunks/ceaacf9d11979fc4.js +5 -0
  137. package/web/.next/static/chunks/e3e34a3ecc0dda04.js +1 -0
  138. package/web/.next/static/chunks/f711ef106ef5e8d3.js +1 -0
  139. package/web/.next/server/chunks/ssr/_bf695af2._.js +0 -3
  140. package/web/.next/server/chunks/ssr/src_presentation_web_f449e0af._.js +0 -3
  141. package/web/.next/static/chunks/10b75a1ea923a690.js +0 -1
  142. package/web/.next/static/chunks/56233eb0780a997e.js +0 -1
  143. package/web/.next/static/chunks/a18a5348858c6d75.js +0 -5
  144. /package/web/.next/static/{e6hBEk7bk-CV1jLaYcZLX → 89D8MDDa2_39rRqMnpKG7}/_buildManifest.js +0 -0
  145. /package/web/.next/static/{e6hBEk7bk-CV1jLaYcZLX → 89D8MDDa2_39rRqMnpKG7}/_clientMiddlewareManifest.json +0 -0
  146. /package/web/.next/static/{e6hBEk7bk-CV1jLaYcZLX → 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,CAoJ7E"}
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"}
@@ -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;AAEpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAiBrD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,cAAc,IAGhD,OAAO,iBAAiB,KAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CA0F7E"}
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, saveEvidenceManifest, } from './node-helpers.js';
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 { buildEvidencePrompt } from './prompts/evidence-prompts.js';
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 (settings-gated) ---
66
- const evidenceEnabled = hasSettings() && getSettings().workflow.enableEvidence;
67
- const evidence = evidenceEnabled ? await collectEvidence(executor, state, log) : [];
68
- if (!evidenceEnabled) {
69
- log.info('Evidence collection disabled via settings — skipping');
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;AAqErD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,cAAc,IAG5C,OAAO,iBAAiB,KAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAiQ7E"}
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"}
@@ -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 (settings-gated) ---
194
- const evidenceEnabled = hasSettings() && getSettings().workflow.enableEvidence;
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);