intention-coding 0.3.8 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/package.json +1 -1
  2. package/dist/db/file-storage.js +0 -638
  3. package/dist/index.js +0 -26
  4. package/dist/server/index.js +0 -88
  5. package/dist/services/bug-fix-agent/index.js +0 -320
  6. package/dist/services/change-summarizer/index.js +0 -123
  7. package/dist/services/change-summarizer/prompt/change-analysis.js +0 -56
  8. package/dist/services/code-generator/index.js +0 -403
  9. package/dist/services/code-generator/stages/execution-stage.js +0 -549
  10. package/dist/services/code-generator/stages/ideation-stage.js +0 -267
  11. package/dist/services/code-generator/stages/optimization-stage.js +0 -334
  12. package/dist/services/code-generator/stages/planning-stage.js +0 -295
  13. package/dist/services/code-generator/stages/research-stage.js +0 -283
  14. package/dist/services/code-generator/stages/review-stage.js +0 -270
  15. package/dist/services/code-generator/types.js +0 -37
  16. package/dist/services/code-generator/utils/instruction-executor.js +0 -207
  17. package/dist/services/code-generator/workflow-manager.js +0 -252
  18. package/dist/services/image-analysis/analyzer.js +0 -530
  19. package/dist/services/image-analysis/index.js +0 -406
  20. package/dist/services/image-analysis/types.js +0 -46
  21. package/dist/services/image-converter/converter.js +0 -310
  22. package/dist/services/image-converter/index.js +0 -262
  23. package/dist/services/image-converter/types.js +0 -31
  24. package/dist/services/integrated-generator/index.js +0 -1297
  25. package/dist/services/pdf2md/index.js +0 -180
  26. package/dist/services/project-template/index.js +0 -83
  27. package/dist/services/project-template/prompt/project-rules.js +0 -98
  28. package/dist/services/requirement-analyzer/chunk-reader.js +0 -218
  29. package/dist/services/requirement-analyzer/core/document-generator.js +0 -254
  30. package/dist/services/requirement-analyzer/core/intelligent-analyzer.js +0 -169
  31. package/dist/services/requirement-analyzer/core/project-analyzer.js +0 -199
  32. package/dist/services/requirement-analyzer/core/requirement-analyzer-service.js +0 -191
  33. package/dist/services/requirement-analyzer/core/template-selector.js +0 -124
  34. package/dist/services/requirement-analyzer/core/types.js +0 -23
  35. package/dist/services/requirement-analyzer/index.js +0 -177
  36. package/dist/services/requirement-analyzer/prompt/api-template.js +0 -302
  37. package/dist/services/requirement-analyzer/prompt/app-template.js +0 -455
  38. package/dist/services/requirement-analyzer/prompt/intelligent-requirement-analysis.js +0 -92
  39. package/dist/services/requirement-analyzer/prompt/pc-page-template.js +0 -582
  40. package/dist/services/requirement-analyzer/prompt/requirement-analysis.js +0 -664
  41. package/dist/services/requirement-analyzer/prompt/sdk-template.js +0 -582
  42. package/dist/services/requirement-analyzer/utils/file-reader.js +0 -169
  43. package/dist/services/world2md/index.js +0 -157
  44. package/dist/types/index.js +0 -2
  45. package/dist/utils/common.js +0 -72
  46. package/dist/utils/config.js +0 -163
  47. package/dist/utils/context-manager.js +0 -114
  48. package/dist/utils/dify.js +0 -243
  49. package/dist/utils/logger.js +0 -129
  50. package/dist/utils/openai.js +0 -225
  51. package/dist/utils/pack.js +0 -75
@@ -1,270 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.ReviewStage = void 0;
13
- const logger_1 = require("../../../utils/logger");
14
- const openai_1 = require("../../../utils/openai");
15
- const types_1 = require("../types");
16
- /**
17
- * 评审阶段处理器
18
- * 职责:对照计划评估执行结果,报告问题与建议
19
- */
20
- class ReviewStage {
21
- /**
22
- * 执行评审阶段
23
- */
24
- execute(task, _input) {
25
- return __awaiter(this, void 0, void 0, function* () {
26
- try {
27
- logger_1.logger.info('开始执行评审阶段', { taskId: task.id });
28
- // 收集所有阶段的结果
29
- const stageResults = this.collectStageResults(task);
30
- // 执行综合评审
31
- const reviewResult = yield this.performComprehensiveReview(task, stageResults);
32
- // 生成最终响应
33
- const response = this.generateFinalResponse(reviewResult);
34
- logger_1.logger.info('评审阶段执行完成', {
35
- taskId: task.id,
36
- overallScore: reviewResult.overallScore,
37
- issueCount: reviewResult.issues.length
38
- });
39
- return response;
40
- }
41
- catch (error) {
42
- logger_1.logger.error('评审阶段执行失败', { error, taskId: task.id });
43
- throw new types_1.CodeGeneratorError('最终评审过程中发生错误', types_1.ErrorCodes.REVIEW_FAILED, types_1.WorkflowStage.REVIEW, { taskId: task.id, originalError: error });
44
- }
45
- });
46
- }
47
- /**
48
- * 收集所有阶段的结果
49
- */
50
- collectStageResults(task) {
51
- var _a, _b, _c, _d, _e;
52
- const results = {
53
- research: (_a = task.stages.find(s => s.stage === types_1.WorkflowStage.RESEARCH)) === null || _a === void 0 ? void 0 : _a.output,
54
- ideation: (_b = task.stages.find(s => s.stage === types_1.WorkflowStage.IDEATION)) === null || _b === void 0 ? void 0 : _b.output,
55
- planning: (_c = task.stages.find(s => s.stage === types_1.WorkflowStage.PLANNING)) === null || _c === void 0 ? void 0 : _c.output,
56
- execution: (_d = task.stages.find(s => s.stage === types_1.WorkflowStage.EXECUTION)) === null || _d === void 0 ? void 0 : _d.output,
57
- optimization: (_e = task.stages.find(s => s.stage === types_1.WorkflowStage.OPTIMIZATION)) === null || _e === void 0 ? void 0 : _e.output
58
- };
59
- return results;
60
- }
61
- /**
62
- * 执行综合评审
63
- */
64
- performComprehensiveReview(task, stageResults) {
65
- return __awaiter(this, void 0, void 0, function* () {
66
- var _a, _b, _c, _d;
67
- const { taskDescription, requirements } = task.context;
68
- const prompt = `你是一位资深的项目评审专家,请对以下开发工作流的执行结果进行综合评审。
69
-
70
- ## 原始任务
71
- ${taskDescription}
72
-
73
- ## 需求分析结果
74
- - 完整性评分: ${requirements.completenessScore}/10
75
- - 目标明确性: ${requirements.targetClarity}/3
76
- - 预期结果: ${requirements.expectedResults}/3
77
-
78
- ## 各阶段执行情况
79
-
80
- ### 研究阶段
81
- ${stageResults.research ? '✅ 已完成' : '❌ 未完成'}
82
-
83
- ### 构思阶段
84
- ${stageResults.ideation ? `✅ 已完成 - 生成${((_a = stageResults.ideation.solutions) === null || _a === void 0 ? void 0 : _a.length) || 0}个方案` : '❌ 未完成'}
85
-
86
- ### 计划阶段
87
- ${stageResults.planning ? `✅ 已完成 - ${((_c = (_b = stageResults.planning.executionPlan) === null || _b === void 0 ? void 0 : _b.steps) === null || _c === void 0 ? void 0 : _c.length) || 0}个执行步骤` : '❌ 未完成'}
88
-
89
- ### 执行阶段
90
- ${stageResults.execution ? `✅ 已完成 - 成功率${stageResults.execution.executionResults ? (stageResults.execution.executionResults.completedSteps / stageResults.execution.executionResults.totalSteps * 100).toFixed(1) : 0}%` : '❌ 未完成'}
91
-
92
- ### 优化阶段
93
- ${stageResults.optimization ? `✅ 已完成 - ${((_d = stageResults.optimization.suggestions) === null || _d === void 0 ? void 0 : _d.length) || 0}个优化建议` : '❌ 未完成'}
94
-
95
- 请从以下维度进行评审(每项0-100分):
96
- 1. **计划遵循度**: 执行是否严格按照计划进行
97
- 2. **代码质量**: 实现的代码质量水平
98
- 3. **测试覆盖**: 测试的完整性和质量
99
- 4. **文档完整性**: 文档和注释的完整性
100
-
101
- 请以JSON格式返回评审结果:
102
- {
103
- "overallScore": 总体评分(0-100),
104
- "planAdherence": 计划遵循度(0-100),
105
- "codeQuality": 代码质量(0-100),
106
- "testCoverage": 测试覆盖(0-100),
107
- "documentation": 文档完整性(0-100),
108
- "issues": [
109
- {
110
- "type": "bug|performance|security|maintainability|documentation",
111
- "severity": "low|medium|high|critical",
112
- "description": "问题描述",
113
- "location": "问题位置",
114
- "suggestion": "解决建议"
115
- }
116
- ],
117
- "recommendations": ["建议1", "建议2"],
118
- "nextSteps": ["后续步骤1", "后续步骤2"]
119
- }`;
120
- try {
121
- const result = yield openai_1.openAIService.generateText({
122
- prompt,
123
- system_prompt: "你是专业的项目评审专家,请严格按照JSON格式返回评审结果。"
124
- });
125
- const jsonMatch = result.match(/\{[\s\S]*\}/);
126
- if (jsonMatch) {
127
- const reviewData = JSON.parse(jsonMatch[0]);
128
- return Object.assign(Object.assign({}, reviewData), { issues: reviewData.issues || [] });
129
- }
130
- throw new Error('无法解析AI生成的评审结果');
131
- }
132
- catch (error) {
133
- logger_1.logger.error('评审结果生成失败', { error });
134
- // 返回默认评审结果
135
- return this.getDefaultReviewResult(task, stageResults);
136
- }
137
- });
138
- }
139
- /**
140
- * 生成最终响应
141
- */
142
- generateFinalResponse(reviewResult) {
143
- return {
144
- stage: types_1.WorkflowStage.REVIEW,
145
- status: 'success',
146
- message: this.formatReviewMessage(reviewResult),
147
- data: { reviewResult },
148
- nextActions: ['查看详细报告', '开始新任务', '导出结果'],
149
- requiresUserConfirmation: true
150
- };
151
- }
152
- /**
153
- * 格式化评审消息
154
- */
155
- formatReviewMessage(reviewResult) {
156
- const gradeLabel = this.getGradeLabel(reviewResult.overallScore);
157
- const criticalIssues = reviewResult.issues.filter(i => i.severity === 'critical');
158
- const highIssues = reviewResult.issues.filter(i => i.severity === 'high');
159
- return `
160
- # [模式:评审] 最终质量评审报告 ✅
161
-
162
- ## 🏆 总体评分: ${reviewResult.overallScore}/100 ${gradeLabel}
163
-
164
- ### 📊 详细评分
165
- - **计划遵循度**: ${reviewResult.planAdherence}/100 ${this.getScoreEmoji(reviewResult.planAdherence)}
166
- - **代码质量**: ${reviewResult.codeQuality}/100 ${this.getScoreEmoji(reviewResult.codeQuality)}
167
- - **测试覆盖**: ${reviewResult.testCoverage}/100 ${this.getScoreEmoji(reviewResult.testCoverage)}
168
- - **文档完整性**: ${reviewResult.documentation}/100 ${this.getScoreEmoji(reviewResult.documentation)}
169
-
170
- ${reviewResult.issues.length > 0 ? `
171
- ## ⚠️ 发现的问题 (${reviewResult.issues.length}个)
172
-
173
- ${criticalIssues.length > 0 ? `
174
- ### 🔴 严重问题 (${criticalIssues.length}个)
175
- ${criticalIssues.map((issue, index) => `
176
- ${index + 1}. **${issue.description}**
177
- - 位置: ${issue.location}
178
- - 建议: ${issue.suggestion}
179
- `).join('')}
180
- ` : ''}
181
-
182
- ${highIssues.length > 0 ? `
183
- ### 🟡 重要问题 (${highIssues.length}个)
184
- ${highIssues.map((issue, index) => `
185
- ${index + 1}. **${issue.description}**
186
- - 位置: ${issue.location}
187
- - 建议: ${issue.suggestion}
188
- `).join('')}
189
- ` : ''}
190
-
191
- ${reviewResult.issues.filter(i => i.severity === 'medium' || i.severity === 'low').length > 0 ? `
192
- ### 🟢 其他问题
193
- ${reviewResult.issues.filter(i => i.severity === 'medium' || i.severity === 'low').map((issue, index) => `
194
- ${index + 1}. **${issue.description}** (${issue.severity})
195
- `).join('')}
196
- ` : ''}
197
- ` : `
198
- ## ✅ 质量检查通过
199
-
200
- 未发现严重问题,代码质量达到预期标准。
201
- `}
202
-
203
- ## 💡 改进建议
204
-
205
- ${reviewResult.recommendations.map((rec, index) => `${index + 1}. ${rec}`).join('\n')}
206
-
207
- ## 🚀 后续步骤
208
-
209
- ${reviewResult.nextSteps.map((step, index) => `${index + 1}. ${step}`).join('\n')}
210
-
211
- ## 📋 工作流程总结
212
-
213
- 🎉 **六阶段开发工作流已完成!**
214
-
215
- 1. ✅ **研究阶段** - 需求分析和项目理解
216
- 2. ✅ **构思阶段** - 解决方案设计和评估
217
- 3. ✅ **计划阶段** - 详细执行计划制定
218
- 4. ✅ **执行阶段** - 代码实施和开发
219
- 5. ✅ **优化阶段** - 代码质量改进
220
- 6. ✅ **评审阶段** - 最终质量评估
221
-
222
- **感谢使用代码生成智能体!如有需要,可以开始新的开发任务。**
223
- `.trim();
224
- }
225
- /**
226
- * 获取默认评审结果
227
- */
228
- getDefaultReviewResult(task, stageResults) {
229
- const completedStages = Object.values(stageResults).filter(Boolean).length;
230
- const totalStages = 5; // 除了评审阶段本身
231
- const completionRate = (completedStages / totalStages) * 100;
232
- return {
233
- overallScore: Math.round(completionRate * 0.8), // 基于完成度的基础评分
234
- planAdherence: completedStages >= 3 ? 85 : 60,
235
- codeQuality: stageResults.execution ? 75 : 50,
236
- testCoverage: 60, // 默认中等水平
237
- documentation: 70, // 默认良好水平
238
- issues: [],
239
- recommendations: [
240
- '建议在后续开发中加强测试覆盖',
241
- '可以考虑添加更详细的代码注释',
242
- '建议定期进行代码重构和优化'
243
- ],
244
- nextSteps: [
245
- '部署到测试环境进行验证',
246
- '编写用户文档和操作手册',
247
- '制定维护和更新计划'
248
- ]
249
- };
250
- }
251
- getGradeLabel(score) {
252
- if (score >= 90)
253
- return '🏆 优秀';
254
- if (score >= 80)
255
- return '🥇 良好';
256
- if (score >= 70)
257
- return '🥈 合格';
258
- if (score >= 60)
259
- return '🥉 及格';
260
- return '❌ 需要改进';
261
- }
262
- getScoreEmoji(score) {
263
- if (score >= 90)
264
- return '🟢';
265
- if (score >= 70)
266
- return '🟡';
267
- return '🔴';
268
- }
269
- }
270
- exports.ReviewStage = ReviewStage;
@@ -1,37 +0,0 @@
1
- "use strict";
2
- // 代码生成智能体的核心类型定义
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.ErrorCodes = exports.CodeGeneratorError = exports.WorkflowStage = void 0;
5
- var WorkflowStage;
6
- (function (WorkflowStage) {
7
- WorkflowStage["RESEARCH"] = "research";
8
- WorkflowStage["IDEATION"] = "ideation";
9
- WorkflowStage["PLANNING"] = "planning";
10
- WorkflowStage["EXECUTION"] = "execution";
11
- WorkflowStage["OPTIMIZATION"] = "optimization";
12
- WorkflowStage["REVIEW"] = "review"; // 评审
13
- })(WorkflowStage || (exports.WorkflowStage = WorkflowStage = {}));
14
- // 错误类型
15
- class CodeGeneratorError extends Error {
16
- constructor(message, code, stage, context) {
17
- super(message);
18
- this.code = code;
19
- this.stage = stage;
20
- this.context = context;
21
- this.name = 'CodeGeneratorError';
22
- }
23
- }
24
- exports.CodeGeneratorError = CodeGeneratorError;
25
- var ErrorCodes;
26
- (function (ErrorCodes) {
27
- ErrorCodes["INVALID_TASK_DESCRIPTION"] = "INVALID_TASK_DESCRIPTION";
28
- ErrorCodes["INCOMPLETE_REQUIREMENTS"] = "INCOMPLETE_REQUIREMENTS";
29
- ErrorCodes["PROJECT_ANALYSIS_FAILED"] = "PROJECT_ANALYSIS_FAILED";
30
- ErrorCodes["SOLUTION_GENERATION_FAILED"] = "SOLUTION_GENERATION_FAILED";
31
- ErrorCodes["PLAN_CREATION_FAILED"] = "PLAN_CREATION_FAILED";
32
- ErrorCodes["EXECUTION_FAILED"] = "EXECUTION_FAILED";
33
- ErrorCodes["OPTIMIZATION_FAILED"] = "OPTIMIZATION_FAILED";
34
- ErrorCodes["REVIEW_FAILED"] = "REVIEW_FAILED";
35
- ErrorCodes["USER_APPROVAL_REQUIRED"] = "USER_APPROVAL_REQUIRED";
36
- ErrorCodes["STAGE_TRANSITION_FAILED"] = "STAGE_TRANSITION_FAILED";
37
- })(ErrorCodes || (exports.ErrorCodes = ErrorCodes = {}));
@@ -1,207 +0,0 @@
1
- "use strict";
2
- /**
3
- * 执行指令处理工具
4
- * 为 MCP 客户端提供指令执行的辅助方法
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.InstructionTracker = exports.InstructionExecutor = void 0;
8
- const logger_1 = require("../../../utils/logger");
9
- class InstructionExecutor {
10
- /**
11
- * 验证执行指令的有效性
12
- */
13
- static validateInstructions(instructions) {
14
- const errors = [];
15
- for (const instruction of instructions) {
16
- // 基础字段验证
17
- if (!instruction.id || !instruction.type || !instruction.description) {
18
- errors.push(`指令 ${instruction.id || 'unknown'} 缺少必要字段`);
19
- continue;
20
- }
21
- // 按类型验证
22
- switch (instruction.type) {
23
- case 'file_operation':
24
- errors.push(...this.validateFileOperation(instruction));
25
- break;
26
- case 'shell_command':
27
- errors.push(...this.validateShellCommand(instruction));
28
- break;
29
- case 'dependency_install':
30
- errors.push(...this.validateDependencyInstall(instruction));
31
- break;
32
- case 'configuration':
33
- errors.push(...this.validateConfiguration(instruction));
34
- break;
35
- }
36
- }
37
- return {
38
- valid: errors.length === 0,
39
- errors
40
- };
41
- }
42
- /**
43
- * 按优先级排序指令
44
- */
45
- static sortInstructionsByPriority(instructions) {
46
- return [...instructions].sort((a, b) => a.priority - b.priority);
47
- }
48
- /**
49
- * 按类型分组指令
50
- */
51
- static groupInstructionsByType(instructions) {
52
- return {
53
- fileOperations: instructions.filter(i => i.type === 'file_operation'),
54
- shellCommands: instructions.filter(i => i.type === 'shell_command'),
55
- dependencyInstalls: instructions.filter(i => i.type === 'dependency_install'),
56
- configurations: instructions.filter(i => i.type === 'configuration')
57
- };
58
- }
59
- /**
60
- * 生成执行摘要
61
- */
62
- static generateExecutionSummary(results) {
63
- const completed = results.filter(r => r.status === 'success');
64
- const failed = results.filter(r => r.status === 'failed');
65
- const skipped = results.filter(r => r.status === 'skipped');
66
- return {
67
- totalInstructions: results.length,
68
- completedInstructions: completed.length,
69
- failedInstructions: failed.length,
70
- skippedInstructions: skipped.length,
71
- results,
72
- errors: failed.map(r => ({
73
- instructionId: r.instructionId,
74
- description: `指令 ${r.instructionId} 执行失败`,
75
- error: r.error || '未知错误'
76
- }))
77
- };
78
- }
79
- /**
80
- * 生成执行报告
81
- */
82
- static generateExecutionReport(summary) {
83
- const successRate = (summary.completedInstructions / summary.totalInstructions * 100).toFixed(1);
84
- return `
85
- # 执行报告
86
-
87
- ## 📊 执行统计
88
- - **总指令数**: ${summary.totalInstructions}
89
- - **成功执行**: ${summary.completedInstructions}
90
- - **执行失败**: ${summary.failedInstructions}
91
- - **跳过执行**: ${summary.skippedInstructions}
92
- - **成功率**: ${successRate}%
93
-
94
- ${summary.errors.length > 0 ? `
95
- ## ❌ 执行错误
96
- ${summary.errors.map((error, index) => `${index + 1}. **${error.instructionId}**: ${error.error}`).join('\n')}
97
- ` : ''}
98
-
99
- ## ✅ 执行结果
100
- ${summary.results.map((result, index) => {
101
- const status = result.status === 'success' ? '✅' :
102
- result.status === 'failed' ? '❌' : '⏭️';
103
- return `${index + 1}. ${status} ${result.instructionId}`;
104
- }).join('\n')}
105
-
106
- ---
107
- *执行时间: ${new Date().toISOString()}*
108
- `.trim();
109
- }
110
- // 私有验证方法
111
- static validateFileOperation(instruction) {
112
- const errors = [];
113
- if (!instruction.targetPath) {
114
- errors.push(`文件操作指令 ${instruction.id} 缺少目标路径`);
115
- }
116
- if (!instruction.operation) {
117
- errors.push(`文件操作指令 ${instruction.id} 缺少操作类型`);
118
- }
119
- if (instruction.operation === 'create' && !instruction.content) {
120
- errors.push(`文件创建指令 ${instruction.id} 缺少文件内容`);
121
- }
122
- if (instruction.operation === 'modify' && !instruction.newContent) {
123
- errors.push(`文件修改指令 ${instruction.id} 缺少新内容`);
124
- }
125
- if (['move', 'copy'].includes(instruction.operation) && !instruction.sourcePath) {
126
- errors.push(`文件${instruction.operation}指令 ${instruction.id} 缺少源路径`);
127
- }
128
- return errors;
129
- }
130
- static validateShellCommand(instruction) {
131
- const errors = [];
132
- if (!instruction.command) {
133
- errors.push(`Shell命令指令 ${instruction.id} 缺少命令内容`);
134
- }
135
- return errors;
136
- }
137
- static validateDependencyInstall(instruction) {
138
- const errors = [];
139
- if (!instruction.packageManager) {
140
- errors.push(`依赖安装指令 ${instruction.id} 缺少包管理器`);
141
- }
142
- if (!instruction.packages || instruction.packages.length === 0) {
143
- errors.push(`依赖安装指令 ${instruction.id} 缺少包列表`);
144
- }
145
- return errors;
146
- }
147
- static validateConfiguration(instruction) {
148
- const errors = [];
149
- if (!instruction.configPath) {
150
- errors.push(`配置指令 ${instruction.id} 缺少配置文件路径`);
151
- }
152
- if (!instruction.changes) {
153
- errors.push(`配置指令 ${instruction.id} 缺少配置变更`);
154
- }
155
- return errors;
156
- }
157
- }
158
- exports.InstructionExecutor = InstructionExecutor;
159
- /**
160
- * 指令执行状态跟踪器
161
- */
162
- class InstructionTracker {
163
- constructor() {
164
- this.results = [];
165
- }
166
- /**
167
- * 记录指令执行结果
168
- */
169
- recordResult(result) {
170
- this.results.push(result);
171
- logger_1.logger.info('指令执行结果记录', {
172
- instructionId: result.instructionId,
173
- status: result.status
174
- });
175
- }
176
- /**
177
- * 获取所有结果
178
- */
179
- getAllResults() {
180
- return [...this.results];
181
- }
182
- /**
183
- * 获取执行摘要
184
- */
185
- getSummary() {
186
- return InstructionExecutor.generateExecutionSummary(this.results);
187
- }
188
- /**
189
- * 清空结果
190
- */
191
- clear() {
192
- this.results = [];
193
- }
194
- /**
195
- * 检查是否有失败的指令
196
- */
197
- hasFailures() {
198
- return this.results.some(r => r.status === 'failed');
199
- }
200
- /**
201
- * 获取失败的指令
202
- */
203
- getFailures() {
204
- return this.results.filter(r => r.status === 'failed');
205
- }
206
- }
207
- exports.InstructionTracker = InstructionTracker;