intention-coding 0.4.0 → 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.
- package/package.json +2 -3
- package/dist/db/file-storage.js +0 -638
- package/dist/index.js +0 -26
- package/dist/server/index.js +0 -88
- package/dist/services/bug-fix-agent/index.js +0 -320
- package/dist/services/change-summarizer/index.js +0 -123
- package/dist/services/change-summarizer/prompt/change-analysis.js +0 -56
- package/dist/services/code-generator/index.js +0 -403
- package/dist/services/code-generator/stages/execution-stage.js +0 -549
- package/dist/services/code-generator/stages/ideation-stage.js +0 -267
- package/dist/services/code-generator/stages/optimization-stage.js +0 -334
- package/dist/services/code-generator/stages/planning-stage.js +0 -295
- package/dist/services/code-generator/stages/research-stage.js +0 -283
- package/dist/services/code-generator/stages/review-stage.js +0 -270
- package/dist/services/code-generator/types.js +0 -37
- package/dist/services/code-generator/utils/instruction-executor.js +0 -207
- package/dist/services/code-generator/workflow-manager.js +0 -252
- package/dist/services/image-analysis/analyzer.js +0 -530
- package/dist/services/image-analysis/index.js +0 -406
- package/dist/services/image-analysis/types.js +0 -46
- package/dist/services/image-converter/converter.js +0 -310
- package/dist/services/image-converter/index.js +0 -262
- package/dist/services/image-converter/types.js +0 -31
- package/dist/services/integrated-generator/index.js +0 -1297
- package/dist/services/pdf2md/index.js +0 -180
- package/dist/services/project-template/index.js +0 -83
- package/dist/services/project-template/prompt/project-rules.js +0 -98
- package/dist/services/requirement-analyzer/chunk-reader.js +0 -218
- package/dist/services/requirement-analyzer/core/document-generator.js +0 -254
- package/dist/services/requirement-analyzer/core/intelligent-analyzer.js +0 -169
- package/dist/services/requirement-analyzer/core/project-analyzer.js +0 -199
- package/dist/services/requirement-analyzer/core/requirement-analyzer-service.js +0 -191
- package/dist/services/requirement-analyzer/core/template-selector.js +0 -124
- package/dist/services/requirement-analyzer/core/types.js +0 -23
- package/dist/services/requirement-analyzer/index.js +0 -177
- package/dist/services/requirement-analyzer/prompt/api-template.js +0 -302
- package/dist/services/requirement-analyzer/prompt/app-template.js +0 -455
- package/dist/services/requirement-analyzer/prompt/intelligent-requirement-analysis.js +0 -92
- package/dist/services/requirement-analyzer/prompt/pc-page-template.js +0 -582
- package/dist/services/requirement-analyzer/prompt/requirement-analysis.js +0 -664
- package/dist/services/requirement-analyzer/prompt/sdk-template.js +0 -582
- package/dist/services/requirement-analyzer/utils/file-reader.js +0 -169
- package/dist/services/world2md/index.js +0 -157
- package/dist/types/index.js +0 -2
- package/dist/utils/common.js +0 -72
- package/dist/utils/config.js +0 -163
- package/dist/utils/context-manager.js +0 -114
- package/dist/utils/dify.js +0 -243
- package/dist/utils/logger.js +0 -129
- package/dist/utils/openai.js +0 -225
- package/dist/utils/pack.js +0 -75
|
@@ -1,252 +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.WorkflowManager = void 0;
|
|
13
|
-
const logger_1 = require("../../utils/logger");
|
|
14
|
-
const types_1 = require("./types");
|
|
15
|
-
const research_stage_1 = require("./stages/research-stage");
|
|
16
|
-
const ideation_stage_1 = require("./stages/ideation-stage");
|
|
17
|
-
const planning_stage_1 = require("./stages/planning-stage");
|
|
18
|
-
const execution_stage_1 = require("./stages/execution-stage");
|
|
19
|
-
const optimization_stage_1 = require("./stages/optimization-stage");
|
|
20
|
-
const review_stage_1 = require("./stages/review-stage");
|
|
21
|
-
/**
|
|
22
|
-
* 工作流程管理器
|
|
23
|
-
* 职责:管理六阶段开发工作流的执行和状态转换
|
|
24
|
-
*/
|
|
25
|
-
class WorkflowManager {
|
|
26
|
-
constructor() {
|
|
27
|
-
this.tasks = new Map();
|
|
28
|
-
this.stages = new Map();
|
|
29
|
-
this.initializeStages();
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* 初始化各个阶段的处理器
|
|
33
|
-
*/
|
|
34
|
-
initializeStages() {
|
|
35
|
-
this.stages.set(types_1.WorkflowStage.RESEARCH, new research_stage_1.ResearchStage());
|
|
36
|
-
this.stages.set(types_1.WorkflowStage.IDEATION, new ideation_stage_1.IdeationStage());
|
|
37
|
-
this.stages.set(types_1.WorkflowStage.PLANNING, new planning_stage_1.PlanningStage());
|
|
38
|
-
this.stages.set(types_1.WorkflowStage.EXECUTION, new execution_stage_1.ExecutionStage());
|
|
39
|
-
this.stages.set(types_1.WorkflowStage.OPTIMIZATION, new optimization_stage_1.OptimizationStage());
|
|
40
|
-
this.stages.set(types_1.WorkflowStage.REVIEW, new review_stage_1.ReviewStage());
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* 创建新的工作流任务
|
|
44
|
-
*/
|
|
45
|
-
createTask(taskDescription) {
|
|
46
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
47
|
-
try {
|
|
48
|
-
logger_1.logger.info('创建新的工作流任务', { taskDescription });
|
|
49
|
-
const taskId = this.generateTaskId();
|
|
50
|
-
const task = {
|
|
51
|
-
id: taskId,
|
|
52
|
-
description: taskDescription,
|
|
53
|
-
currentStage: types_1.WorkflowStage.RESEARCH,
|
|
54
|
-
context: {
|
|
55
|
-
taskDescription,
|
|
56
|
-
requirements: {
|
|
57
|
-
completenessScore: 0,
|
|
58
|
-
targetClarity: 0,
|
|
59
|
-
expectedResults: 0,
|
|
60
|
-
scopeBoundary: 0,
|
|
61
|
-
constraints: 0,
|
|
62
|
-
missingInfo: [],
|
|
63
|
-
clarificationQuestions: []
|
|
64
|
-
},
|
|
65
|
-
constraints: [],
|
|
66
|
-
successCriteria: []
|
|
67
|
-
},
|
|
68
|
-
stages: [],
|
|
69
|
-
createdAt: new Date(),
|
|
70
|
-
updatedAt: new Date()
|
|
71
|
-
};
|
|
72
|
-
this.tasks.set(taskId, task);
|
|
73
|
-
// 自动开始研究阶段
|
|
74
|
-
return yield this.executeStage(taskId, types_1.WorkflowStage.RESEARCH);
|
|
75
|
-
}
|
|
76
|
-
catch (error) {
|
|
77
|
-
logger_1.logger.error('创建工作流任务失败', { error, taskDescription });
|
|
78
|
-
throw new types_1.CodeGeneratorError('无法创建工作流任务,请检查任务描述', types_1.ErrorCodes.INVALID_TASK_DESCRIPTION, types_1.WorkflowStage.RESEARCH, { taskDescription });
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* 执行指定阶段
|
|
84
|
-
*/
|
|
85
|
-
executeStage(taskId, stage, input) {
|
|
86
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
87
|
-
const task = this.getTask(taskId);
|
|
88
|
-
try {
|
|
89
|
-
logger_1.logger.info('执行工作流阶段', { taskId, stage, currentStage: task.currentStage });
|
|
90
|
-
// 验证阶段转换的合法性
|
|
91
|
-
this.validateStageTransition(task.currentStage, stage);
|
|
92
|
-
// 获取阶段处理器
|
|
93
|
-
const stageHandler = this.stages.get(stage);
|
|
94
|
-
if (!stageHandler) {
|
|
95
|
-
throw new types_1.CodeGeneratorError(`不支持的工作流阶段: ${stage}`, types_1.ErrorCodes.STAGE_TRANSITION_FAILED, stage);
|
|
96
|
-
}
|
|
97
|
-
// 创建阶段结果记录
|
|
98
|
-
const stageResult = {
|
|
99
|
-
stage,
|
|
100
|
-
status: 'in_progress',
|
|
101
|
-
input: input || {},
|
|
102
|
-
output: null,
|
|
103
|
-
timestamp: new Date()
|
|
104
|
-
};
|
|
105
|
-
task.stages.push(stageResult);
|
|
106
|
-
task.currentStage = stage;
|
|
107
|
-
task.updatedAt = new Date();
|
|
108
|
-
// 执行阶段逻辑
|
|
109
|
-
const startTime = Date.now();
|
|
110
|
-
const response = yield stageHandler.execute(task, input);
|
|
111
|
-
const duration = Date.now() - startTime;
|
|
112
|
-
// 更新阶段结果
|
|
113
|
-
stageResult.status = response.status === 'success' ? 'completed' : 'failed';
|
|
114
|
-
stageResult.output = response.data;
|
|
115
|
-
stageResult.duration = duration;
|
|
116
|
-
stageResult.feedback = response.message;
|
|
117
|
-
logger_1.logger.info('工作流阶段执行完成', {
|
|
118
|
-
taskId,
|
|
119
|
-
stage,
|
|
120
|
-
status: response.status,
|
|
121
|
-
duration
|
|
122
|
-
});
|
|
123
|
-
return response;
|
|
124
|
-
}
|
|
125
|
-
catch (error) {
|
|
126
|
-
logger_1.logger.error('工作流阶段执行失败', { error, taskId, stage });
|
|
127
|
-
// 更新阶段状态为失败
|
|
128
|
-
const failedStage = task.stages.find(s => s.stage === stage);
|
|
129
|
-
if (failedStage) {
|
|
130
|
-
failedStage.status = 'failed';
|
|
131
|
-
failedStage.output = { error: error instanceof Error ? error.message : String(error) };
|
|
132
|
-
}
|
|
133
|
-
if (error instanceof types_1.CodeGeneratorError) {
|
|
134
|
-
throw error;
|
|
135
|
-
}
|
|
136
|
-
throw new types_1.CodeGeneratorError(`阶段 ${stage} 执行失败: ${error instanceof Error ? error.message : String(error)}`, types_1.ErrorCodes.STAGE_TRANSITION_FAILED, stage, { taskId, originalError: error });
|
|
137
|
-
}
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* 继续到下一个阶段
|
|
142
|
-
*/
|
|
143
|
-
proceedToNextStage(taskId, feedback) {
|
|
144
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
145
|
-
const task = this.getTask(taskId);
|
|
146
|
-
const nextStage = this.getNextStage(task.currentStage);
|
|
147
|
-
if (!nextStage) {
|
|
148
|
-
return {
|
|
149
|
-
stage: task.currentStage,
|
|
150
|
-
status: 'success',
|
|
151
|
-
message: '🎉 工作流程已完成!所有阶段都已成功执行。',
|
|
152
|
-
nextActions: ['查看最终结果', '开始新任务'],
|
|
153
|
-
requiresUserConfirmation: false
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
// 如果有反馈,记录到当前阶段
|
|
157
|
-
if (feedback) {
|
|
158
|
-
const currentStageResult = task.stages.find(s => s.stage === task.currentStage);
|
|
159
|
-
if (currentStageResult) {
|
|
160
|
-
currentStageResult.feedback = feedback;
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
return yield this.executeStage(taskId, nextStage);
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* 跳转到指定阶段
|
|
168
|
-
*/
|
|
169
|
-
jumpToStage(taskId, targetStage) {
|
|
170
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
171
|
-
const task = this.getTask(taskId);
|
|
172
|
-
logger_1.logger.info('用户请求跳转阶段', {
|
|
173
|
-
taskId,
|
|
174
|
-
from: task.currentStage,
|
|
175
|
-
to: targetStage
|
|
176
|
-
});
|
|
177
|
-
return yield this.executeStage(taskId, targetStage);
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* 获取任务状态
|
|
182
|
-
*/
|
|
183
|
-
getTaskStatus(taskId) {
|
|
184
|
-
return this.getTask(taskId);
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* 获取所有任务
|
|
188
|
-
*/
|
|
189
|
-
getAllTasks() {
|
|
190
|
-
return Array.from(this.tasks.values());
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* 删除任务
|
|
194
|
-
*/
|
|
195
|
-
deleteTask(taskId) {
|
|
196
|
-
return this.tasks.delete(taskId);
|
|
197
|
-
}
|
|
198
|
-
// 私有辅助方法
|
|
199
|
-
getTask(taskId) {
|
|
200
|
-
const task = this.tasks.get(taskId);
|
|
201
|
-
if (!task) {
|
|
202
|
-
throw new types_1.CodeGeneratorError(`任务不存在: ${taskId}`, types_1.ErrorCodes.INVALID_TASK_DESCRIPTION, types_1.WorkflowStage.RESEARCH, { taskId });
|
|
203
|
-
}
|
|
204
|
-
return task;
|
|
205
|
-
}
|
|
206
|
-
generateTaskId() {
|
|
207
|
-
return `task_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
208
|
-
}
|
|
209
|
-
validateStageTransition(currentStage, targetStage) {
|
|
210
|
-
// 允许用户跳转到任何阶段(按照工作流文档要求)
|
|
211
|
-
// 但记录非顺序跳转的警告
|
|
212
|
-
const stageOrder = [
|
|
213
|
-
types_1.WorkflowStage.RESEARCH,
|
|
214
|
-
types_1.WorkflowStage.IDEATION,
|
|
215
|
-
types_1.WorkflowStage.PLANNING,
|
|
216
|
-
types_1.WorkflowStage.EXECUTION,
|
|
217
|
-
types_1.WorkflowStage.OPTIMIZATION,
|
|
218
|
-
types_1.WorkflowStage.REVIEW
|
|
219
|
-
];
|
|
220
|
-
const currentIndex = stageOrder.indexOf(currentStage);
|
|
221
|
-
const targetIndex = stageOrder.indexOf(targetStage);
|
|
222
|
-
if (targetIndex < currentIndex) {
|
|
223
|
-
logger_1.logger.warn('用户跳转到之前的阶段', {
|
|
224
|
-
from: currentStage,
|
|
225
|
-
to: targetStage
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
else if (targetIndex > currentIndex + 1) {
|
|
229
|
-
logger_1.logger.warn('用户跳过了中间阶段', {
|
|
230
|
-
from: currentStage,
|
|
231
|
-
to: targetStage,
|
|
232
|
-
skipped: stageOrder.slice(currentIndex + 1, targetIndex)
|
|
233
|
-
});
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
getNextStage(currentStage) {
|
|
237
|
-
const stageOrder = [
|
|
238
|
-
types_1.WorkflowStage.RESEARCH,
|
|
239
|
-
types_1.WorkflowStage.IDEATION,
|
|
240
|
-
types_1.WorkflowStage.PLANNING,
|
|
241
|
-
types_1.WorkflowStage.EXECUTION,
|
|
242
|
-
types_1.WorkflowStage.OPTIMIZATION,
|
|
243
|
-
types_1.WorkflowStage.REVIEW
|
|
244
|
-
];
|
|
245
|
-
const currentIndex = stageOrder.indexOf(currentStage);
|
|
246
|
-
if (currentIndex === -1 || currentIndex === stageOrder.length - 1) {
|
|
247
|
-
return null;
|
|
248
|
-
}
|
|
249
|
-
return stageOrder[currentIndex + 1];
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
exports.WorkflowManager = WorkflowManager;
|