@winspan/claude-forge 0.7.2 → 0.7.4

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 (194) hide show
  1. package/dist/ai-gateway/index.d.ts.map +1 -1
  2. package/dist/ai-gateway/index.js +30 -9
  3. package/dist/ai-gateway/index.js.map +1 -1
  4. package/dist/ai-gateway/model-selector.d.ts +12 -0
  5. package/dist/ai-gateway/model-selector.d.ts.map +1 -1
  6. package/dist/ai-gateway/model-selector.js +20 -0
  7. package/dist/ai-gateway/model-selector.js.map +1 -1
  8. package/dist/autopilot/intent-engine.d.ts +0 -4
  9. package/dist/autopilot/intent-engine.d.ts.map +1 -1
  10. package/dist/autopilot/intent-engine.js +32 -102
  11. package/dist/autopilot/intent-engine.js.map +1 -1
  12. package/dist/autopilot/issue-tracker.d.ts +48 -0
  13. package/dist/autopilot/issue-tracker.d.ts.map +1 -0
  14. package/dist/autopilot/issue-tracker.js +94 -0
  15. package/dist/autopilot/issue-tracker.js.map +1 -0
  16. package/dist/autopilot/phase-gap-detector.d.ts +25 -0
  17. package/dist/autopilot/phase-gap-detector.d.ts.map +1 -0
  18. package/dist/autopilot/phase-gap-detector.js +80 -0
  19. package/dist/autopilot/phase-gap-detector.js.map +1 -0
  20. package/dist/autopilot/quality-gate.d.ts +22 -0
  21. package/dist/autopilot/quality-gate.d.ts.map +1 -1
  22. package/dist/autopilot/quality-gate.js +108 -25
  23. package/dist/autopilot/quality-gate.js.map +1 -1
  24. package/dist/autopilot/task-completion-detector.d.ts +32 -0
  25. package/dist/autopilot/task-completion-detector.d.ts.map +1 -0
  26. package/dist/autopilot/task-completion-detector.js +103 -0
  27. package/dist/autopilot/task-completion-detector.js.map +1 -0
  28. package/dist/cli/commands/pattern.d.ts.map +1 -1
  29. package/dist/cli/commands/pattern.js +44 -38
  30. package/dist/cli/commands/pattern.js.map +1 -1
  31. package/dist/daemon/engine-registry.js +1 -1
  32. package/dist/daemon/handlers/context-builder.d.ts +8 -7
  33. package/dist/daemon/handlers/context-builder.d.ts.map +1 -1
  34. package/dist/daemon/handlers/context-builder.js +16 -20
  35. package/dist/daemon/handlers/context-builder.js.map +1 -1
  36. package/dist/daemon/handlers/orchestration-context.d.ts +6 -9
  37. package/dist/daemon/handlers/orchestration-context.d.ts.map +1 -1
  38. package/dist/daemon/handlers/post-tool-use-handler.d.ts.map +1 -1
  39. package/dist/daemon/handlers/post-tool-use-handler.js +12 -0
  40. package/dist/daemon/handlers/post-tool-use-handler.js.map +1 -1
  41. package/dist/daemon/handlers/stages/01-failure-signal.d.ts +1 -0
  42. package/dist/daemon/handlers/stages/01-failure-signal.d.ts.map +1 -1
  43. package/dist/daemon/handlers/stages/01-failure-signal.js +2 -2
  44. package/dist/daemon/handlers/stages/01-failure-signal.js.map +1 -1
  45. package/dist/daemon/handlers/stages/02-active-intervention.d.ts +1 -0
  46. package/dist/daemon/handlers/stages/02-active-intervention.d.ts.map +1 -1
  47. package/dist/daemon/handlers/stages/02-active-intervention.js +1 -0
  48. package/dist/daemon/handlers/stages/02-active-intervention.js.map +1 -1
  49. package/dist/daemon/handlers/stages/03-init-prompt.d.ts +1 -0
  50. package/dist/daemon/handlers/stages/03-init-prompt.d.ts.map +1 -1
  51. package/dist/daemon/handlers/stages/03-init-prompt.js +2 -2
  52. package/dist/daemon/handlers/stages/03-init-prompt.js.map +1 -1
  53. package/dist/daemon/handlers/stages/04-skill-suggestions.d.ts +1 -0
  54. package/dist/daemon/handlers/stages/04-skill-suggestions.d.ts.map +1 -1
  55. package/dist/daemon/handlers/stages/04-skill-suggestions.js +2 -1
  56. package/dist/daemon/handlers/stages/04-skill-suggestions.js.map +1 -1
  57. package/dist/daemon/handlers/stages/05-conv-config.d.ts +1 -0
  58. package/dist/daemon/handlers/stages/05-conv-config.d.ts.map +1 -1
  59. package/dist/daemon/handlers/stages/05-conv-config.js +1 -0
  60. package/dist/daemon/handlers/stages/05-conv-config.js.map +1 -1
  61. package/dist/daemon/handlers/stages/06-engine-check.d.ts +1 -0
  62. package/dist/daemon/handlers/stages/06-engine-check.d.ts.map +1 -1
  63. package/dist/daemon/handlers/stages/06-engine-check.js +1 -0
  64. package/dist/daemon/handlers/stages/06-engine-check.js.map +1 -1
  65. package/dist/daemon/handlers/stages/07-pipeline-reply.d.ts +1 -0
  66. package/dist/daemon/handlers/stages/07-pipeline-reply.d.ts.map +1 -1
  67. package/dist/daemon/handlers/stages/07-pipeline-reply.js +1 -2
  68. package/dist/daemon/handlers/stages/07-pipeline-reply.js.map +1 -1
  69. package/dist/daemon/handlers/stages/08-esc-interrupt.d.ts +1 -0
  70. package/dist/daemon/handlers/stages/08-esc-interrupt.d.ts.map +1 -1
  71. package/dist/daemon/handlers/stages/08-esc-interrupt.js +1 -0
  72. package/dist/daemon/handlers/stages/08-esc-interrupt.js.map +1 -1
  73. package/dist/daemon/handlers/stages/09-pipeline-active.d.ts +1 -0
  74. package/dist/daemon/handlers/stages/09-pipeline-active.d.ts.map +1 -1
  75. package/dist/daemon/handlers/stages/09-pipeline-active.js +1 -0
  76. package/dist/daemon/handlers/stages/09-pipeline-active.js.map +1 -1
  77. package/dist/daemon/handlers/stages/10-cooldown.d.ts +1 -1
  78. package/dist/daemon/handlers/stages/10-cooldown.d.ts.map +1 -1
  79. package/dist/daemon/handlers/stages/10-cooldown.js +1 -39
  80. package/dist/daemon/handlers/stages/10-cooldown.js.map +1 -1
  81. package/dist/daemon/handlers/stages/11-intent-analysis.d.ts +1 -0
  82. package/dist/daemon/handlers/stages/11-intent-analysis.d.ts.map +1 -1
  83. package/dist/daemon/handlers/stages/11-intent-analysis.js +4 -3
  84. package/dist/daemon/handlers/stages/11-intent-analysis.js.map +1 -1
  85. package/dist/daemon/handlers/stages/12-strategy-advice.d.ts +1 -0
  86. package/dist/daemon/handlers/stages/12-strategy-advice.d.ts.map +1 -1
  87. package/dist/daemon/handlers/stages/12-strategy-advice.js +1 -0
  88. package/dist/daemon/handlers/stages/12-strategy-advice.js.map +1 -1
  89. package/dist/daemon/handlers/stages/13-template-route.d.ts +1 -0
  90. package/dist/daemon/handlers/stages/13-template-route.d.ts.map +1 -1
  91. package/dist/daemon/handlers/stages/13-template-route.js +1 -0
  92. package/dist/daemon/handlers/stages/13-template-route.js.map +1 -1
  93. package/dist/daemon/handlers/stages/14-plan-resume.d.ts +1 -0
  94. package/dist/daemon/handlers/stages/14-plan-resume.d.ts.map +1 -1
  95. package/dist/daemon/handlers/stages/14-plan-resume.js +1 -0
  96. package/dist/daemon/handlers/stages/14-plan-resume.js.map +1 -1
  97. package/dist/daemon/handlers/stages/15-plan-enforcement.d.ts +1 -0
  98. package/dist/daemon/handlers/stages/15-plan-enforcement.d.ts.map +1 -1
  99. package/dist/daemon/handlers/stages/15-plan-enforcement.js +1 -0
  100. package/dist/daemon/handlers/stages/15-plan-enforcement.js.map +1 -1
  101. package/dist/daemon/handlers/stages/16-intervention-level.d.ts +1 -0
  102. package/dist/daemon/handlers/stages/16-intervention-level.d.ts.map +1 -1
  103. package/dist/daemon/handlers/stages/16-intervention-level.js +1 -0
  104. package/dist/daemon/handlers/stages/16-intervention-level.js.map +1 -1
  105. package/dist/daemon/handlers/stages/17-simple-task.d.ts +1 -0
  106. package/dist/daemon/handlers/stages/17-simple-task.d.ts.map +1 -1
  107. package/dist/daemon/handlers/stages/17-simple-task.js +2 -1
  108. package/dist/daemon/handlers/stages/17-simple-task.js.map +1 -1
  109. package/dist/daemon/handlers/stages/18-complex-task.d.ts +1 -0
  110. package/dist/daemon/handlers/stages/18-complex-task.d.ts.map +1 -1
  111. package/dist/daemon/handlers/stages/18-complex-task.js +4 -4
  112. package/dist/daemon/handlers/stages/18-complex-task.js.map +1 -1
  113. package/dist/daemon/handlers/stages/19-moderate-task.d.ts +1 -0
  114. package/dist/daemon/handlers/stages/19-moderate-task.d.ts.map +1 -1
  115. package/dist/daemon/handlers/stages/19-moderate-task.js +3 -2
  116. package/dist/daemon/handlers/stages/19-moderate-task.js.map +1 -1
  117. package/dist/daemon/handlers/stages/stage-interface.d.ts +3 -0
  118. package/dist/daemon/handlers/stages/stage-interface.d.ts.map +1 -1
  119. package/dist/daemon/handlers/stages/stage-scheduler.d.ts +27 -0
  120. package/dist/daemon/handlers/stages/stage-scheduler.d.ts.map +1 -0
  121. package/dist/daemon/handlers/stages/stage-scheduler.js +105 -0
  122. package/dist/daemon/handlers/stages/stage-scheduler.js.map +1 -0
  123. package/dist/daemon/handlers/user-prompt-handler.d.ts +3 -12
  124. package/dist/daemon/handlers/user-prompt-handler.d.ts.map +1 -1
  125. package/dist/daemon/handlers/user-prompt-handler.js +73 -94
  126. package/dist/daemon/handlers/user-prompt-handler.js.map +1 -1
  127. package/dist/pipeline/index.d.ts +1 -5
  128. package/dist/pipeline/index.d.ts.map +1 -1
  129. package/dist/pipeline/index.js +29 -25
  130. package/dist/pipeline/index.js.map +1 -1
  131. package/dist/{pattern-engine/types.d.ts → pipeline/pattern-types.d.ts} +1 -1
  132. package/dist/pipeline/pattern-types.d.ts.map +1 -0
  133. package/dist/{pattern-engine/types.js → pipeline/pattern-types.js} +1 -1
  134. package/dist/pipeline/pattern-types.js.map +1 -0
  135. package/dist/pipeline/phase-manager.d.ts +6 -1
  136. package/dist/pipeline/phase-manager.d.ts.map +1 -1
  137. package/dist/pipeline/phase-manager.js +68 -38
  138. package/dist/pipeline/phase-manager.js.map +1 -1
  139. package/dist/pipeline/report-generator.d.ts +20 -0
  140. package/dist/pipeline/report-generator.d.ts.map +1 -0
  141. package/dist/pipeline/report-generator.js +123 -0
  142. package/dist/pipeline/report-generator.js.map +1 -0
  143. package/dist/prompts/intent-analysis.md +62 -0
  144. package/dist/prompts/registry.d.ts +17 -0
  145. package/dist/prompts/registry.d.ts.map +1 -0
  146. package/dist/prompts/registry.js +40 -0
  147. package/dist/prompts/registry.js.map +1 -0
  148. package/dist/skill-registry/evolver/index.d.ts +1 -1
  149. package/dist/skill-registry/evolver/index.d.ts.map +1 -1
  150. package/dist/{pattern-engine → skill-registry}/pattern-evolver.d.ts +6 -2
  151. package/dist/skill-registry/pattern-evolver.d.ts.map +1 -0
  152. package/dist/{pattern-engine → skill-registry}/pattern-evolver.js +30 -6
  153. package/dist/skill-registry/pattern-evolver.js.map +1 -0
  154. package/dist/storage/repositories/distill-repository.d.ts +2 -1
  155. package/dist/storage/repositories/distill-repository.d.ts.map +1 -1
  156. package/dist/storage/repositories/distill-repository.js +6 -0
  157. package/dist/storage/repositories/distill-repository.js.map +1 -1
  158. package/dist/storage/sqlite.d.ts +96 -157
  159. package/dist/storage/sqlite.d.ts.map +1 -1
  160. package/dist/storage/sqlite.js +123 -896
  161. package/dist/storage/sqlite.js.map +1 -1
  162. package/package.json +2 -2
  163. package/dist/daemon/engine-registry/init-pattern-engine.d.ts +0 -9
  164. package/dist/daemon/engine-registry/init-pattern-engine.d.ts.map +0 -1
  165. package/dist/daemon/engine-registry/init-pattern-engine.js +0 -22
  166. package/dist/daemon/engine-registry/init-pattern-engine.js.map +0 -1
  167. package/dist/pattern-engine/convention-pattern-generator.d.ts +0 -14
  168. package/dist/pattern-engine/convention-pattern-generator.d.ts.map +0 -1
  169. package/dist/pattern-engine/convention-pattern-generator.js +0 -120
  170. package/dist/pattern-engine/convention-pattern-generator.js.map +0 -1
  171. package/dist/pattern-engine/execution-tracker.d.ts +0 -45
  172. package/dist/pattern-engine/execution-tracker.d.ts.map +0 -1
  173. package/dist/pattern-engine/execution-tracker.js +0 -136
  174. package/dist/pattern-engine/execution-tracker.js.map +0 -1
  175. package/dist/pattern-engine/index.d.ts +0 -75
  176. package/dist/pattern-engine/index.d.ts.map +0 -1
  177. package/dist/pattern-engine/index.js +0 -247
  178. package/dist/pattern-engine/index.js.map +0 -1
  179. package/dist/pattern-engine/pattern-evolver.d.ts.map +0 -1
  180. package/dist/pattern-engine/pattern-evolver.js.map +0 -1
  181. package/dist/pattern-engine/pattern-executor.d.ts +0 -43
  182. package/dist/pattern-engine/pattern-executor.d.ts.map +0 -1
  183. package/dist/pattern-engine/pattern-executor.js +0 -228
  184. package/dist/pattern-engine/pattern-executor.js.map +0 -1
  185. package/dist/pattern-engine/pattern-loader.d.ts +0 -14
  186. package/dist/pattern-engine/pattern-loader.d.ts.map +0 -1
  187. package/dist/pattern-engine/pattern-loader.js +0 -111
  188. package/dist/pattern-engine/pattern-loader.js.map +0 -1
  189. package/dist/pattern-engine/pattern-router.d.ts +0 -31
  190. package/dist/pattern-engine/pattern-router.d.ts.map +0 -1
  191. package/dist/pattern-engine/pattern-router.js +0 -160
  192. package/dist/pattern-engine/pattern-router.js.map +0 -1
  193. package/dist/pattern-engine/types.d.ts.map +0 -1
  194. package/dist/pattern-engine/types.js.map +0 -1
@@ -2,6 +2,7 @@ import { PHASE_LABELS, nextPhase } from './types.js';
2
2
  import { logger } from '../utils/logger.js';
3
3
  import { memoryManager } from '../utils/memory-manager.js';
4
4
  export class PhaseManager {
5
+ taskCompletionDetector;
5
6
  store;
6
7
  knowledgeContext = memoryManager.register('phase:knowledge', { max: 100, ttl: 24 * 3600_000 });
7
8
  totalPhaseEventCounts = memoryManager.register('phase:eventCounts', { max: 100, ttl: 24 * 3600_000 });
@@ -9,8 +10,11 @@ export class PhaseManager {
9
10
  phaseFixAttempts = memoryManager.register('phase:fixAttempts', { max: 100, ttl: 24 * 3600_000 });
10
11
  /** 追踪每个 pipeline:phase 的 Write/Edit 调用次数 */
11
12
  phaseWriteEditCounts = memoryManager.register('phase:writeEditCounts', { max: 100, ttl: 24 * 3600_000 });
13
+ /** 追踪每个 pipeline:phase 最近 5 次工具调用 */
14
+ recentTools = memoryManager.register('phase:recentTools', { max: 100, ttl: 24 * 3600_000 });
12
15
  static MAX_FIX_ATTEMPTS = 3;
13
- constructor(store) {
16
+ constructor(store, taskCompletionDetector) {
17
+ this.taskCompletionDetector = taskCompletionDetector;
14
18
  this.store = store;
15
19
  }
16
20
  /**
@@ -127,6 +131,37 @@ export class PhaseManager {
127
131
  const writeEditCount = this.phaseWriteEditCounts.get(writeEditKey) || 0;
128
132
  this.phaseWriteEditCounts.set(writeEditKey, writeEditCount + 1);
129
133
  }
134
+ // 追踪最近 5 次工具调用(供 TaskCompletionDetector 使用)
135
+ const recentKey = `${pipeline.id}:${phase}`;
136
+ const recent = this.recentTools.get(recentKey) || [];
137
+ recent.push(toolName);
138
+ if (recent.length > 5)
139
+ recent.shift();
140
+ this.recentTools.set(recentKey, recent);
141
+ // LLM 语义检测:在达到阈值前尝试智能判断是否完成
142
+ if (this.taskCompletionDetector && progress.completed > 0 && progress.completed < progress.total && phaseEventCount + 1 >= Math.floor(activityThreshold * 0.7)) {
143
+ try {
144
+ const detectionResult = await this.taskCompletionDetector.detect({
145
+ requirement: pipeline.requirement,
146
+ currentPhase: phase,
147
+ recentTools: recent,
148
+ toolCallCount: phaseEventCount + 1,
149
+ completedTaskCount: progress.completed,
150
+ totalTaskCount: progress.total,
151
+ });
152
+ if (detectionResult.isComplete && detectionResult.confidence !== 'low') {
153
+ logger.info(`[Pipeline] LLM 检测到 ${PHASE_LABELS[phase]} 阶段已完成(${detectionResult.confidence}),提前推进`);
154
+ const remaining = pipeline.tasks.filter(t => t.phase === phase && t.status !== 'completed');
155
+ for (const t of remaining) {
156
+ this.store.updateTaskStatus(t.id, 'completed', `LLM 检测完成:${detectionResult.reason}`);
157
+ }
158
+ }
159
+ }
160
+ catch (err) {
161
+ logger.warn(`[Pipeline] LLM 任务完成检测失败,降级到阈值逻辑:${err}`);
162
+ }
163
+ }
164
+ // 兜底推进:活动阈值强制完成(LLM 检测失败或未启用时的保底机制)
130
165
  if (progress.completed > 0 && progress.completed < progress.total && phaseEventCount + 1 >= activityThreshold) {
131
166
  logger.info(`[Pipeline] 活动阈值(${activityThreshold})已达到,强制完成 ${PHASE_LABELS[phase]} 阶段剩余任务`);
132
167
  const remaining = pipeline.tasks.filter(t => t.phase === phase && t.status !== 'completed');
@@ -143,11 +178,19 @@ export class PhaseManager {
143
178
  const fixAttempts = this.phaseFixAttempts.get(fixKey) || 0;
144
179
  // analyze/design 阶段产出为文本,使用 reviewPhaseCompletion
145
180
  // code/test/review 阶段:优先用 reviewForPhase(有代码内容),否则降级到 reviewPhaseCompletion
146
- const phaseContext = pipeline.tasks
147
- .filter(t => t.phase === phase)
181
+ const phaseTasks = pipeline.tasks.filter(t => t.phase === phase);
182
+ const phaseContext = phaseTasks
148
183
  .map(t => `- ${t.title}: ${t.output || '(进行中)'}`)
149
184
  .join('\n');
150
- let gateResult = (phase === 'analyze' || phase === 'design')
185
+ // 活动阈值强制完成时,任务 output 为空,质量门禁无法评审产出物。
186
+ // 此时跳过 reviewPhaseCompletion,视为通过(活动阈值本身已作为充分性判断)。
187
+ const hasRealOutput = phaseTasks.some(t => t.output && t.output.trim().length > 0);
188
+ const skipGate = !hasRealOutput && (phase === 'analyze' || phase === 'design');
189
+ if (skipGate) {
190
+ logger.info(`[Pipeline] ${PHASE_LABELS[phase]}阶段任务均无产出物(活动阈值强制完成),跳过质量门禁,直接推进`);
191
+ this.phaseFixAttempts.delete(fixKey);
192
+ }
193
+ let gateResult = skipGate ? null : (phase === 'analyze' || phase === 'design')
151
194
  ? await qualityGate.reviewPhaseCompletion(phase, pipeline.requirement, phaseContext)
152
195
  : await qualityGate.reviewForPhase(event, phase);
153
196
  // reviewForPhase 返回 null 表示事件不适用(非 Write/Edit),降级到 reviewPhaseCompletion
@@ -161,38 +204,10 @@ export class PhaseManager {
161
204
  .filter(c => c.level === 'fail')
162
205
  .map(c => `[${c.category}] ${c.message}${c.suggestion ? `\n 修复建议:${c.suggestion}` : ''}`);
163
206
  if (newAttempts >= PhaseManager.MAX_FIX_ATTEMPTS) {
164
- // 达到最大重试次数,仍然阻断——质量问题必须人工介入
165
- logger.warn(`[Pipeline] 质量门禁阶段 ${PHASE_LABELS[phase]} 已达最大修复次数(${PhaseManager.MAX_FIX_ATTEMPTS}),持续阻断,需人工介入`);
166
- const completedTasks = pipeline.tasks
167
- .filter(t => t.phase === phase && t.status === 'completed')
168
- .map(t => `- ${t.title}`)
169
- .join('\n') || '(无)';
170
- const systemMessage = `[Forge 强制质量检测] ❌ ${PHASE_LABELS[phase]}阶段质量检查已连续失败 ${newAttempts} 次,需要人工介入。
171
-
172
- ## 必须修复的问题
173
-
174
- ${failIssues.join('\n\n')}
175
-
176
- ## 立即执行
177
-
178
- 1. **停止当前无关操作**(搜索、查询等)
179
- 2. **专注修复以上所有问题**
180
- 3. 修复完成后继续工作,质量门禁将自动重新检查
181
-
182
- ## 当前上下文
183
-
184
- - **阶段**:${PHASE_LABELS[phase]}
185
- - **需求**:${pipeline.requirement}
186
- - **已完成任务**:
187
- ${completedTasks}
188
-
189
- ⚠️ 已达最大自动修复次数上限,请仔细检查并彻底修复以上所有问题。`;
190
- return {
191
- advanced: false,
192
- qualityBlocked: true,
193
- qualityIssues: failIssues,
194
- systemMessage,
195
- };
207
+ // 达到最大重试次数,强制放行并记录警告——避免 Pipeline 永久卡死产生垃圾数据
208
+ logger.warn(`[Pipeline] 质量门禁阶段 ${PHASE_LABELS[phase]} 已达最大修复次数(${PhaseManager.MAX_FIX_ATTEMPTS}),强制放行,记录警告`);
209
+ this.phaseFixAttempts.delete(fixKey);
210
+ // return,继续执行后续阶段推进逻辑,让 Pipeline 正常前进
196
211
  }
197
212
  else {
198
213
  logger.warn(`[Pipeline] 质量门禁阻止推进 ${PHASE_LABELS[phase]}(第 ${newAttempts}/${PhaseManager.MAX_FIX_ATTEMPTS} 次):${gateResult.summary}`);
@@ -219,7 +234,7 @@ ${failIssues.join('\n\n')}
219
234
  - **已完成任务**:
220
235
  ${completedTasks}
221
236
 
222
- ${newAttempts >= PhaseManager.MAX_FIX_ATTEMPTS - 1 ? `\n⚠️ **最后警告**:下次检查若仍不通过,将持续阻断并要求人工介入。` : ''}`;
237
+ ${newAttempts >= PhaseManager.MAX_FIX_ATTEMPTS - 1 ? `\n⚠️ **最后警告**:下次检查若仍不通过,将强制放行并跳过质量门禁。` : ''}`;
223
238
  return {
224
239
  advanced: false,
225
240
  qualityBlocked: true,
@@ -241,6 +256,21 @@ ${newAttempts >= PhaseManager.MAX_FIX_ATTEMPTS - 1 ? `\n⚠️ **最后警告**
241
256
  }
242
257
  }
243
258
  const newPh = nextPhase(phase, pipeline.plannedPhases);
259
+ // 跨阶段补充检测:在阶段切换前检测上一阶段遗留问题
260
+ let gapMessage;
261
+ if (qualityGate?.phaseGapDetector) {
262
+ const gapResult = qualityGate.phaseGapDetector.detect(pipeline, phase, newPh);
263
+ if (gapResult.action === 'ask_user' && gapResult.systemMessage) {
264
+ // 暂停:需求歧义未解决,追问用户后才能推进
265
+ logger.info(`[Pipeline] 跨阶段检测:${PHASE_LABELS[phase]}→${PHASE_LABELS[newPh]} 发现需求歧义,暂停推进`);
266
+ return { advanced: false, qualityBlocked: true, systemMessage: gapResult.systemMessage };
267
+ }
268
+ if (gapResult.systemMessage) {
269
+ // 非阻断:注入提示,Pipeline 继续推进
270
+ gapMessage = gapResult.systemMessage;
271
+ logger.info(`[Pipeline] 跨阶段检测:${PHASE_LABELS[phase]}→${PHASE_LABELS[newPh]} 注入补充提示(${gapResult.action})`);
272
+ }
273
+ }
244
274
  this.store.updatePhase(pipeline.id, newPh);
245
275
  // totalPhaseEventCounts 保留累积记录,供复盘分析使用
246
276
  this.phaseToolsSeen.delete(`${pipeline.id}:${phase}`);
@@ -251,7 +281,7 @@ ${newAttempts >= PhaseManager.MAX_FIX_ATTEMPTS - 1 ? `\n⚠️ **最后警告**
251
281
  .join('\n');
252
282
  logger.info(`[Pipeline] 阶段推进:${PHASE_LABELS[phase]} → ${PHASE_LABELS[newPh]}\n` +
253
283
  ` 完成 ${phaseTasks.length} 个任务,成果汇总:\n${artifacts}`);
254
- return { advanced: true, newPhase: newPh };
284
+ return { advanced: true, newPhase: newPh, gapMessage };
255
285
  }
256
286
  return { advanced: false };
257
287
  }
@@ -1 +1 @@
1
- {"version":3,"file":"phase-manager.js","sourceRoot":"","sources":["../../src/pipeline/phase-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"phase-manager.js","sourceRoot":"","sources":["../../src/pipeline/phase-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAK3D,MAAM,OAAO,YAAY;IAeb;IAdF,KAAK,CAAgB;IACrB,gBAAgB,GAAG,aAAa,CAAC,QAAQ,CAAiB,iBAAiB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;IAC/G,qBAAqB,GAAG,aAAa,CAAC,QAAQ,CAAiB,mBAAmB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;IACtH,cAAc,GAAG,aAAa,CAAC,QAAQ,CAAsB,iBAAiB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;IAClH,gBAAgB,GAAG,aAAa,CAAC,QAAQ,CAAiB,mBAAmB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;IACzH,4CAA4C;IACpC,oBAAoB,GAAG,aAAa,CAAC,QAAQ,CAAiB,uBAAuB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;IACjI,qCAAqC;IAC7B,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAmB,mBAAmB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;IAE9G,MAAM,CAAU,gBAAgB,GAAG,CAAC,CAAC;IAE7C,YACE,KAAoB,EACZ,sBAA+C;QAA/C,2BAAsB,GAAtB,sBAAsB,CAAyB;QAEvD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,UAAkB,EAAE,SAAiB;QACvD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,GAAW,EAAE,KAAkB;QAC9C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,GAAW,EAAE,KAAa;QAC1C,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,UAAkB;QACjC,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACpD,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC;gBACrC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,QAAkB;QACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC7B,IAAI,KAAK,KAAK,MAAM;YAAE,OAAO,EAAE,CAAC;QAEhC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAEjE,uBAAuB;QACvB,IAAI,QAAQ,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,iBAAiB,KAAK,qBAAqB,CAAC,CAAC;YACzD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC;QAE/F,aAAa;QACb,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACpD,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,UAAU;QACV,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,GAAG;YAChD,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG;YAC9C,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,oBAAoB,YAAY,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,KAAK,MAAM,QAAQ,EAAE,CAAC,CAAC;QAE5G,yBAAyB;QACzB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;QAEjE,8CAA8C;QAC9C,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;QACtE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnB,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;gBAC7B,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;gBAC5D,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QAED,gBAAgB;QAChB,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM,CAAC;QAC9E,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,OAAO,SAAS,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,QAAkB,EAAE,KAAiB,EAAE,WAA+B;QAC1F,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC7B,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE1E,yBAAyB;QACzB,MAAM,QAAQ,GAAG,GAAG,QAAQ,CAAC,EAAE,IAAI,KAAK,EAAE,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;QACrD,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACjE,IAAI,YAAY;YAAE,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAE9C,cAAc;QACd,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CACxC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CACjF,CAAC;QAEF,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACvC,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;YACzF,IAAI,SAAS,EAAE,CAAC;gBACd,+BAA+B;gBAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;gBACnE,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;gBACnE,MAAM,CAAC,IAAI,CAAC,oBAAoB,WAAW,CAAC,KAAK,SAAS,QAAQ,EAAE,CAAC,CAAC;gBACtE,MAAM,CAAC,cAAc;YACvB,CAAC;QACH,CAAC;QAED,mCAAmC;QACnC,gCAAgC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACjE,MAAM,iBAAiB,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;QACrF,MAAM,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,EAAE,IAAI,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;QACvF,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,EAAE,IAAI,KAAK,EAAE,EAAE,eAAe,GAAG,CAAC,CAAC,CAAC;QAE/E,8CAA8C;QAC9C,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YAChD,MAAM,YAAY,GAAG,GAAG,QAAQ,CAAC,EAAE,IAAI,KAAK,EAAE,CAAC;YAC/C,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACxE,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,YAAY,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC;QAClE,CAAC;QAED,4CAA4C;QAC5C,MAAM,SAAS,GAAG,GAAG,QAAQ,CAAC,EAAE,IAAI,KAAK,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QACtC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAExC,4BAA4B;QAC5B,IAAI,IAAI,CAAC,sBAAsB,IAAI,QAAQ,CAAC,SAAS,GAAG,CAAC,IAAI,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,IAAI,eAAe,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC,EAAE,CAAC;YAC/J,IAAI,CAAC;gBACH,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC;oBAC/D,WAAW,EAAE,QAAQ,CAAC,WAAW;oBACjC,YAAY,EAAE,KAAK;oBACnB,WAAW,EAAE,MAAM;oBACnB,aAAa,EAAE,eAAe,GAAG,CAAC;oBAClC,kBAAkB,EAAE,QAAQ,CAAC,SAAS;oBACtC,cAAc,EAAE,QAAQ,CAAC,KAAK;iBAC/B,CAAC,CAAC;gBAEH,IAAI,eAAe,CAAC,UAAU,IAAI,eAAe,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;oBACvE,MAAM,CAAC,IAAI,CAAC,sBAAsB,YAAY,CAAC,KAAK,CAAC,UAAU,eAAe,CAAC,UAAU,QAAQ,CAAC,CAAC;oBACnG,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;oBAC5F,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;wBAC1B,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,WAAW,EAAE,YAAY,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;oBACvF,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,mCAAmC,GAAG,EAAE,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAED,oCAAoC;QACpC,IAAI,QAAQ,CAAC,SAAS,GAAG,CAAC,IAAI,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,IAAI,eAAe,GAAG,CAAC,IAAI,iBAAiB,EAAE,CAAC;YAC9G,MAAM,CAAC,IAAI,CAAC,mBAAmB,iBAAiB,aAAa,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC3F,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;YAC5F,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QAED,aAAa;QACb,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACxE,IAAI,eAAe,CAAC,KAAK,GAAG,CAAC,IAAI,eAAe,CAAC,SAAS,IAAI,eAAe,CAAC,KAAK,EAAE,CAAC;YACpF,wBAAwB;YACxB,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,IAAI,KAAK,EAAE,CAAC;gBACzC,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAE3D,kDAAkD;gBAClD,4EAA4E;gBAC5E,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;gBACjE,MAAM,YAAY,GAAG,UAAU;qBAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,MAAM,IAAI,OAAO,EAAE,CAAC;qBAChD,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEd,sCAAsC;gBACtC,mDAAmD;gBACnD,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACnF,MAAM,QAAQ,GAAG,CAAC,aAAa,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,QAAQ,CAAC,CAAC;gBAC/E,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,CAAC,IAAI,CAAC,cAAc,YAAY,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;oBAChF,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACvC,CAAC;gBAED,IAAI,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,QAAQ,CAAC;oBAC5E,CAAC,CAAC,MAAM,WAAW,CAAC,qBAAqB,CAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC;oBACpF,CAAC,CAAC,MAAM,WAAW,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACnD,yEAAyE;gBACzE,IAAI,UAAU,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACrE,UAAU,GAAG,MAAM,WAAW,CAAC,qBAAqB,CAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;gBAClG,CAAC;gBACD,IAAI,UAAU,IAAI,UAAU,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;oBAC9C,MAAM,WAAW,GAAG,WAAW,GAAG,CAAC,CAAC;oBACpC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;oBAE/C,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM;yBACjC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC;yBAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAE7F,IAAI,WAAW,IAAI,YAAY,CAAC,gBAAgB,EAAE,CAAC;wBACjD,6CAA6C;wBAC7C,MAAM,CAAC,IAAI,CAAC,qBAAqB,YAAY,CAAC,KAAK,CAAC,aAAa,YAAY,CAAC,gBAAgB,aAAa,CAAC,CAAC;wBAC7G,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wBACrC,wCAAwC;oBAC1C,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,IAAI,CAAC,uBAAuB,YAAY,CAAC,KAAK,CAAC,MAAM,WAAW,IAAI,YAAY,CAAC,gBAAgB,OAAO,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;wBAErI,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK;6BAClC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC;6BAC1D,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;6BACxB,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;wBAEvB,MAAM,aAAa,GAAG,oBAAoB,YAAY,CAAC,KAAK,CAAC,eAAe,WAAW,IAAI,YAAY,CAAC,gBAAgB;;;;EAIlI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;;;;;;;;;;WAUd,YAAY,CAAC,KAAK,CAAC;WACnB,QAAQ,CAAC,WAAW;;EAE7B,cAAc;;EAEd,WAAW,IAAI,YAAY,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;wBAExF,OAAO;4BACL,QAAQ,EAAE,KAAK;4BACf,cAAc,EAAE,IAAI;4BACpB,aAAa,EAAE,UAAU;4BACzB,aAAa;yBACd,CAAC;oBACJ,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,4BAA4B;oBAC5B,iBAAiB;oBACjB,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;wBACpB,MAAM,CAAC,IAAI,CAAC,mBAAmB,YAAY,CAAC,KAAK,CAAC,UAAU,WAAW,OAAO,CAAC,CAAC;oBAClF,CAAC;oBACD,IAAI,UAAU,EAAE,KAAK,KAAK,MAAM,EAAE,CAAC;wBACjC,MAAM,CAAC,IAAI,CAAC,mBAAmB,YAAY,CAAC,KAAK,CAAC,aAAa,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;oBACvF,CAAC;oBACD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;YAED,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;YAEvD,2BAA2B;YAC3B,IAAI,UAA8B,CAAC;YACnC,IAAI,WAAW,EAAE,gBAAgB,EAAE,CAAC;gBAClC,MAAM,SAAS,GAAG,WAAW,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC9E,IAAI,SAAS,CAAC,MAAM,KAAK,UAAU,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC;oBAC/D,uBAAuB;oBACvB,MAAM,CAAC,IAAI,CAAC,oBAAoB,YAAY,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;oBAC1F,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,CAAC,aAAa,EAAE,CAAC;gBAC3F,CAAC;gBACD,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC;oBAC5B,yBAAyB;oBACzB,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC;oBACrC,MAAM,CAAC,IAAI,CAAC,oBAAoB,YAAY,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,WAAW,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC5G,CAAC;YACH,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC3C,uCAAuC;YACvC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC;YAEtD,eAAe;YACf,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;YACjE,MAAM,SAAS,GAAG,UAAU;iBACzB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,MAAM,IAAI,OAAO,EAAE,CAAC;iBAClD,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,MAAM,CAAC,IAAI,CAAC,mBAAmB,YAAY,CAAC,KAAK,CAAC,MAAM,YAAY,CAAC,KAAK,CAAC,IAAI;gBAC7E,QAAQ,UAAU,CAAC,MAAM,eAAe,SAAS,EAAE,CAAC,CAAC;YAEvD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QACzD,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED,oCAAoC;IAC5B,yBAAyB,CAAC,KAAoB,EAAE,UAA8C;QACpG,oCAAoC;QACpC,MAAM,UAAU,GAAG,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACxF,MAAM,IAAI,GAAkC;YAC1C,OAAO,EAAE,EAAE;YACX,MAAM,EAAG,EAAE;YACX,OAAO,EAAE,EAAE;YACX,IAAI,EAAK,EAAE;YACX,IAAI,EAAK,EAAE;YACX,MAAM,EAAG,EAAE;YACX,IAAI,EAAK,CAAC;SACX,CAAC;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;IACtD,CAAC;IAEO,iBAAiB,CAAC,KAAoB,EAAE,WAAqC,EAAE,QAAkB;QACvG,MAAM,QAAQ,GAAG,WAAW,EAAE,WAAW,IAAI,EAAE,CAAC;QAEhD,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,SAAS;gBACZ,OAAO,oBAAoB,QAAQ,CAAC,CAAC,CAAC,UAAU,WAAY,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE;gBAC9E,CAAC;YAEX,KAAK,QAAQ;gBACX,OAAO,yBAAyB,QAAQ,CAAC,CAAC,CAAC,UAAU,WAAY,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE;kBACjF,CAAC;YAEb,KAAK,SAAS;gBACZ,OAAO,iBAAiB,QAAQ,CAAC,CAAC,CAAC,UAAU,WAAY,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE;iCAC1D,CAAC;YAE5B,KAAK,MAAM;gBACT,OAAO,cAAc,QAAQ,CAAC,CAAC,CAAC,UAAU,WAAY,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE;cAC1E,CAAC;YAET,KAAK,MAAM;gBACT,OAAO,gBAAgB,QAAQ,CAAC,CAAC,CAAC,UAAU,WAAY,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE;EACxF,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;gBACtG,CAAC;YAEX,KAAK,QAAQ;gBACX,OAAO;;;;EAIb,QAAQ,EAAE,CAAC;YAEP;gBACE,OAAO,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,oBAAoB,CAC1B,KAAoB,EACpB,QAAgB,EAChB,QAAgB,EAChB,KAAiB,EACjB,SAAsB;QAEtB,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,SAAS;gBACZ,sDAAsD;gBACtD,6BAA6B;gBAC7B,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACtD,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;oBACvE,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;oBAChD,uCAAuC;oBACvC,OAAO,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAClC,CAAC;gBACD,mBAAmB;gBACnB,OAAO,KAAK,CAAC;YAEf,KAAK,QAAQ;gBACX,+BAA+B;gBAC/B,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,MAAM,CAAC;oBAClD,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC;wBAChE,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YAEpE,KAAK,SAAS;gBACZ,wCAAwC;gBACxC,OAAO,CAAC,QAAQ,KAAK,MAAM,IAAI,CAC7B,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAC5F,CAAC,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,CAC7B,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CACrG,CAAC,CAAC;YAEL,KAAK,MAAM;gBACT,gBAAgB;gBAChB,OAAO,QAAQ,KAAK,OAAO,IAAI,CAC7B,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;oBACpD,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;oBACpD,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CACvD,CAAC;YAEJ,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,wCAAwC;gBACxC,MAAM,WAAW,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,MAAM,CAAC;oBAC/D,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC3D,MAAM,UAAU,GAAG,QAAQ,KAAK,MAAM;oBACpC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACvF,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAChC,qCAAqC;gBACrC,IAAI,WAAW;oBAAE,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAC5C,IAAI,UAAU;oBAAE,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAC1C,OAAO,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACjE,CAAC;YAED,KAAK,QAAQ;gBACX,iDAAiD;gBACjD,OAAO,QAAQ,KAAK,MAAM,CAAC;YAE7B;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,QAAgB,EAAE,SAAiB;QAC5D,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,MAAM,CAAC;YACZ,KAAK,MAAM,CAAC;YACZ,KAAK,MAAM;gBACT,OAAO,SAAS,CAAC;YACnB,KAAK,OAAO,CAAC;YACb,KAAK,MAAM;gBACT,OAAO,OAAO,CAAC;YACjB,KAAK,MAAM;gBACT,OAAO,MAAM,CAAC;YAChB,KAAK,OAAO;gBACV,OAAO,OAAO,CAAC;YACjB;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,QAAgB,EAAE,QAAgB,EAAE,KAAiB;QAC7E,MAAM,KAAK,GAAG,KAAK,CAAC,UAAiD,CAAC;QAEtE,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,OAAO,CAAC;YACb,KAAK,MAAM,CAAC;YACZ,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,QAAQ,GAAG,KAAK,EAAE,SAA+B,CAAC;gBACxD,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1D,OAAO,GAAG,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACpC,CAAC;gBACD,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,OAAiB,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9D,OAAO,SAAS,GAAG,EAAE,CAAC;YACxB,CAAC;YACD,KAAK,MAAM,CAAC;YACZ,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,OAAO,GAAG,KAAK,EAAE,OAAiB,IAAI,EAAE,CAAC;gBAC/C,OAAO,GAAG,QAAQ,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;YACrD,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,IAAI,GAAG,KAAK,EAAE,WAAqB,IAAI,KAAK,EAAE,MAAgB,IAAI,EAAE,CAAC;gBAC3E,OAAO,UAAU,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC3C,CAAC;YACD;gBACE,OAAO,GAAG,QAAQ,KAAK,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACvD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,UAAkB;QACnC,MAAM,SAAS,GAAoB,EAAE,CAAC;QACtC,MAAM,MAAM,GAAoB,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAE3F,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,GAAG,UAAU,IAAI,KAAK,EAAE,CAAC;YACrC,MAAM,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/D,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC5D,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAE/D,YAAY;YACZ,IAAI,aAAa,GAAG,CAAC,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;gBAC7C,SAAS,CAAC,IAAI,CAAC;oBACb,KAAK;oBACL,eAAe,EAAE,aAAa;oBAC9B,gBAAgB,EAAE,cAAc;oBAChC,iBAAiB,EAAE,eAAe;iBACnC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { Pipeline } from './types.js';
2
+ import type { IssueTracker } from '../autopilot/issue-tracker.js';
3
+ import type { PhaseManager } from './phase-manager.js';
4
+ /**
5
+ * PipelineReportGenerator — Pipeline 完成报告生成器
6
+ *
7
+ * Pipeline 进入 done 阶段时调用,汇总问题台账 + 阶段统计,
8
+ * 生成 Markdown 报告并:
9
+ * 1. 返回报告文本(由调用方注入 systemMessage 展示给用户)
10
+ * 2. 追加写入 .claude-forge/decisions.md 持久化
11
+ */
12
+ export declare class PipelineReportGenerator {
13
+ private issueTracker;
14
+ private phaseManager;
15
+ constructor(issueTracker: IssueTracker, phaseManager: PhaseManager);
16
+ generate(pipeline: Pipeline): string;
17
+ /** 追加写入 .claude-forge/decisions.md */
18
+ persist(projectPath: string, markdown: string): void;
19
+ }
20
+ //# sourceMappingURL=report-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-generator.d.ts","sourceRoot":"","sources":["../../src/pipeline/report-generator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD;;;;;;;GAOG;AACH,qBAAa,uBAAuB;IAEhC,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,YAAY;gBADZ,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY;IAGpC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM;IA8FpC,sCAAsC;IACtC,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;CAcrD"}
@@ -0,0 +1,123 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { PHASE_LABELS } from './types.js';
4
+ import { logger } from '../utils/logger.js';
5
+ /**
6
+ * PipelineReportGenerator — Pipeline 完成报告生成器
7
+ *
8
+ * Pipeline 进入 done 阶段时调用,汇总问题台账 + 阶段统计,
9
+ * 生成 Markdown 报告并:
10
+ * 1. 返回报告文本(由调用方注入 systemMessage 展示给用户)
11
+ * 2. 追加写入 .claude-forge/decisions.md 持久化
12
+ */
13
+ export class PipelineReportGenerator {
14
+ issueTracker;
15
+ phaseManager;
16
+ constructor(issueTracker, phaseManager) {
17
+ this.issueTracker = issueTracker;
18
+ this.phaseManager = phaseManager;
19
+ }
20
+ generate(pipeline) {
21
+ const summary = this.issueTracker.getSummary(pipeline.id);
22
+ const allIssues = this.issueTracker.getAll(pipeline.id);
23
+ const snapshot = this.phaseManager.getSessionSnapshot(pipeline.id);
24
+ const now = new Date();
25
+ const dateStr = now.toLocaleDateString('zh-CN');
26
+ const timeStr = now.toLocaleTimeString('zh-CN', { hour: '2-digit', minute: '2-digit' });
27
+ const phases = (pipeline.plannedPhases ?? [pipeline.phase])
28
+ .filter(p => p !== 'done')
29
+ .map(p => PHASE_LABELS[p] ?? p)
30
+ .join(' → ');
31
+ const lines = [
32
+ `## Pipeline 完成报告 ${dateStr} ${timeStr}`,
33
+ '',
34
+ `**需求**:${pipeline.requirement}`,
35
+ `**阶段路径**:${phases || '(未记录)'}`,
36
+ '',
37
+ ];
38
+ // 问题台账汇总
39
+ lines.push('### 问题台账');
40
+ if (summary.total === 0) {
41
+ lines.push('本次 Pipeline 未发现任何质量问题。');
42
+ }
43
+ else {
44
+ lines.push('| 状态 | 数量 |');
45
+ lines.push('|------|------|');
46
+ lines.push(`| ✅ 已解决 | ${summary.resolved} |`);
47
+ lines.push(`| ⏭️ 强制放行 | ${summary.wontfix} |`);
48
+ lines.push(`| ⚠️ 未解决 | ${summary.open} |`);
49
+ lines.push(`| 合计 | ${summary.total} |`);
50
+ lines.push('');
51
+ // 按类别统计
52
+ const categoryLabels = {
53
+ requirement_ambiguity: '需求歧义',
54
+ architecture_conflict: '架构冲突',
55
+ design_gap: '设计遗漏',
56
+ code_quality: '代码质量',
57
+ security: '安全问题',
58
+ test_coverage: '测试覆盖',
59
+ performance: '性能问题',
60
+ risk_unhandled: '未处理风险',
61
+ };
62
+ const catEntries = Object.entries(summary.byCategory);
63
+ if (catEntries.length > 0) {
64
+ lines.push('**按类别统计**');
65
+ for (const [cat, count] of catEntries) {
66
+ const label = categoryLabels[cat] ?? cat;
67
+ const catIssues = allIssues.filter(i => i.category === cat);
68
+ const resolvedCount = catIssues.filter(i => i.status === 'resolved').length;
69
+ const wontfixCount = catIssues.filter(i => i.status === 'wontfix').length;
70
+ lines.push(`- ${label}:${count} 个(已解决 ${resolvedCount},强制放行 ${wontfixCount})`);
71
+ }
72
+ lines.push('');
73
+ }
74
+ // 修复统计
75
+ const totalFixAttempts = allIssues.reduce((sum, i) => sum + i.fixAttempts, 0);
76
+ const forgeDirectFixes = allIssues.filter(i => i.forgeFixApplied).length;
77
+ lines.push('### 修复统计');
78
+ lines.push(`- 总修复尝试:${totalFixAttempts} 次`);
79
+ lines.push(`- Forge 直接介入:${forgeDirectFixes} 次`);
80
+ lines.push(`- 自动解决:${summary.resolved} 个`);
81
+ lines.push('');
82
+ }
83
+ // 阶段工具调用统计
84
+ if (snapshot.length > 0) {
85
+ lines.push('### 阶段工具调用统计');
86
+ for (const s of snapshot) {
87
+ const label = PHASE_LABELS[s.phase] ?? s.phase;
88
+ lines.push(`- ${label}:${s.tool_call_count} 次工具调用,${s.write_edit_count} 次写入`);
89
+ }
90
+ lines.push('');
91
+ }
92
+ // 未解决问题明细(如有)
93
+ const openIssues = allIssues.filter(i => i.status === 'open' || i.status === 'in_progress');
94
+ if (openIssues.length > 0) {
95
+ lines.push('### 未解决问题明细');
96
+ for (const issue of openIssues) {
97
+ const phaseLabel = PHASE_LABELS[issue.sourcePhase] ?? issue.sourcePhase;
98
+ lines.push(`- [${phaseLabel}] ${issue.message}`);
99
+ if (issue.suggestion)
100
+ lines.push(` 建议:${issue.suggestion}`);
101
+ }
102
+ lines.push('');
103
+ }
104
+ return lines.join('\n');
105
+ }
106
+ /** 追加写入 .claude-forge/decisions.md */
107
+ persist(projectPath, markdown) {
108
+ try {
109
+ const forgeDir = path.join(projectPath, '.claude-forge');
110
+ if (!fs.existsSync(forgeDir)) {
111
+ fs.mkdirSync(forgeDir, { recursive: true });
112
+ }
113
+ const decisionsPath = path.join(forgeDir, 'decisions.md');
114
+ const entry = `\n---\n${markdown}\n`;
115
+ fs.appendFileSync(decisionsPath, entry, 'utf-8');
116
+ logger.info(`[Pipeline 报告] 已写入 decisions.md(${markdown.length} 字符)`);
117
+ }
118
+ catch (err) {
119
+ logger.warn(`[Pipeline 报告] 写入 decisions.md 失败:${err}`);
120
+ }
121
+ }
122
+ }
123
+ //# sourceMappingURL=report-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-generator.js","sourceRoot":"","sources":["../../src/pipeline/report-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ 你是一个 SDLC 意图分析引擎。请根据用户需求和项目实际情况,判断这个任务的复杂度和是否需要 Pipeline 编排。
2
+
3
+ ## 用户输入
4
+ {{userPrompt}}
5
+ {{historySection}}{{planSection}}{{userContextSection}}
6
+ ## 项目信息
7
+ 路径: {{projectPath}}
8
+ {{techStackSection}}
9
+ {{projectStructureSection}}
10
+ {{contextInfoSection}}
11
+
12
+ ## 判断逻辑(按优先级)
13
+
14
+ 1. **这个需求是否涉及代码改动?**
15
+ - 不涉及(纯对话、提问、查看、运行命令)→ simple
16
+ - 涉及 → 继续判断
17
+
18
+ 2. **改动范围有多大?**(结合项目结构推断)
19
+ - 改 1-2 个文件,逻辑清晰 → simple,不需要编排
20
+ - 改 3-5 个文件,改动模式明确,问题定位清晰 → moderate,不需要编排
21
+ - 改动 6+ 个文件,或需求模糊需要先拆分 → complex,需要编排
22
+
23
+ 3. **是否需要 Pipeline 编排?**(仅在以下情况启用)
24
+ - 需求非常模糊,需要先 analyze 阶段梳理
25
+ - 涉及多个模块的架构级改动,需要 design 阶段规划
26
+ - 改动量大(10+ 文件)且需要任务拆分
27
+ - 新功能开发需要完整的质量管控流程
28
+
29
+ ## 重要原则
30
+ - **优化/修复类任务**:即使涉及多个文件,只要问题定位明确、改动模式清晰,应判定为 moderate,不启动 Pipeline
31
+ - **Bug 修复**:除非涉及架构级重构,否则都是 simple 或 moderate
32
+ - **配置调整**:即使涉及多个配置文件,也是 moderate
33
+ - **代码审查/优化**:如果是针对现有代码的优化,不是新功能开发,应判定为 moderate
34
+
35
+ ## 输出格式(严格 JSON)
36
+ {
37
+ "complexity": "simple|moderate|complex",
38
+ "requiresPipeline": true/false,
39
+ "requirement": "提炼后的一句话需求",
40
+ "reasoning": "判断理由:为什么是这个复杂度,预估改动哪些文件/模块,为什么需要或不需要编排",
41
+ "estimatedFiles": 预估改动文件数(数字),
42
+ "suggestedPhases": ["analyze", "design", "code", "test", "review"],
43
+ "clarifyQuestions": ["需要向用户确认的问题(当需求不明确时)"],
44
+ "searchKeywords": ["相关最佳实践关键词"],
45
+ "confidence": 0.0-1.0 置信度(必填)
46
+ }
47
+
48
+ 注意:
49
+ - simple 时 suggestedPhases 为空数组,requiresPipeline 为 false
50
+ - moderate 时 requiresPipeline 为 false,suggestedPhases 可包含 code/test
51
+ - complex 时 requiresPipeline 为 true,suggestedPhases 包含完整流程
52
+ - clarifyQuestions 触发条件(满足任一即必须填写):
53
+ * 需求中有歧义词("优化"、"改进"、"处理"、"搞一下"等,没有明确目标)
54
+ * 涉及多个可能的实现方案,需要用户选择
55
+ * 缺少关键信息(如目标文件、功能范围、技术选型)
56
+ * 不满足以上条件时,clarifyQuestions 为空数组 []
57
+ - confidence 置信度评估标准:
58
+ * 0.8-1.0: 需求明确,改动范围清晰,有充分上下文支持
59
+ * 0.6-0.8: 需求基本明确,但缺少部分细节或上下文
60
+ * 0.4-0.6: 需求模糊,存在多种理解可能,建议主动澄清
61
+ * 0.0-0.4: 需求严重不明确,必须澄清后才能继续
62
+ - 只输出 JSON,不要其他内容
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Prompt Registry:集中管理版本化的 prompt 模板
3
+ *
4
+ * 所有 prompt 存储在 src/prompts/*.md 文件中,支持 {{variable}} 占位符替换。
5
+ */
6
+ export declare class PromptRegistry {
7
+ private static cache;
8
+ /**
9
+ * 加载并渲染 prompt 模板
10
+ * @param name - prompt 文件名(不含 .md 后缀)
11
+ * @param vars - 变量替换映射
12
+ */
13
+ static load(name: string, vars?: Record<string, string>): string;
14
+ /** 清空缓存(测试用) */
15
+ static clearCache(): void;
16
+ }
17
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/prompts/registry.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAA6B;IAEjD;;;;OAIG;IACH,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,MAAM;IAsBpE,gBAAgB;IAChB,MAAM,CAAC,UAAU,IAAI,IAAI;CAG1B"}
@@ -0,0 +1,40 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { fileURLToPath } from 'url';
4
+ const __filename = fileURLToPath(import.meta.url);
5
+ const __dirname = path.dirname(__filename);
6
+ /**
7
+ * Prompt Registry:集中管理版本化的 prompt 模板
8
+ *
9
+ * 所有 prompt 存储在 src/prompts/*.md 文件中,支持 {{variable}} 占位符替换。
10
+ */
11
+ export class PromptRegistry {
12
+ static cache = new Map();
13
+ /**
14
+ * 加载并渲染 prompt 模板
15
+ * @param name - prompt 文件名(不含 .md 后缀)
16
+ * @param vars - 变量替换映射
17
+ */
18
+ static load(name, vars = {}) {
19
+ const cacheKey = `${name}:${JSON.stringify(vars)}`;
20
+ if (this.cache.has(cacheKey)) {
21
+ return this.cache.get(cacheKey);
22
+ }
23
+ const filePath = path.join(__dirname, `${name}.md`);
24
+ if (!fs.existsSync(filePath)) {
25
+ throw new Error(`Prompt 模板不存在: ${name}.md`);
26
+ }
27
+ let template = fs.readFileSync(filePath, 'utf-8');
28
+ // 替换 {{variable}} 占位符
29
+ for (const [key, value] of Object.entries(vars)) {
30
+ template = template.replace(new RegExp(`\\{\\{${key}\\}\\}`, 'g'), value);
31
+ }
32
+ this.cache.set(cacheKey, template);
33
+ return template;
34
+ }
35
+ /** 清空缓存(测试用) */
36
+ static clearCache() {
37
+ this.cache.clear();
38
+ }
39
+ }
40
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/prompts/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C;;;;GAIG;AACH,MAAM,OAAO,cAAc;IACjB,MAAM,CAAC,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEjD;;;;OAIG;IACH,MAAM,CAAC,IAAI,CAAC,IAAY,EAAE,OAA+B,EAAE;QACzD,MAAM,QAAQ,GAAG,GAAG,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;QACnC,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAElD,sBAAsB;QACtB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,SAAS,GAAG,QAAQ,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QAC5E,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACnC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,gBAAgB;IAChB,MAAM,CAAC,UAAU;QACf,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { SkillRegistry } from '../registry.js';
2
2
  import type { AIProvider } from '../../ai-provider/types.js';
3
- import type { PatternEvolver } from '../../pattern-engine/pattern-evolver.js';
3
+ import type { PatternEvolver } from '../pattern-evolver.js';
4
4
  export { extractSkillMd, bumpVersion } from './shared.js';
5
5
  export interface EvolveReport {
6
6
  repaired: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/skill-registry/evolver/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAS9E,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1D,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAMD,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,cAAc,CAA+B;gBAEzC,QAAQ,EAAE,aAAa,EAAE,GAAG,EAAE,UAAU;IAOpD,0CAA0C;IAC1C,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAIhD;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IA+DrC;;OAEG;IACH,gBAAgB,IAAI,OAAO;IAU3B;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIzC;;OAEG;IACG,oBAAoB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI/C;;OAEG;IACG,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIhD;;;OAGG;IACG,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA+C3E,OAAO,CAAC,eAAe;IASvB,eAAe,IAAI,IAAI;CAOxB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/skill-registry/evolver/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAS5D,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1D,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAMD,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,cAAc,CAA+B;gBAEzC,QAAQ,EAAE,aAAa,EAAE,GAAG,EAAE,UAAU;IAOpD,0CAA0C;IAC1C,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAIhD;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IA+DrC;;OAEG;IACH,gBAAgB,IAAI,OAAO;IAU3B;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIzC;;OAEG;IACG,oBAAoB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI/C;;OAEG;IACG,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIhD;;;OAGG;IACG,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA+C3E,OAAO,CAAC,eAAe;IASvB,eAAe,IAAI,IAAI;CAOxB"}
@@ -1,6 +1,6 @@
1
1
  import type { AIProvider } from '../ai-provider/types.js';
2
2
  import type { SQLiteStorage } from '../storage/sqlite.js';
3
- import type { Pattern } from './types.js';
3
+ import type { Pattern } from '../pipeline/pattern-types.js';
4
4
  import type { Convention } from '../convention/types.js';
5
5
  interface EvolveResult {
6
6
  patternId: string;
@@ -15,9 +15,13 @@ interface EvolveResult {
15
15
  export declare class PatternEvolver {
16
16
  private api;
17
17
  private storage;
18
- private loader;
18
+ private patternsDir;
19
19
  private defaultMinExecutions;
20
20
  constructor(api: AIProvider, storage: SQLiteStorage, defaultMinExecutions?: number);
21
+ /**
22
+ * 加载所有 Pattern YAML 文件
23
+ */
24
+ private loadAll;
21
25
  /**
22
26
  * 对所有 Pattern 执行自进化。
23
27
  * 返回每个实际被优化的 Pattern 的进化报告。
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern-evolver.d.ts","sourceRoot":"","sources":["../../src/skill-registry/pattern-evolver.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAoB,MAAM,8BAA8B,CAAC;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAazD,UAAU,YAAY;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,oBAAoB,CAAS;gBAEzB,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,oBAAoB,SAAK;IAO9E;;OAEG;IACH,OAAO,CAAC,OAAO;IAuBf;;;;OAIG;IACG,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAiB7F;;;;OAIG;IACG,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,SAAK,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAqCvH,OAAO,CAAC,cAAc;YAuBR,cAAc;IAkE5B,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,SAAS;CAqClB"}