@winspan/claude-forge 0.4.2 → 0.4.5

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 (89) hide show
  1. package/README.md +1 -1
  2. package/dist/autopilot/intent-engine.d.ts +2 -2
  3. package/dist/autopilot/intent-engine.d.ts.map +1 -1
  4. package/dist/autopilot/intent-engine.js +16 -4
  5. package/dist/autopilot/intent-engine.js.map +1 -1
  6. package/dist/autopilot/quality-gate.d.ts +17 -1
  7. package/dist/autopilot/quality-gate.d.ts.map +1 -1
  8. package/dist/autopilot/quality-gate.js +89 -5
  9. package/dist/autopilot/quality-gate.js.map +1 -1
  10. package/dist/daemon/engine-registry/init-autopilot.d.ts +2 -1
  11. package/dist/daemon/engine-registry/init-autopilot.d.ts.map +1 -1
  12. package/dist/daemon/engine-registry/init-autopilot.js +3 -2
  13. package/dist/daemon/engine-registry/init-autopilot.js.map +1 -1
  14. package/dist/daemon/engine-registry.js +1 -1
  15. package/dist/daemon/engine-registry.js.map +1 -1
  16. package/dist/daemon/handlers/post-tool-use-handler.d.ts.map +1 -1
  17. package/dist/daemon/handlers/post-tool-use-handler.js +2 -0
  18. package/dist/daemon/handlers/post-tool-use-handler.js.map +1 -1
  19. package/dist/daemon/handlers/pre-tool-use-handler.d.ts.map +1 -1
  20. package/dist/daemon/handlers/pre-tool-use-handler.js +9 -0
  21. package/dist/daemon/handlers/pre-tool-use-handler.js.map +1 -1
  22. package/dist/daemon/handlers/session-cleanup.d.ts.map +1 -1
  23. package/dist/daemon/handlers/session-cleanup.js +4 -5
  24. package/dist/daemon/handlers/session-cleanup.js.map +1 -1
  25. package/dist/daemon/handlers/user-prompt-handler.d.ts.map +1 -1
  26. package/dist/daemon/handlers/user-prompt-handler.js +20 -4
  27. package/dist/daemon/handlers/user-prompt-handler.js.map +1 -1
  28. package/dist/daemon/lifecycle.d.ts +7 -0
  29. package/dist/daemon/lifecycle.d.ts.map +1 -1
  30. package/dist/daemon/lifecycle.js +15 -0
  31. package/dist/daemon/lifecycle.js.map +1 -1
  32. package/dist/pattern-engine/execution-tracker.d.ts +1 -1
  33. package/dist/pattern-engine/execution-tracker.d.ts.map +1 -1
  34. package/dist/pattern-engine/execution-tracker.js +5 -1
  35. package/dist/pattern-engine/execution-tracker.js.map +1 -1
  36. package/dist/pattern-engine/index.d.ts.map +1 -1
  37. package/dist/pattern-engine/index.js +1 -0
  38. package/dist/pattern-engine/index.js.map +1 -1
  39. package/dist/pattern-engine/pattern-evolver.d.ts.map +1 -1
  40. package/dist/pattern-engine/pattern-evolver.js +31 -12
  41. package/dist/pattern-engine/pattern-evolver.js.map +1 -1
  42. package/dist/pattern-engine/types.d.ts +2 -0
  43. package/dist/pattern-engine/types.d.ts.map +1 -1
  44. package/dist/pipeline/analyzer.d.ts +19 -4
  45. package/dist/pipeline/analyzer.d.ts.map +1 -1
  46. package/dist/pipeline/analyzer.js +172 -59
  47. package/dist/pipeline/analyzer.js.map +1 -1
  48. package/dist/pipeline/artifact-generator.d.ts +6 -9
  49. package/dist/pipeline/artifact-generator.d.ts.map +1 -1
  50. package/dist/pipeline/artifact-generator.js +68 -29
  51. package/dist/pipeline/artifact-generator.js.map +1 -1
  52. package/dist/pipeline/index.d.ts +0 -19
  53. package/dist/pipeline/index.d.ts.map +1 -1
  54. package/dist/pipeline/index.js +7 -30
  55. package/dist/pipeline/index.js.map +1 -1
  56. package/dist/pipeline/phase-manager.d.ts +1 -1
  57. package/dist/pipeline/phase-manager.d.ts.map +1 -1
  58. package/dist/pipeline/phase-manager.js +23 -13
  59. package/dist/pipeline/phase-manager.js.map +1 -1
  60. package/dist/pipeline/store.d.ts +1 -1
  61. package/dist/pipeline/store.d.ts.map +1 -1
  62. package/dist/pipeline/store.js +15 -5
  63. package/dist/pipeline/store.js.map +1 -1
  64. package/dist/pipeline/types.d.ts +7 -2
  65. package/dist/pipeline/types.d.ts.map +1 -1
  66. package/dist/pipeline/types.js +6 -4
  67. package/dist/pipeline/types.js.map +1 -1
  68. package/dist/retrospective/index.d.ts.map +1 -1
  69. package/dist/retrospective/index.js +23 -13
  70. package/dist/retrospective/index.js.map +1 -1
  71. package/dist/retrospective/report-writer.d.ts +6 -7
  72. package/dist/retrospective/report-writer.d.ts.map +1 -1
  73. package/dist/retrospective/report-writer.js +47 -103
  74. package/dist/retrospective/report-writer.js.map +1 -1
  75. package/dist/storage/index.d.ts +37 -0
  76. package/dist/storage/index.d.ts.map +1 -1
  77. package/dist/storage/sqlite.d.ts +61 -0
  78. package/dist/storage/sqlite.d.ts.map +1 -1
  79. package/dist/storage/sqlite.js +251 -1
  80. package/dist/storage/sqlite.js.map +1 -1
  81. package/dist/strategy/bandit.d.ts +12 -0
  82. package/dist/strategy/bandit.d.ts.map +1 -1
  83. package/dist/strategy/bandit.js +38 -2
  84. package/dist/strategy/bandit.js.map +1 -1
  85. package/dist/utils/artifact-manager.d.ts +57 -0
  86. package/dist/utils/artifact-manager.d.ts.map +1 -0
  87. package/dist/utils/artifact-manager.js +164 -0
  88. package/dist/utils/artifact-manager.js.map +1 -0
  89. package/package.json +1 -1
@@ -1,17 +1,32 @@
1
1
  import type { AIProvider } from '../ai-provider/types.js';
2
- import type { PipelineTask } from './types.js';
2
+ import type { PipelineTask, PipelinePhase } from './types.js';
3
3
  export declare class PipelineAnalyzer {
4
4
  private api;
5
5
  private detector;
6
6
  constructor(api: AIProvider);
7
7
  /**
8
- * 将一句话需求分解为任务树
8
+ * 将一句话需求分解为任务树(AI 智能编排)
9
9
  */
10
10
  decompose(requirement: string, projectPath: string): Promise<{
11
11
  tasks: Array<Omit<PipelineTask, 'id'>>;
12
12
  techStack: string;
13
+ complexity: 'simple' | 'moderate' | 'complex';
14
+ taskType: 'bugfix' | 'feature' | 'refactor' | 'performance' | 'other';
15
+ plannedPhases: PipelinePhase[];
16
+ phaseArtifacts: Record<string, string[]>;
17
+ reasoning: string;
13
18
  }>;
14
- private parseTasksFromResponse;
15
- private defaultTasks;
19
+ /**
20
+ * 构建 AI 智能编排 prompt
21
+ */
22
+ private buildIntelligentPrompt;
23
+ /**
24
+ * 解析 AI 智能编排响应
25
+ */
26
+ private parseIntelligentResponse;
27
+ /**
28
+ * 降级方案:AI 失败时使用的默认编排
29
+ */
30
+ private fallbackPlan;
16
31
  }
17
32
  //# sourceMappingURL=analyzer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../src/pipeline/analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAG1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,QAAQ,CAAoB;gBAExB,GAAG,EAAE,UAAU;IAK3B;;OAEG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;QACjE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;QACvC,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IA6DF,OAAO,CAAC,sBAAsB;IAgC9B,OAAO,CAAC,YAAY;CASrB"}
1
+ {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../src/pipeline/analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAI1D,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAU9D,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,QAAQ,CAAoB;gBAExB,GAAG,EAAE,UAAU;IAK3B;;OAEG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;QACjE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;QACvC,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;QAC9C,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,aAAa,GAAG,OAAO,CAAC;QACtE,aAAa,EAAE,aAAa,EAAE,CAAC;QAC/B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACzC,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IA6BF;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkF9B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAuDhC;;OAEG;IACH,OAAO,CAAC,YAAY;CAuDrB"}
@@ -8,7 +8,7 @@ export class PipelineAnalyzer {
8
8
  this.detector = new TechStackDetector();
9
9
  }
10
10
  /**
11
- * 将一句话需求分解为任务树
11
+ * 将一句话需求分解为任务树(AI 智能编排)
12
12
  */
13
13
  async decompose(requirement, projectPath) {
14
14
  // 检测项目技术栈
@@ -17,8 +17,28 @@ export class PipelineAnalyzer {
17
17
  ...profile.languages.map(l => l.name),
18
18
  ...profile.frameworks.map(f => f.name),
19
19
  ].join(', ') || '未检测到(新项目)';
20
- logger.info(`[Pipeline] 正在分解:"${requirement}" | 技术栈:${techStack}`);
21
- const prompt = `你是一个资深软件架构师。请将以下一句话需求分解为可执行的任务列表。
20
+ logger.info(`[Pipeline] 正在智能分解:"${requirement}"`);
21
+ const prompt = this.buildIntelligentPrompt(requirement, techStack, profile);
22
+ try {
23
+ const response = await this.api.complete(prompt, 'pipeline');
24
+ const result = this.parseIntelligentResponse(response);
25
+ if (!result || result.tasks.length === 0) {
26
+ logger.warn('[Pipeline] AI 输出解析失败,使用降级方案');
27
+ return this.fallbackPlan(requirement, techStack);
28
+ }
29
+ logger.info(`[Pipeline] 智能分解完成:${result.complexity} | ${result.taskType} | ${result.plannedPhases.length} 阶段`);
30
+ return { ...result, techStack };
31
+ }
32
+ catch (err) {
33
+ logger.error(`[Pipeline] 分解失败:${err}`);
34
+ return this.fallbackPlan(requirement, techStack);
35
+ }
36
+ }
37
+ /**
38
+ * 构建 AI 智能编排 prompt
39
+ */
40
+ buildIntelligentPrompt(requirement, techStack, profile) {
41
+ return `你是一位资深软件架构师,请分析以下需求,输出智能编排方案。
22
42
 
23
43
  ## 需求
24
44
  ${requirement}
@@ -28,76 +48,169 @@ ${techStack}
28
48
  ${profile.packageManager ? `包管理器: ${profile.packageManager}` : ''}
29
49
  ${profile.testFramework ? `测试框架: ${profile.testFramework}` : ''}
30
50
 
51
+ ## 评估维度
52
+
53
+ 1. **复杂度**(选一个):
54
+ - simple:单文件修改,<50行,无架构变更
55
+ - moderate:多文件,单模块,无新架构
56
+ - complex:多模块,新架构,或需要 profiling/benchmark
57
+
58
+ 2. **任务类型**(选一个):
59
+ - bugfix:修复已有问题
60
+ - feature:新增功能
61
+ - refactor:重构/优化
62
+ - performance:性能优化(需要 profiling 阶段)
63
+ - other:其他
64
+
65
+ 3. **阶段规划**(从以下选择,顺序自定):
66
+ - analyze:需求分析/问题定位
67
+ - design:架构/方案设计(复杂需求才需要)
68
+ - profile:性能分析(仅 performance 类型)
69
+ - code:编码实现
70
+ - test:测试验证
71
+ - review:代码审查(复杂需求才需要)
72
+
73
+ 4. **产物清单**:每个阶段需要生成哪些文档(文件名.md)
74
+
75
+ ## 规则
76
+
77
+ - **simple bugfix**:phases = [analyze, code, test],每阶段 1 个产物
78
+ - **moderate feature**:phases = [analyze, design, code, test],design 阶段 2-3 个产物
79
+ - **complex feature**:phases = [analyze, design, code, test, review],design 阶段 4+ 个产物
80
+ - **performance**:必须包含 profile 阶段,产物包含 profiling-report.md 和 benchmark-results.md
81
+ - **refactor**:根据范围决定是否需要 design,必须包含 review
82
+
31
83
  ## 输出格式
32
- 输出 JSON 数组,每个任务包含:
33
- - title: 任务标题(简短)
34
- - phase: 所属阶段(analyze/design/code/test/review)
35
- - description: 详细描述(包含具体操作步骤)
36
- - dependencies: 依赖的任务 title 数组
37
84
 
38
- ## 要求
39
- 1. 按 SDLC 阶段划分:analyze → design → code → test → review
40
- 2. 每个阶段至少 1 个任务,不超过 3 个
41
- 3. code 阶段按模块拆分(如前端/后端/数据库)
42
- 4. test 阶段包含单元测试和集成测试
43
- 5. description 要具体到文件和命令
44
- 6. 如果是新项目,analyze 阶段要包含项目初始化(目录结构、依赖安装)
45
- 7. 用中文
46
- 8. 只输出 JSON 数组,不要其他内容
85
+ 只输出 JSON,不要其他内容:
47
86
 
48
- 示例格式:
49
- [
50
- {"title":"需求分析","phase":"analyze","description":"...","dependencies":[]},
51
- {"title":"技术方案设计","phase":"design","description":"...","dependencies":["需求分析"]}
52
- ]`;
53
- try {
54
- const response = await this.api.complete(prompt, 'pipeline');
55
- const tasks = this.parseTasksFromResponse(response);
56
- if (tasks.length === 0) {
57
- logger.warn('[Pipeline] No tasks parsed from AI response, falling back to defaults');
58
- return { tasks: this.defaultTasks(requirement), techStack };
59
- }
60
- logger.info(`[Pipeline] 已分解为 ${tasks.length} 个任务`);
61
- return { tasks, techStack };
62
- }
63
- catch (err) {
64
- logger.error(`[Pipeline] 分解失败:${err}`);
65
- // 降级:使用默认任务模板
66
- return { tasks: this.defaultTasks(requirement), techStack };
67
- }
87
+ \`\`\`json
88
+ {
89
+ "complexity": "simple",
90
+ "taskType": "bugfix",
91
+ "phases": ["analyze", "code", "test"],
92
+ "tasks": [
93
+ {
94
+ "title": "定位问题根因",
95
+ "phase": "analyze",
96
+ "description": "分析错误日志,定位根因和需要修复的文件",
97
+ "dependencies": []
98
+ },
99
+ {
100
+ "title": "执行修复",
101
+ "phase": "code",
102
+ "description": "修改 src/utils/helper.ts 中的逻辑错误",
103
+ "dependencies": ["定位问题根因"]
104
+ },
105
+ {
106
+ "title": "验证修复效果",
107
+ "phase": "test",
108
+ "description": "运行单元测试,确认问题已解决",
109
+ "dependencies": ["执行修复"]
110
+ }
111
+ ],
112
+ "artifacts": {
113
+ "analyze": ["bugfix-plan.md"],
114
+ "code": ["fix-changes.md"],
115
+ "test": ["test-report.md"]
116
+ },
117
+ "reasoning": "简单 bug 修复,单文件改动,无需设计和审查阶段"
118
+ }
119
+ \`\`\``;
68
120
  }
69
- parseTasksFromResponse(response) {
121
+ /**
122
+ * 解析 AI 智能编排响应
123
+ */
124
+ parseIntelligentResponse(response) {
70
125
  // 去除代码围栏
71
126
  let cleaned = response.replace(/```json\s*/g, '').replace(/```\s*/g, '');
72
- // 提取 JSON 数组
73
- const jsonMatch = cleaned.match(/\[[\s\S]*\]/);
127
+ // 提取 JSON 对象
128
+ const jsonMatch = cleaned.match(/\{[\s\S]*\}/);
74
129
  if (!jsonMatch) {
75
- logger.warn('[Pipeline] No JSON array found in response');
76
- return [];
130
+ logger.warn('[Pipeline] No JSON object found in response');
131
+ return null;
77
132
  }
78
133
  try {
79
134
  const raw = JSON.parse(jsonMatch[0]);
80
- return raw.map(t => ({
81
- title: t.title,
82
- phase: t.phase,
83
- status: 'pending',
84
- description: t.description,
85
- dependencies: t.dependencies || [],
86
- }));
135
+ // 验证必需字段
136
+ if (!raw.complexity || !raw.phases || !raw.tasks || !raw.artifacts) {
137
+ logger.warn('[Pipeline] AI 输出缺少必需字段');
138
+ return null;
139
+ }
140
+ // 验证 phases 有效性
141
+ const validPhases = ['analyze', 'design', 'profile', 'code', 'test', 'review'];
142
+ const phases = raw.phases.filter((p) => validPhases.includes(p));
143
+ if (phases.length === 0) {
144
+ logger.warn('[Pipeline] AI 输出的 phases 无效');
145
+ return null;
146
+ }
147
+ return {
148
+ complexity: raw.complexity,
149
+ taskType: raw.taskType || 'other',
150
+ plannedPhases: phases,
151
+ phaseArtifacts: raw.artifacts,
152
+ reasoning: raw.reasoning || '',
153
+ tasks: raw.tasks.map((t) => ({
154
+ title: t.title,
155
+ phase: t.phase,
156
+ status: 'pending',
157
+ description: t.description,
158
+ dependencies: t.dependencies || [],
159
+ })),
160
+ };
87
161
  }
88
162
  catch (err) {
89
- logger.warn(`[Pipeline] 任务 JSON 解析失败:${err}`);
90
- return [];
163
+ logger.warn(`[Pipeline] JSON 解析失败:${err}`);
164
+ return null;
91
165
  }
92
166
  }
93
- defaultTasks(requirement) {
94
- return [
95
- { title: '需求分析', phase: 'analyze', status: 'pending', description: `分析需求:${requirement},列出功能点和技术方案`, dependencies: [] },
96
- { title: '架构设计', phase: 'design', status: 'pending', description: '设计系统架构,输出目录结构和核心接口', dependencies: ['需求分析'] },
97
- { title: '核心功能实现', phase: 'code', status: 'pending', description: '按设计方案编写核心代码', dependencies: ['架构设计'] },
98
- { title: '单元测试', phase: 'test', status: 'pending', description: '为核心模块编写单元测试', dependencies: ['核心功能实现'] },
99
- { title: '代码审查', phase: 'review', status: 'pending', description: '检查代码质量、安全性、性能', dependencies: ['单元测试'] },
100
- ];
167
+ /**
168
+ * 降级方案:AI 失败时使用的默认编排
169
+ */
170
+ fallbackPlan(requirement, techStack) {
171
+ // 简单启发式判断
172
+ const isBugfix = /修复|bug|fix|问题|错误/i.test(requirement);
173
+ const isSimple = requirement.length < 100;
174
+ if (isBugfix && isSimple) {
175
+ return {
176
+ tasks: [
177
+ { title: '定位问题根因', phase: 'analyze', status: 'pending', description: `分析问题:${requirement}`, dependencies: [] },
178
+ { title: '执行修复', phase: 'code', status: 'pending', description: '按定位结果修复代码', dependencies: ['定位问题根因'] },
179
+ { title: '验证修复效果', phase: 'test', status: 'pending', description: '运行测试验证修复', dependencies: ['执行修复'] },
180
+ ],
181
+ techStack,
182
+ complexity: 'simple',
183
+ taskType: 'bugfix',
184
+ plannedPhases: ['analyze', 'code', 'test'],
185
+ phaseArtifacts: {
186
+ analyze: ['bugfix-plan.md'],
187
+ code: ['fix-changes.md'],
188
+ test: ['test-report.md'],
189
+ },
190
+ reasoning: '降级方案:简单 bug 修复',
191
+ };
192
+ }
193
+ return {
194
+ tasks: [
195
+ { title: '需求分析', phase: 'analyze', status: 'pending', description: `分析需求:${requirement}`, dependencies: [] },
196
+ { title: '架构设计', phase: 'design', status: 'pending', description: '设计系统架构', dependencies: ['需求分析'] },
197
+ { title: '核心功能实现', phase: 'code', status: 'pending', description: '按设计方案编写代码', dependencies: ['架构设计'] },
198
+ { title: '单元测试', phase: 'test', status: 'pending', description: '为核心模块编写测试', dependencies: ['核心功能实现'] },
199
+ { title: '代码审查', phase: 'review', status: 'pending', description: '检查代码质量', dependencies: ['单元测试'] },
200
+ ],
201
+ techStack,
202
+ complexity: 'moderate',
203
+ taskType: 'feature',
204
+ plannedPhases: ['analyze', 'design', 'code', 'test', 'review'],
205
+ phaseArtifacts: {
206
+ analyze: ['requirements.md', 'prd.md'],
207
+ design: ['architecture.md', 'detailed-design.md'],
208
+ code: ['code-changes.md'],
209
+ test: ['test-report.md'],
210
+ review: ['review-report.md'],
211
+ },
212
+ reasoning: '降级方案:标准功能开发流程',
213
+ };
101
214
  }
102
215
  }
103
216
  //# sourceMappingURL=analyzer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../../src/pipeline/analyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../../src/pipeline/analyzer.ts"],"names":[],"mappings":"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"}
@@ -8,19 +8,16 @@ export declare class PhaseArtifactGenerator {
8
8
  private projectPath;
9
9
  private api;
10
10
  private storage;
11
- constructor(projectPath: string, api: AIProvider, storage: StorageEngine);
11
+ private pipeline;
12
+ private artifactManager;
13
+ constructor(projectPath: string, api: AIProvider, storage: StorageEngine, pipeline: Pipeline);
12
14
  /**
13
- * 为指定阶段生成产物,写入 .claude-forge/docs/YYYY-MM-DD_HH-MM/ 目录
15
+ * 为指定阶段生成产物,写入 docs/YYYY-MM-DD_HH-MM-SS/ 目录
14
16
  * 幂等:若产物已存在则跳过
15
17
  */
16
- generateForPhase(phase: PipelinePhase, pipeline: Pipeline, sessionId: string, outputDir: string): Promise<void>;
18
+ generateForPhase(phase: PipelinePhase, pipeline: Pipeline, sessionId: string): Promise<void>;
17
19
  /**
18
- * 获取或创建本次 session 的产物目录
19
- * 格式:<project>/.claude-forge/docs/YYYY-MM-DD_HH-MM/
20
- */
21
- static resolveOutputDir(projectPath: string, sessionStartTime: string): string;
22
- /**
23
- * 获取指定阶段的产物文件名列表
20
+ * 获取指定阶段的产物文件名列表(从 Pipeline 的 phaseArtifacts 读取,或降级到默认映射)
24
21
  */
25
22
  private getArtifactFiles;
26
23
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-generator.d.ts","sourceRoot":"","sources":["../../src/pipeline/artifact-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAM1D;;GAEG;AACH,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,OAAO;gBAFP,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,aAAa;IAGhC;;;OAGG;IACG,gBAAgB,CACpB,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;IAyEhB;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM;IAW9E;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAYxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqC1B;;OAEG;IACH,OAAO,CAAC,WAAW;CA+IpB"}
1
+ {"version":3,"file":"artifact-generator.d.ts","sourceRoot":"","sources":["../../src/pipeline/artifact-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAO1D;;GAEG;AACH,qBAAa,sBAAsB;IAI/B,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,QAAQ;IANlB,OAAO,CAAC,eAAe,CAAkB;gBAG/B,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,QAAQ;IAK5B;;;OAGG;IACG,gBAAgB,CACpB,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;IA2EhB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAiExB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqC1B;;OAEG;IACH,OAAO,CAAC,WAAW;CA+IpB"}
@@ -1,5 +1,6 @@
1
1
  import { PHASE_LABELS } from './types.js';
2
2
  import { logger } from '../utils/logger.js';
3
+ import { ArtifactManager } from '../utils/artifact-manager.js';
3
4
  import fs from 'fs';
4
5
  import path from 'path';
5
6
  /**
@@ -9,27 +10,28 @@ export class PhaseArtifactGenerator {
9
10
  projectPath;
10
11
  api;
11
12
  storage;
12
- constructor(projectPath, api, storage) {
13
+ pipeline;
14
+ artifactManager;
15
+ constructor(projectPath, api, storage, pipeline) {
13
16
  this.projectPath = projectPath;
14
17
  this.api = api;
15
18
  this.storage = storage;
19
+ this.pipeline = pipeline;
20
+ this.artifactManager = new ArtifactManager(projectPath);
16
21
  }
17
22
  /**
18
- * 为指定阶段生成产物,写入 .claude-forge/docs/YYYY-MM-DD_HH-MM/ 目录
23
+ * 为指定阶段生成产物,写入 docs/YYYY-MM-DD_HH-MM-SS/ 目录
19
24
  * 幂等:若产物已存在则跳过
20
25
  */
21
- async generateForPhase(phase, pipeline, sessionId, outputDir) {
26
+ async generateForPhase(phase, pipeline, sessionId) {
22
27
  if (phase === 'done')
23
28
  return;
24
29
  const artifacts = this.getArtifactFiles(phase);
25
30
  if (artifacts.length === 0)
26
31
  return;
27
- // 确保输出目录存在
28
- if (!fs.existsSync(outputDir)) {
29
- fs.mkdirSync(outputDir, { recursive: true });
30
- }
32
+ const sessionDir = this.artifactManager.getCurrentSessionDir();
31
33
  // 检查幂等:所有产物文件都存在则跳过
32
- const allExist = artifacts.every(filename => fs.existsSync(path.join(outputDir, filename)));
34
+ const allExist = artifacts.every(filename => fs.existsSync(path.join(sessionDir, filename)));
33
35
  if (allExist) {
34
36
  logger.debug(`[Forge:阶段产物] ${PHASE_LABELS[phase]} 产物已存在,跳过生成`);
35
37
  return;
@@ -47,7 +49,7 @@ export class PhaseArtifactGenerator {
47
49
  const phaseEvents = this.extractPhaseEvents(events, phase);
48
50
  // 为每个产物文件生成内容
49
51
  for (const filename of artifacts) {
50
- const filePath = path.join(outputDir, filename);
52
+ const filePath = path.join(sessionDir, filename);
51
53
  if (fs.existsSync(filePath)) {
52
54
  logger.debug(`[Forge:阶段产物] ${filename} 已存在,跳过`);
53
55
  continue;
@@ -73,10 +75,13 @@ export class PhaseArtifactGenerator {
73
75
  }
74
76
  }
75
77
  }
76
- if (content) {
77
- fs.writeFileSync(filePath, content, 'utf-8');
78
- logger.info(`[Forge:阶段产物] 已生成:${filename}`);
78
+ if (!content || content.trim().length === 0) {
79
+ throw new Error(`${filename} AI 返回空内容,产物生成失败`);
79
80
  }
81
+ // 通过 ArtifactManager 写入
82
+ const description = `${PHASE_LABELS[phase]} 阶段产物`;
83
+ this.artifactManager.writeArtifact('phase-artifact', filename, content, description);
84
+ logger.info(`[Forge:阶段产物] 已生成 ${filename}`);
80
85
  }
81
86
  }
82
87
  catch (err) {
@@ -85,32 +90,66 @@ export class PhaseArtifactGenerator {
85
90
  }
86
91
  }
87
92
  /**
88
- * 获取或创建本次 session 的产物目录
89
- * 格式:<project>/.claude-forge/docs/YYYY-MM-DD_HH-MM/
90
- */
91
- static resolveOutputDir(projectPath, sessionStartTime) {
92
- const date = new Date(sessionStartTime);
93
- const yyyy = date.getFullYear();
94
- const mm = String(date.getMonth() + 1).padStart(2, '0');
95
- const dd = String(date.getDate()).padStart(2, '0');
96
- const hh = String(date.getHours()).padStart(2, '0');
97
- const min = String(date.getMinutes()).padStart(2, '0');
98
- const dirName = `${yyyy}-${mm}-${dd}_${hh}-${min}`;
99
- return path.join(projectPath, '.claude-forge', 'docs', dirName);
100
- }
101
- /**
102
- * 获取指定阶段的产物文件名列表
93
+ * 获取指定阶段的产物文件名列表(从 Pipeline 的 phaseArtifacts 读取,或降级到默认映射)
103
94
  */
104
95
  getArtifactFiles(phase) {
105
- const mapping = {
96
+ // 优先使用 AI 规划的产物清单
97
+ if (this.pipeline.phaseArtifacts && this.pipeline.phaseArtifacts[phase]) {
98
+ return this.pipeline.phaseArtifacts[phase];
99
+ }
100
+ // 降级:根据复杂度和任务类型使用默认映射
101
+ const complexity = this.pipeline.complexity || 'moderate';
102
+ const taskType = this.pipeline.taskType || 'other';
103
+ // simple 任务:最少产物
104
+ if (complexity === 'simple') {
105
+ const simpleMapping = {
106
+ analyze: ['plan.md'],
107
+ design: [],
108
+ profile: [],
109
+ code: ['changes.md'],
110
+ test: ['test-report.md'],
111
+ review: [],
112
+ done: [],
113
+ };
114
+ return simpleMapping[phase];
115
+ }
116
+ // performance 任务:包含 profiling 产物
117
+ if (taskType === 'performance') {
118
+ const perfMapping = {
119
+ analyze: ['requirements.md', 'performance-baseline.md'],
120
+ design: ['optimization-plan.md'],
121
+ profile: ['profiling-report.md', 'benchmark-results.md'],
122
+ code: ['code-changes.md', 'optimization-notes.md'],
123
+ test: ['test-report.md', 'performance-comparison.md'],
124
+ review: ['review-report.md'],
125
+ done: [],
126
+ };
127
+ return perfMapping[phase];
128
+ }
129
+ // complex 任务:丰富产物
130
+ if (complexity === 'complex') {
131
+ const complexMapping = {
132
+ analyze: ['requirements.md', 'prd.md', 'tech-selection.md', 'risk-assessment.md'],
133
+ design: ['architecture.md', 'detailed-design.md', 'data-model.md', 'api-design.md', 'component-diagram.md'],
134
+ profile: ['profiling-report.md'],
135
+ code: ['code-changes.md', 'implementation-notes.md', 'migration-guide.md'],
136
+ test: ['test-report.md', 'coverage-report.md', 'integration-test-results.md'],
137
+ review: ['review-report.md', 'security-audit.md', 'performance-review.md'],
138
+ done: [],
139
+ };
140
+ return complexMapping[phase];
141
+ }
142
+ // moderate 任务:标准产物(默认)
143
+ const moderateMapping = {
106
144
  analyze: ['requirements.md', 'prd.md'],
107
145
  design: ['architecture.md', 'detailed-design.md'],
146
+ profile: ['profiling-report.md'],
108
147
  code: ['code-changes.md'],
109
148
  test: ['test-report.md'],
110
149
  review: ['review-report.md'],
111
150
  done: [],
112
151
  };
113
- return mapping[phase];
152
+ return moderateMapping[phase];
114
153
  }
115
154
  /**
116
155
  * 从事件流中提取本阶段相关的工具调用摘要
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-generator.js","sourceRoot":"","sources":["../../src/pipeline/artifact-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"artifact-generator.js","sourceRoot":"","sources":["../../src/pipeline/artifact-generator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;GAEG;AACH,MAAM,OAAO,sBAAsB;IAIvB;IACA;IACA;IACA;IANF,eAAe,CAAkB;IAEzC,YACU,WAAmB,EACnB,GAAe,EACf,OAAsB,EACtB,QAAkB;QAHlB,gBAAW,GAAX,WAAW,CAAQ;QACnB,QAAG,GAAH,GAAG,CAAY;QACf,YAAO,GAAP,OAAO,CAAe;QACtB,aAAQ,GAAR,QAAQ,CAAU;QAE1B,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC;IAC1D,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,gBAAgB,CACpB,KAAoB,EACpB,QAAkB,EAClB,SAAiB;QAEjB,IAAI,KAAK,KAAK,MAAM;YAAE,OAAO;QAE7B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEnC,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC;QAE/D,oBAAoB;QACpB,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAC1C,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAC/C,CAAC;QACF,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,gBAAgB,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,qBAAqB,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAE7D,YAAY;YACZ,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;gBACtC,UAAU,EAAE,SAAS;gBACrB,YAAY,EAAE,IAAI,CAAC,WAAW;gBAC9B,KAAK,EAAE,GAAG;aACX,CAAC,CAAC;YAEH,gBAAgB;YAChB,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;YAC7F,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC3D,cAAc;YACd,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBACjD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC5B,MAAM,CAAC,KAAK,CAAC,gBAAgB,QAAQ,SAAS,CAAC,CAAC;oBAChD,SAAS;gBACX,CAAC;gBAED,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;gBAEpF,qBAAqB;gBACrB,IAAI,OAAO,GAAkB,IAAI,CAAC;gBAClC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;oBAC9C,IAAI,CAAC;wBACH,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE;4BAClD,SAAS,EAAE,IAAI;4BACf,SAAS,EAAE,MAAM;yBAClB,CAAC,CAAC;wBACH,MAAM;oBACR,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;4BAChB,MAAM,CAAC,IAAI,CAAC,gBAAgB,QAAQ,WAAW,OAAO,WAAW,GAAG,EAAE,CAAC,CAAC;4BACxE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;wBAC9C,CAAC;6BAAM,CAAC;4BACN,MAAM,GAAG,CAAC,CAAC,aAAa;wBAC1B,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC5C,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,kBAAkB,CAAC,CAAC;gBACjD,CAAC;gBAED,wBAAwB;gBACxB,MAAM,WAAW,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC;gBAClD,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;gBAErF,MAAM,CAAC,IAAI,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,gBAAgB,YAAY,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;YAC/D,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,KAAoB;QAC3C,kBAAkB;QAClB,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YACxE,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;QAED,sBAAsB;QACtB,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,UAAU,CAAC;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,OAAO,CAAC;QAEnD,iBAAiB;QACjB,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,aAAa,GAAoC;gBACrD,OAAO,EAAE,CAAC,SAAS,CAAC;gBACpB,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,EAAE;gBACX,IAAI,EAAE,CAAC,YAAY,CAAC;gBACpB,IAAI,EAAE,CAAC,gBAAgB,CAAC;gBACxB,MAAM,EAAE,EAAE;gBACV,IAAI,EAAE,EAAE;aACT,CAAC;YACF,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAED,iCAAiC;QACjC,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;YAC/B,MAAM,WAAW,GAAoC;gBACnD,OAAO,EAAE,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;gBACvD,MAAM,EAAE,CAAC,sBAAsB,CAAC;gBAChC,OAAO,EAAE,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;gBACxD,IAAI,EAAE,CAAC,iBAAiB,EAAE,uBAAuB,CAAC;gBAClD,IAAI,EAAE,CAAC,gBAAgB,EAAE,2BAA2B,CAAC;gBACrD,MAAM,EAAE,CAAC,kBAAkB,CAAC;gBAC5B,IAAI,EAAE,EAAE;aACT,CAAC;YACF,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QAED,kBAAkB;QAClB,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,cAAc,GAAoC;gBACtD,OAAO,EAAE,CAAC,iBAAiB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,oBAAoB,CAAC;gBACjF,MAAM,EAAE,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,eAAe,EAAE,eAAe,EAAE,sBAAsB,CAAC;gBAC3G,OAAO,EAAE,CAAC,qBAAqB,CAAC;gBAChC,IAAI,EAAE,CAAC,iBAAiB,EAAE,yBAAyB,EAAE,oBAAoB,CAAC;gBAC1E,IAAI,EAAE,CAAC,gBAAgB,EAAE,oBAAoB,EAAE,6BAA6B,CAAC;gBAC7E,MAAM,EAAE,CAAC,kBAAkB,EAAE,mBAAmB,EAAE,uBAAuB,CAAC;gBAC1E,IAAI,EAAE,EAAE;aACT,CAAC;YACF,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QAED,uBAAuB;QACvB,MAAM,eAAe,GAAoC;YACvD,OAAO,EAAE,CAAC,iBAAiB,EAAE,QAAQ,CAAC;YACtC,MAAM,EAAE,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;YACjD,OAAO,EAAE,CAAC,qBAAqB,CAAC;YAChC,IAAI,EAAE,CAAC,iBAAiB,CAAC;YACzB,IAAI,EAAE,CAAC,gBAAgB,CAAC;YACxB,MAAM,EAAE,CAAC,kBAAkB,CAAC;YAC5B,IAAI,EAAE,EAAE;SACT,CAAC;QACF,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,MAAoB,EAAE,KAAoB;QACnE,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;YAElF,wBAAwB;YACxB,IAAI,QAAQ,KAAK,kBAAkB,IAAI,SAAS,EAAE,CAAC;gBACjD,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBACxE,IAAI,UAAU,EAAE,CAAC;oBACf,SAAS,CAAC,IAAI,CAAC,QAAQ,UAAU,EAAE,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;YAED,mBAAmB;YACnB,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;gBAC/B,IAAI,QAAQ,KAAK,MAAM,IAAI,SAAS,EAAE,CAAC;oBACrC,SAAS,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;gBACnE,CAAC;qBAAM,IAAI,QAAQ,KAAK,OAAO,IAAI,SAAS,EAAE,CAAC;oBAC7C,SAAS,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;gBACpE,CAAC;qBAAM,IAAI,QAAQ,KAAK,MAAM,IAAI,SAAS,EAAE,CAAC;oBAC5C,SAAS,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;gBACnE,CAAC;qBAAM,IAAI,QAAQ,KAAK,MAAM,IAAI,SAAS,EAAE,CAAC;oBAC5C,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC5D,SAAS,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;gBAClC,CAAC;qBAAM,IAAI,QAAQ,KAAK,MAAM,IAAI,SAAS,EAAE,CAAC;oBAC5C,SAAS,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;gBACjE,CAAC;qBAAM,IAAI,QAAQ,KAAK,MAAM,IAAI,SAAS,EAAE,CAAC;oBAC5C,SAAS,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC;QACH,CAAC;QAED,KAAK,KAAK,CAAC,CAAC,uBAAuB;QACnC,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,oBAAoB;IACrD,CAAC;IAED;;OAEG;IACK,WAAW,CACjB,KAAoB,EACpB,QAAgB,EAChB,KAAqE,EACrE,MAAgB,EAChB,QAAkB;QAElB,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;QAEzC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpH,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEpC,MAAM,SAAS,GAA2B;YACxC,iBAAiB,EAAE;;SAEhB,WAAW;;;EAGlB,QAAQ,IAAI,KAAK;;;EAGjB,SAAS,IAAI,KAAK;;;;;;;;qBAQC;YAEf,QAAQ,EAAE;;SAEP,WAAW;;;EAGlB,QAAQ,IAAI,KAAK;;;EAGjB,SAAS,IAAI,KAAK;;;;;;;;qBAQC;YAEf,iBAAiB,EAAE;;SAEhB,WAAW;;;EAGlB,QAAQ,IAAI,KAAK;;;EAGjB,SAAS,IAAI,KAAK;;;;;;;;qBAQC;YAEf,oBAAoB,EAAE;;SAEnB,WAAW;;;EAGlB,QAAQ,IAAI,KAAK;;;EAGjB,SAAS,IAAI,KAAK;;;;;;;;qBAQC;YAEf,iBAAiB,EAAE;;SAEhB,WAAW;;;EAGlB,QAAQ,IAAI,KAAK;;;EAGjB,SAAS,IAAI,KAAK;;;;;;;;qBAQC;YAEf,gBAAgB,EAAE;;SAEf,WAAW;;;EAGlB,QAAQ,IAAI,KAAK;;;EAGjB,SAAS,IAAI,KAAK;;;;;;;;qBAQC;YAEf,kBAAkB,EAAE;;SAEjB,WAAW;;;EAGlB,QAAQ,IAAI,KAAK;;;EAGjB,SAAS,IAAI,KAAK;;;;;;;;qBAQC;SAChB,CAAC;QAEF,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,MAAM,UAAU,QAAQ,QAAQ,MAAM,CAAC;IACvE,CAAC;CACF"}
@@ -82,25 +82,6 @@ export declare class PipelineEngine {
82
82
  * 用户选择"取消/重做":关闭当前 Pipeline,清除中断标记
83
83
  */
84
84
  cancelAfterInterrupt(projectPath: string): void;
85
- /**
86
- * ESC 中断后从 DB 恢复时,重建 PhaseManager 的内存状态。
87
- const phase = pipeline.phase;
88
- if (phase === 'done') return;
89
-
90
- const key = `${pipeline.id}:${phase}`;
91
- const completedCount = pipeline.tasks.filter(t => t.phase === phase && t.status === 'completed').length;
92
-
93
- // 已有已完成任务 → 恢复 toolsSeen 为"已做过 explore + write",避免卡死
94
- if (completedCount > 0) {
95
- this.phaseManager.restoreToolsSeen(key, new Set(['explore', 'write', 'bash']));
96
- }
97
-
98
- // 恢复事件计数为已完成任务数 × 5(保守估算,不触发兜底推进)
99
- this.phaseManager.restoreEventCount(key, completedCount * 5);
100
-
101
- logger.debug(`[Pipeline] 恢复阶段状态:${phase} | 已完成=${completedCount}`);
102
- }
103
-
104
85
  /**
105
86
  * 手动关闭指定项目(或指定 ID)的 Pipeline。
106
87
  * 供 CLI 和 daemon 启动时调用。
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pipeline/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pipeline/index.ts"],"names":[],"mappings":"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"}