@winspan/claude-forge 0.4.1 → 0.4.3

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 (117) hide show
  1. package/README.md +1 -1
  2. package/dist/ai-provider/base-provider.d.ts.map +1 -1
  3. package/dist/ai-provider/base-provider.js +3 -1
  4. package/dist/ai-provider/base-provider.js.map +1 -1
  5. package/dist/ai-provider/factory.d.ts +2 -0
  6. package/dist/ai-provider/factory.d.ts.map +1 -1
  7. package/dist/ai-provider/factory.js +1 -1
  8. package/dist/ai-provider/factory.js.map +1 -1
  9. package/dist/ai-provider/types.d.ts +6 -0
  10. package/dist/ai-provider/types.d.ts.map +1 -1
  11. package/dist/ai-provider/types.js.map +1 -1
  12. package/dist/autopilot/quality-gate.d.ts +17 -1
  13. package/dist/autopilot/quality-gate.d.ts.map +1 -1
  14. package/dist/autopilot/quality-gate.js +89 -5
  15. package/dist/autopilot/quality-gate.js.map +1 -1
  16. package/dist/cli/commands/query.d.ts.map +1 -1
  17. package/dist/cli/commands/query.js +59 -8
  18. package/dist/cli/commands/query.js.map +1 -1
  19. package/dist/daemon/engine-registry/init-autopilot.d.ts +2 -1
  20. package/dist/daemon/engine-registry/init-autopilot.d.ts.map +1 -1
  21. package/dist/daemon/engine-registry/init-autopilot.js +3 -2
  22. package/dist/daemon/engine-registry/init-autopilot.js.map +1 -1
  23. package/dist/daemon/engine-registry.js +1 -1
  24. package/dist/daemon/engine-registry.js.map +1 -1
  25. package/dist/daemon/handlers/post-tool-use-handler.d.ts.map +1 -1
  26. package/dist/daemon/handlers/post-tool-use-handler.js +12 -12
  27. package/dist/daemon/handlers/post-tool-use-handler.js.map +1 -1
  28. package/dist/daemon/handlers/pre-tool-use-handler.d.ts.map +1 -1
  29. package/dist/daemon/handlers/pre-tool-use-handler.js +4 -1
  30. package/dist/daemon/handlers/pre-tool-use-handler.js.map +1 -1
  31. package/dist/daemon/handlers/safe-handler.d.ts +15 -0
  32. package/dist/daemon/handlers/safe-handler.d.ts.map +1 -0
  33. package/dist/daemon/handlers/safe-handler.js +24 -0
  34. package/dist/daemon/handlers/safe-handler.js.map +1 -0
  35. package/dist/daemon/handlers/session-cleanup.d.ts.map +1 -1
  36. package/dist/daemon/handlers/session-cleanup.js +4 -5
  37. package/dist/daemon/handlers/session-cleanup.js.map +1 -1
  38. package/dist/daemon/handlers/stop-handler.d.ts.map +1 -1
  39. package/dist/daemon/handlers/stop-handler.js +3 -5
  40. package/dist/daemon/handlers/stop-handler.js.map +1 -1
  41. package/dist/daemon/handlers/user-prompt-handler.d.ts.map +1 -1
  42. package/dist/daemon/handlers/user-prompt-handler.js +15 -0
  43. package/dist/daemon/handlers/user-prompt-handler.js.map +1 -1
  44. package/dist/daemon/index.d.ts.map +1 -1
  45. package/dist/daemon/index.js +1 -0
  46. package/dist/daemon/index.js.map +1 -1
  47. package/dist/daemon/lifecycle.d.ts +7 -0
  48. package/dist/daemon/lifecycle.d.ts.map +1 -1
  49. package/dist/daemon/lifecycle.js +15 -0
  50. package/dist/daemon/lifecycle.js.map +1 -1
  51. package/dist/pattern-engine/execution-tracker.d.ts +1 -1
  52. package/dist/pattern-engine/execution-tracker.d.ts.map +1 -1
  53. package/dist/pattern-engine/execution-tracker.js +5 -1
  54. package/dist/pattern-engine/execution-tracker.js.map +1 -1
  55. package/dist/pattern-engine/index.d.ts +2 -0
  56. package/dist/pattern-engine/index.d.ts.map +1 -1
  57. package/dist/pattern-engine/index.js +32 -1
  58. package/dist/pattern-engine/index.js.map +1 -1
  59. package/dist/pattern-engine/pattern-evolver.d.ts.map +1 -1
  60. package/dist/pattern-engine/pattern-evolver.js +31 -12
  61. package/dist/pattern-engine/pattern-evolver.js.map +1 -1
  62. package/dist/pattern-engine/pattern-router.d.ts +5 -0
  63. package/dist/pattern-engine/pattern-router.d.ts.map +1 -1
  64. package/dist/pattern-engine/pattern-router.js +21 -19
  65. package/dist/pattern-engine/pattern-router.js.map +1 -1
  66. package/dist/pattern-engine/types.d.ts +2 -0
  67. package/dist/pattern-engine/types.d.ts.map +1 -1
  68. package/dist/pipeline/analyzer.d.ts +18 -3
  69. package/dist/pipeline/analyzer.d.ts.map +1 -1
  70. package/dist/pipeline/analyzer.js +172 -59
  71. package/dist/pipeline/analyzer.js.map +1 -1
  72. package/dist/pipeline/artifact-generator.d.ts +6 -9
  73. package/dist/pipeline/artifact-generator.d.ts.map +1 -1
  74. package/dist/pipeline/artifact-generator.js +68 -29
  75. package/dist/pipeline/artifact-generator.js.map +1 -1
  76. package/dist/pipeline/index.d.ts.map +1 -1
  77. package/dist/pipeline/index.js +7 -11
  78. package/dist/pipeline/index.js.map +1 -1
  79. package/dist/pipeline/phase-manager.d.ts +1 -1
  80. package/dist/pipeline/phase-manager.d.ts.map +1 -1
  81. package/dist/pipeline/phase-manager.js +23 -13
  82. package/dist/pipeline/phase-manager.js.map +1 -1
  83. package/dist/pipeline/store.d.ts +1 -1
  84. package/dist/pipeline/store.d.ts.map +1 -1
  85. package/dist/pipeline/store.js +15 -5
  86. package/dist/pipeline/store.js.map +1 -1
  87. package/dist/pipeline/types.d.ts +7 -2
  88. package/dist/pipeline/types.d.ts.map +1 -1
  89. package/dist/pipeline/types.js +6 -4
  90. package/dist/pipeline/types.js.map +1 -1
  91. package/dist/retrospective/index.d.ts +7 -0
  92. package/dist/retrospective/index.d.ts.map +1 -1
  93. package/dist/retrospective/index.js +51 -1
  94. package/dist/retrospective/index.js.map +1 -1
  95. package/dist/retrospective/report-writer.d.ts +6 -7
  96. package/dist/retrospective/report-writer.d.ts.map +1 -1
  97. package/dist/retrospective/report-writer.js +47 -103
  98. package/dist/retrospective/report-writer.js.map +1 -1
  99. package/dist/storage/index.d.ts +45 -0
  100. package/dist/storage/index.d.ts.map +1 -1
  101. package/dist/storage/sqlite.d.ts +94 -0
  102. package/dist/storage/sqlite.d.ts.map +1 -1
  103. package/dist/storage/sqlite.js +390 -1
  104. package/dist/storage/sqlite.js.map +1 -1
  105. package/dist/strategy/bandit.d.ts +51 -0
  106. package/dist/strategy/bandit.d.ts.map +1 -0
  107. package/dist/strategy/bandit.js +115 -0
  108. package/dist/strategy/bandit.js.map +1 -0
  109. package/dist/utils/artifact-manager.d.ts +57 -0
  110. package/dist/utils/artifact-manager.d.ts.map +1 -0
  111. package/dist/utils/artifact-manager.js +164 -0
  112. package/dist/utils/artifact-manager.js.map +1 -0
  113. package/dist/utils/claude-api.d.ts +7 -1
  114. package/dist/utils/claude-api.d.ts.map +1 -1
  115. package/dist/utils/claude-api.js +33 -4
  116. package/dist/utils/claude-api.js.map +1 -1
  117. package/package.json +1 -1
@@ -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":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5C,MAAM,OAAO,gBAAgB;IACnB,GAAG,CAAa;IAChB,QAAQ,CAAoB;IAEpC,YAAY,GAAe;QACzB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,WAAmB,EAAE,WAAmB;QAStD,UAAU;QACV,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG;YAChB,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACrC,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SACvC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC;QAE5B,MAAM,CAAC,IAAI,CAAC,sBAAsB,WAAW,GAAG,CAAC,CAAC;QAElD,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAE5E,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;YAEvD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzC,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;gBAC3C,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YACnD,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,qBAAqB,MAAM,CAAC,UAAU,MAAM,MAAM,CAAC,QAAQ,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC;YAC/G,OAAO,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,CAAC;QAClC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,mBAAmB,GAAG,EAAE,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED;;OAEG;IACK,sBAAsB,CAAC,WAAmB,EAAE,SAAiB,EAAE,OAAY;QACjF,OAAO;;;EAGT,WAAW;;;EAGX,SAAS;EACT,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE;EAC/D,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsExD,CAAC;IACN,CAAC;IAED;;OAEG;IACK,wBAAwB,CAAC,QAAgB;QAQ/C,SAAS;QACT,IAAI,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAEzE,aAAa;QACb,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YAC3D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAErC,SAAS;YACT,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACnE,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;gBACtC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,gBAAgB;YAChB,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC/E,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACzE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;gBAC3C,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO;gBACL,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,OAAO;gBACjC,aAAa,EAAE,MAAM;gBACrB,cAAc,EAAE,GAAG,CAAC,SAAS;gBAC7B,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,EAAE;gBAC9B,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;oBAChC,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,KAAK,EAAE,CAAC,CAAC,KAA8B;oBACvC,MAAM,EAAE,SAAkB;oBAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;oBAC1B,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,EAAE;iBACnC,CAAC,CAAC;aACJ,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,WAAmB,EAAE,SAAiB;QASzD,UAAU;QACV,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,GAAG,GAAG,CAAC;QAE1C,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;YACzB,OAAO;gBACL,KAAK,EAAE;oBACL,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,WAAW,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;oBAC9G,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,QAAQ,CAAC,EAAE;oBACvG,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE;iBACvG;gBACD,SAAS;gBACT,UAAU,EAAE,QAAQ;gBACpB,QAAQ,EAAE,QAAQ;gBAClB,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;gBAC1C,cAAc,EAAE;oBACd,OAAO,EAAE,CAAC,gBAAgB,CAAC;oBAC3B,IAAI,EAAE,CAAC,gBAAgB,CAAC;oBACxB,IAAI,EAAE,CAAC,gBAAgB,CAAC;iBACzB;gBACD,SAAS,EAAE,gBAAgB;aAC5B,CAAC;QACJ,CAAC;QAED,OAAO;YACL,KAAK,EAAE;gBACL,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,WAAW,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;gBAC5G,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE;gBACpG,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE;gBACvG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,QAAQ,CAAC,EAAE;gBACvG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE;aACrG;YACD,SAAS;YACT,UAAU,EAAE,UAAU;YACtB,QAAQ,EAAE,SAAS;YACnB,aAAa,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;YAC9D,cAAc,EAAE;gBACd,OAAO,EAAE,CAAC,iBAAiB,EAAE,QAAQ,CAAC;gBACtC,MAAM,EAAE,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;gBACjD,IAAI,EAAE,CAAC,iBAAiB,CAAC;gBACzB,IAAI,EAAE,CAAC,gBAAgB,CAAC;gBACxB,MAAM,EAAE,CAAC,kBAAkB,CAAC;aAC7B;YACD,SAAS,EAAE,eAAe;SAC3B,CAAC;IACJ,CAAC;CACF"}
@@ -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":"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"}
@@ -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":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAElF,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,OAAO,CAAgB;IAC/B,4CAA4C;IAC5C,OAAO,CAAC,eAAe,CAA+B;IACtD,4DAA4D;IAC5D,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAM;gBAErC,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,UAAU;IAQnD,iCAAiC;IACjC,OAAO,CAAC,mBAAmB,CAAoF;IAE/G;;OAEG;IACH,OAAO,CAAC,SAAS;IAWjB;;OAEG;IACG,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAsCjE;;OAEG;IACG,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAkE5L;;OAEG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAyBnG;;OAEG;IACH,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAM/C;;OAEG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAWpD;;OAEG;IACH,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAUtD;;OAEG;IACH,eAAe,IAAI,YAAY;IAI/B;;OAEG;IACH,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAIjE;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAkBzB;;OAEG;IACH,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAI9G;;OAEG;IACH,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAe/C;;OAEG;IACH,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAW/C;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,aAAa,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,UAAQ,GAAG,IAAI;IAoB1D;;;OAGG;IACH,cAAc,CAAC,KAAK,SAAqB,GAAG,IAAI;IAUhD,oCAAoC;IACpC,UAAU,IAAI,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAI/G;;OAEG;IACH,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAIvD;;OAEG;IACH,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAMxD;;OAEG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,2BAA2B,EAAE,aAAa,EAAE;CAG5F"}
@@ -107,11 +107,10 @@ export class PipelineEngine {
107
107
  if (result.advanced && result.newPhase) {
108
108
  const completedPhase = pipeline.phase; // 推进前的阶段
109
109
  // 阶段产物生成:必须成功后才能推进(阻塞)
110
- const outputDir = PhaseArtifactGenerator.resolveOutputDir(pipeline.projectPath, pipeline.createdAt);
111
110
  const pipelineSnapshot = { ...pipeline };
112
111
  try {
113
- await new PhaseArtifactGenerator(pipeline.projectPath, this.api, this.storage)
114
- .generateForPhase(completedPhase, pipelineSnapshot, event.session_id, outputDir);
112
+ await new PhaseArtifactGenerator(pipeline.projectPath, this.api, this.storage, pipelineSnapshot)
113
+ .generateForPhase(completedPhase, pipelineSnapshot, event.session_id);
115
114
  }
116
115
  catch (err) {
117
116
  logger.warn(`[Forge:阶段产物] ${PHASE_LABELS[completedPhase]} 产物生成失败,阻断阶段推进:${err}`);
@@ -123,10 +122,7 @@ export class PipelineEngine {
123
122
 
124
123
  错误:${err}
125
124
 
126
- 请检查 API 连接后重试,或手动在以下目录创建产物文件:
127
- ${outputDir}
128
-
129
- 产物生成成功后,继续正常工作流程,系统将自动重新检查。`,
125
+ 请检查 API 连接后重试,产物生成成功后,继续正常工作流程,系统将自动重新检查。`,
130
126
  };
131
127
  }
132
128
  pipeline.phase = result.newPhase;
@@ -145,17 +141,17 @@ ${outputDir}
145
141
  */
146
142
  async startPipeline(requirement, projectPath, sessionId) {
147
143
  logger.info(`[Pipeline] 启动中:"${requirement}"`);
148
- // 用 Claude API 分解需求
149
- const { tasks, techStack } = await this.analyzer.decompose(requirement, projectPath);
144
+ // 用 Claude API 智能分解需求
145
+ const { tasks, techStack, complexity, taskType, plannedPhases, phaseArtifacts, reasoning } = await this.analyzer.decompose(requirement, projectPath);
150
146
  // 创建 Pipeline
151
- const pipeline = this.store.createPipeline(requirement, projectPath, sessionId, techStack);
147
+ const pipeline = this.store.createPipeline(requirement, projectPath, sessionId, techStack, complexity, taskType, plannedPhases, phaseArtifacts, reasoning);
152
148
  // 添加任务
153
149
  if (tasks.length > 0) {
154
150
  pipeline.tasks = this.store.addTasks(pipeline.id, tasks);
155
151
  }
156
152
  // 缓存
157
153
  this.setCached(projectPath, pipeline);
158
- logger.info(`[Pipeline] 已启动,共 ${pipeline.tasks.length} 个任务`);
154
+ logger.info(`[Pipeline] 已启动,共 ${pipeline.tasks.length} 个任务 (${complexity} ${taskType}, ${plannedPhases.length} 阶段)`);
159
155
  return pipeline;
160
156
  }
161
157
  /**