yuangs 5.40.0 → 5.41.0
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/dist/commands/git/plan.js +64 -10
- package/dist/commands/git/plan.js.map +1 -1
- package/dist/commands/git/review.js +95 -2
- package/dist/commands/git/review.js.map +1 -1
- package/dist/core/capability/CapabilityLevel.d.ts +125 -0
- package/dist/core/capability/CapabilityLevel.js +184 -0
- package/dist/core/capability/CapabilityLevel.js.map +1 -0
- package/dist/core/capability/CostProfile.d.ts +34 -0
- package/dist/core/capability/CostProfile.js +138 -0
- package/dist/core/capability/CostProfile.js.map +1 -0
- package/dist/core/capability/DegradationPolicy.d.ts +26 -0
- package/dist/core/capability/DegradationPolicy.js +65 -0
- package/dist/core/capability/DegradationPolicy.js.map +1 -0
- package/dist/core/capability/index.d.ts +3 -0
- package/dist/core/capability/index.js +20 -0
- package/dist/core/capability/index.js.map +1 -0
- package/dist/core/context/ContextMeta.d.ts +30 -0
- package/dist/core/context/ContextMeta.js +108 -0
- package/dist/core/context/ContextMeta.js.map +1 -0
- package/dist/core/context/index.d.ts +1 -0
- package/dist/core/context/index.js +18 -0
- package/dist/core/context/index.js.map +1 -0
- package/dist/core/git/CodeReviewer.d.ts +11 -0
- package/dist/core/git/CodeReviewer.js +76 -8
- package/dist/core/git/CodeReviewer.js.map +1 -1
- package/dist/core/git/ContextGatherer.d.ts +6 -0
- package/dist/core/git/ContextGatherer.js +38 -3
- package/dist/core/git/ContextGatherer.js.map +1 -1
- package/dist/core/git/GitService.d.ts +13 -0
- package/dist/core/git/GitService.js +50 -0
- package/dist/core/git/GitService.js.map +1 -1
- package/dist/core/security/SecurityScanner.d.ts +39 -0
- package/dist/core/security/SecurityScanner.js +136 -0
- package/dist/core/security/SecurityScanner.js.map +1 -0
- package/dist/core/security/index.d.ts +1 -0
- package/dist/core/security/index.js +18 -0
- package/dist/core/security/index.js.map +1 -0
- package/package.json +2 -1
|
@@ -10,6 +10,8 @@ const fs_1 = __importDefault(require("fs"));
|
|
|
10
10
|
const path_1 = __importDefault(require("path"));
|
|
11
11
|
const GitService_1 = require("../../core/git/GitService");
|
|
12
12
|
const llm_1 = require("../../agent/llm");
|
|
13
|
+
const CapabilityLevel_1 = require("../../core/capability/CapabilityLevel");
|
|
14
|
+
const CostProfile_1 = require("../../core/capability/CostProfile");
|
|
13
15
|
const DEFAULT_PLAN_PROMPT = '分析项目现状并规划下一步开发任务';
|
|
14
16
|
const METADATA_PREFIX = '>';
|
|
15
17
|
/**
|
|
@@ -168,14 +170,48 @@ ${reviewComments}
|
|
|
168
170
|
}
|
|
169
171
|
// 4. 生成最终 todo.md
|
|
170
172
|
spinner.start('正在生成最终 todo.md 文件...');
|
|
173
|
+
// 计算任务复杂度和能力需求
|
|
174
|
+
const diff = await gitService.getDiff();
|
|
175
|
+
const allFiles = [...diff.files.staged, ...diff.files.unstaged];
|
|
176
|
+
// 使用 git diff --numstat 获取准确的行数统计
|
|
177
|
+
let estimatedTotalLines = 0;
|
|
178
|
+
try {
|
|
179
|
+
const numstat = await gitService.getDiffNumstat();
|
|
180
|
+
// numstat 直接提供准确的 added 和 deleted 行数
|
|
181
|
+
estimatedTotalLines = numstat.added + numstat.deleted;
|
|
182
|
+
// 如果 numstat 没有数据(如没有变更),使用文件数估算
|
|
183
|
+
if (estimatedTotalLines === 0 && allFiles.length > 0) {
|
|
184
|
+
estimatedTotalLines = allFiles.length * 50; // 假设平均每个文件 50 行变更
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
catch (e) {
|
|
188
|
+
// numstat 失败,使用文件数 * 100 作为后备
|
|
189
|
+
estimatedTotalLines = allFiles.length * 100;
|
|
190
|
+
}
|
|
191
|
+
const costProfile = CostProfile_1.defaultCostProfileCalculator.calculate(allFiles, estimatedTotalLines);
|
|
171
192
|
const finalPrompt = [
|
|
172
193
|
{
|
|
173
194
|
role: 'system',
|
|
174
195
|
content: `你是一个技术文档专家。请将以下开发方案整理为一份标准的 todo.md 文档。
|
|
175
|
-
|
|
196
|
+
|
|
197
|
+
重要要求:
|
|
176
198
|
1. 格式清晰,使用 Markdown Checkbox (- [ ] )。
|
|
177
199
|
2. 包含 [目标]、[文件变更]、[详细步骤]。
|
|
178
|
-
3.
|
|
200
|
+
3. 直接输出 Markdown 内容,不要使用 Markdown 代码块 (\`\`\`) 包裹。
|
|
201
|
+
4. 不要包含任何对话式前缀(如"好的"、"这是")或后缀(如"希望这对你有帮助")。
|
|
202
|
+
5. 开头直接输出内容,不要有任何问候语或开场白。
|
|
203
|
+
|
|
204
|
+
能力等级标注:
|
|
205
|
+
- SEMANTIC: 语义理解,需要理解代码意图和设计
|
|
206
|
+
- STRUCTURAL: 结构分析,需要理解代码结构和依赖关系
|
|
207
|
+
- LINE: 行级分析,需要理解具体代码行
|
|
208
|
+
- TEXT: 文本分析,只需要处理文本内容
|
|
209
|
+
- NONE: 无需智能分析
|
|
210
|
+
|
|
211
|
+
格式示例:
|
|
212
|
+
- [ ] 实现用户认证 [SEMANTIC]
|
|
213
|
+
- capability: SEMANTIC
|
|
214
|
+
- fallbackChain: [STRUCTURAL, LINE, TEXT, NONE]`
|
|
179
215
|
},
|
|
180
216
|
{
|
|
181
217
|
role: 'user',
|
|
@@ -184,19 +220,37 @@ ${reviewComments}
|
|
|
184
220
|
];
|
|
185
221
|
const finalResponse = await (0, llm_1.runLLM)({
|
|
186
222
|
prompt: { messages: finalPrompt },
|
|
187
|
-
model: 'Assistant',
|
|
223
|
+
model: 'Assistant',
|
|
188
224
|
stream: false,
|
|
189
225
|
bypassRouter: true
|
|
190
226
|
});
|
|
191
227
|
const todoContent = finalResponse.rawText;
|
|
192
228
|
const filePath = path_1.default.join(process.cwd(), 'todo.md');
|
|
193
|
-
//
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
.trim();
|
|
198
|
-
|
|
199
|
-
|
|
229
|
+
// 安全的 LLM 输出清理逻辑
|
|
230
|
+
// 策略:仅在明确检测到 Markdown fence 时才进行清理
|
|
231
|
+
// 避免误删真实内容中的对话式文本
|
|
232
|
+
const cleanedContent = (() => {
|
|
233
|
+
let content = todoContent.trim();
|
|
234
|
+
// 检测是否存在 Markdown fence
|
|
235
|
+
const hasOpeningFence = /^```(markdown|md)?\s*\n/i.test(content);
|
|
236
|
+
const hasClosingFence = /\n\s*```$/.test(content);
|
|
237
|
+
if (hasOpeningFence || hasClosingFence) {
|
|
238
|
+
// 仅在存在 fence 时进行清理
|
|
239
|
+
content = content.replace(/^```(markdown|md)?\s*\n/i, '');
|
|
240
|
+
content = content.replace(/\n\s*```$/, '');
|
|
241
|
+
}
|
|
242
|
+
return content.trim();
|
|
243
|
+
})();
|
|
244
|
+
// 添加能力元数据到文件头
|
|
245
|
+
const metadataLines = [
|
|
246
|
+
`> 📅 Generated by Yuangs Git Plan at ${new Date().toLocaleString()}`,
|
|
247
|
+
`> 🎯 Context: ${userPrompt}`,
|
|
248
|
+
`> 🔧 Capability Level: ${CapabilityLevel_1.CapabilityLevel[costProfile.requiredCapability]}`,
|
|
249
|
+
`> ⚙️ Estimated Time: ${costProfile.estimatedTime}ms`,
|
|
250
|
+
`> 📊 Estimated Tokens: ${costProfile.estimatedTokens}`,
|
|
251
|
+
'',
|
|
252
|
+
];
|
|
253
|
+
const fileOutput = metadataLines.join('\n') + cleanedContent;
|
|
200
254
|
fs_1.default.writeFileSync(filePath, fileOutput);
|
|
201
255
|
spinner.succeed(chalk_1.default.green(`\n✅ 规划完成!文件已生成: ${chalk_1.default.bold('todo.md')}`));
|
|
202
256
|
console.log(chalk_1.default.gray(`👉 你可以使用 'code todo.md' 打开查看`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/commands/git/plan.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/commands/git/plan.ts"],"names":[],"mappings":";;;;;AAyDA,kDA0PC;AAlTD,kDAA0B;AAC1B,8CAAsB;AACtB,4CAAoB;AACpB,gDAAwB;AACxB,0DAAuD;AACvD,yCAAkD;AAElD,2EAAuF;AACvF,mEAAiF;AAEjF,MAAM,mBAAmB,GAAG,kBAAkB,CAAC;AAC/C,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAAC,SAAiB,EAAE,QAAgB;IAChE,IAAI,SAAS,EAAE,CAAC;QACZ,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,CAAC;QACD,MAAM,YAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,MAAM,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAE7D,sCAAsC;QACtC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,cAAc;QACd,OAAO,UAAU,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACvF,UAAU,EAAE,CAAC;QACjB,CAAC;QAED,YAAY;QACZ,OAAO,UAAU,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAClE,UAAU,EAAE,CAAC;QACjB,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QAE7D,IAAI,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAClD,CAAC;IACL,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QAClB,IAAI,CAAC,YAAY,KAAK,IAAK,CAA2B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvE,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAClE,CAAC;IACL,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC5D,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,MAAe;IAC/C,MAAM;SACD,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,+CAA+C,CAAC;SAC5D,MAAM,CAAC,uBAAuB,EAAE,MAAM,EAAE,GAAG,CAAC;SAC5C,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE;QACnC,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;QAErD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,MAAM,iBAAiB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAEtF,qBAAqB;QACrB,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,QAAQ,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC;QAErF,IAAI,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,uBAAU,EAAE,CAAC;YAEpC,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC;gBACxC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAC9B,OAAO;YACX,CAAC;YAED,iBAAiB;YACjB,OAAO,CAAC,IAAI,GAAG,kBAAkB,CAAC;YAClC,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YACtD,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC;gBACtC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBACrF,CAAC,CAAC,QAAQ,CAAC;YAEb,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAE/B,YAAY;YACZ,MAAM,eAAe,GAAG,WAAW,CAAC,CAAC,QAAQ;YAC7C,MAAM,cAAc,GAAG,uBAAuB,CAAC,CAAC,gBAAgB;YAEhE,WAAW;YACX,MAAM,cAAc,GAAG;;EAErC,aAAa;;;EAGb,UAAU;CACX,CAAC;YAEc,IAAI,WAAW,GAAG,EAAE,CAAC,CAAC,cAAc;YACpC,IAAI,cAAc,GAAG,EAAE,CAAC,CAAC,WAAW;YAEpC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAErD,wBAAwB;YACxB,OAAO,CAAC,KAAK,CAAC,SAAS,eAAe,cAAc,CAAC,CAAC;YAEtD,MAAM,WAAW,GAAuB;gBACpC;oBACI,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE;;qBAEZ;iBACA;gBACD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE;aAC5C,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,IAAA,YAAM,EAAC;gBAC1B,MAAM,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE;gBACjC,KAAK,EAAE,eAAe;gBACtB,MAAM,EAAE,KAAK;gBACb,YAAY,EAAE,IAAI;aACrB,CAAC,CAAC;YAEH,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC;YAC/B,OAAO,CAAC,OAAO,CAAC,eAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YAC3C,kEAAkE;YAElE,qBAAqB;YACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,SAAS,MAAM,CAAC,CAAC,CAAC;gBAE7D,0BAA0B;gBAC1B,OAAO,CAAC,KAAK,CAAC,SAAS,cAAc,YAAY,CAAC,CAAC;gBAEnD,MAAM,YAAY,GAAuB;oBACrC;wBACI,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE;;0BAEX;qBACD;oBACD;wBACI,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;EACnC,cAAc;;;EAGd,WAAW;CACZ;qBACwB;iBACJ,CAAC;gBAEF,MAAM,SAAS,GAAG,MAAM,IAAA,YAAM,EAAC;oBAC3B,MAAM,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE;oBAClC,KAAK,EAAE,cAAc;oBACrB,MAAM,EAAE,KAAK;oBACb,YAAY,EAAE,IAAI;iBACrB,CAAC,CAAC;gBAEH,cAAc,GAAG,SAAS,CAAC,OAAO,CAAC;gBACnC,OAAO,CAAC,OAAO,CAAC,eAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;gBAChD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,UAAU,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;gBAE7F,6BAA6B;gBAC7B,OAAO,CAAC,KAAK,CAAC,SAAS,eAAe,gBAAgB,CAAC,CAAC;gBAExD,MAAM,YAAY,GAAuB;oBACrC;wBACI,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,gCAAgC;qBAC5C;oBACD;wBACI,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;;EAEnC,WAAW;;;EAGX,cAAc;;aAEH;qBACY;iBACJ,CAAC;gBAEF,MAAM,SAAS,GAAG,MAAM,IAAA,YAAM,EAAC;oBAC3B,MAAM,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE;oBAClC,KAAK,EAAE,eAAe;oBACtB,MAAM,EAAE,KAAK;oBACb,YAAY,EAAE,IAAI;iBACrB,CAAC,CAAC;gBAEH,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC;gBAChC,OAAO,CAAC,OAAO,CAAC,eAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YAC/C,CAAC;YAED,kBAAkB;YAClB,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;YAEtC,eAAe;YACf,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;YACxC,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAEhE,kCAAkC;YAClC,IAAI,mBAAmB,GAAG,CAAC,CAAC;YAC5B,IAAI,CAAC;gBACD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,cAAc,EAAE,CAAC;gBAClD,qCAAqC;gBACrC,mBAAmB,GAAG,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;gBAEtD,iCAAiC;gBACjC,IAAI,mBAAmB,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnD,mBAAmB,GAAG,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,kBAAkB;gBAClE,CAAC;YACL,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,8BAA8B;gBAC9B,mBAAmB,GAAG,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC;YAChD,CAAC;YAED,MAAM,WAAW,GAAG,0CAA4B,CAAC,SAAS,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;YAE1F,MAAM,WAAW,GAAuB;gBACpC;oBACI,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE;;;;;;;;;;;;;;;;;;;kDAmBiB;iBAC7B;gBACD;oBACI,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,WAAW;iBACvB;aACJ,CAAC;YAEF,MAAM,aAAa,GAAG,MAAM,IAAA,YAAM,EAAC;gBAC/B,MAAM,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE;gBACjC,KAAK,EAAE,WAAW;gBAClB,MAAM,EAAE,KAAK;gBACb,YAAY,EAAE,IAAI;aACrB,CAAC,CAAC;YAEH,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC;YAC1C,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;YAErD,iBAAiB;YACjB,mCAAmC;YACnC,kBAAkB;YAClB,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE;gBACzB,IAAI,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;gBAEjC,wBAAwB;gBACxB,MAAM,eAAe,GAAG,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACjE,MAAM,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAElD,IAAI,eAAe,IAAI,eAAe,EAAE,CAAC;oBACrC,mBAAmB;oBACnB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC;oBAC1D,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;gBAC/C,CAAC;gBAED,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;YAC1B,CAAC,CAAC,EAAE,CAAC;YAEL,cAAc;YACd,MAAM,aAAa,GAAG;gBAClB,wCAAwC,IAAI,IAAI,EAAE,CAAC,cAAc,EAAE,EAAE;gBACrE,iBAAiB,UAAU,EAAE;gBAC7B,0BAA0B,iCAAe,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE;gBAC3E,yBAAyB,WAAW,CAAC,aAAa,IAAI;gBACtD,0BAA0B,WAAW,CAAC,eAAe,EAAE;gBACvD,EAAE;aACL,CAAC;YAEF,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC;YAE7D,YAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAEvC,OAAO,CAAC,OAAO,CAAC,eAAK,CAAC,KAAK,CAAC,mBAAmB,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;YACzE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;QAE5D,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACrD,IAAI,KAAK,YAAY,aAAO,EAAE,CAAC;gBAC3B,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YAC5D,CAAC;QACL,CAAC;IACL,CAAC,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -7,10 +7,13 @@ exports.registerReviewCommand = registerReviewCommand;
|
|
|
7
7
|
const chalk_1 = __importDefault(require("chalk"));
|
|
8
8
|
const ora_1 = __importDefault(require("ora"));
|
|
9
9
|
const fs_1 = __importDefault(require("fs"));
|
|
10
|
+
const promises_1 = __importDefault(require("fs/promises"));
|
|
10
11
|
const path_1 = __importDefault(require("path"));
|
|
12
|
+
const p_limit_1 = __importDefault(require("p-limit"));
|
|
11
13
|
const GitService_1 = require("../../core/git/GitService");
|
|
12
14
|
const CodeReviewer_1 = require("../../core/git/CodeReviewer");
|
|
13
15
|
const modelRouter_1 = require("../../core/modelRouter");
|
|
16
|
+
const SecurityScanner_1 = require("../../core/security/SecurityScanner");
|
|
14
17
|
function registerReviewCommand(gitCmd) {
|
|
15
18
|
// git review - AI 代码审查
|
|
16
19
|
gitCmd
|
|
@@ -21,6 +24,8 @@ function registerReviewCommand(gitCmd) {
|
|
|
21
24
|
.option('--unstaged', '审查未暂存的变更')
|
|
22
25
|
.option('--no-ai', '禁用 AI (将显示变更摘要)')
|
|
23
26
|
.option('--no-save', '不保存审查结果到 git_reviews.md')
|
|
27
|
+
.option('--force', '忽略安全警告继续执行')
|
|
28
|
+
.option('--no-security', '跳过安全扫描')
|
|
24
29
|
.action(async (options) => {
|
|
25
30
|
if (options.ai === false) {
|
|
26
31
|
const gitService = new GitService_1.GitService();
|
|
@@ -38,6 +43,20 @@ function registerReviewCommand(gitCmd) {
|
|
|
38
43
|
spinner.fail('当前目录不是 Git 仓库');
|
|
39
44
|
return;
|
|
40
45
|
}
|
|
46
|
+
const securityScanner = new SecurityScanner_1.SecurityScanner();
|
|
47
|
+
const diff = await gitService.getDiff();
|
|
48
|
+
const files = options.unstaged ? diff.files.unstaged : diff.files.staged;
|
|
49
|
+
// 安全扫描(如果未禁用)
|
|
50
|
+
if (options.security !== false) {
|
|
51
|
+
spinner.text = '执行安全扫描...';
|
|
52
|
+
const scanResult = await performSecurityScan(gitService, securityScanner, files, options);
|
|
53
|
+
if (scanResult.hasIssues && !scanResult.shouldContinue) {
|
|
54
|
+
spinner.stop();
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
spinner.succeed('安全扫描完成');
|
|
58
|
+
}
|
|
59
|
+
spinner.text = '加载 AI 模型配置...';
|
|
41
60
|
const router = (0, modelRouter_1.getRouter)();
|
|
42
61
|
const reviewer = new CodeReviewer_1.CodeReviewer(gitService, router);
|
|
43
62
|
const level = options.level;
|
|
@@ -50,11 +69,16 @@ function registerReviewCommand(gitCmd) {
|
|
|
50
69
|
result = await reviewer.review(level, !options.unstaged);
|
|
51
70
|
}
|
|
52
71
|
spinner.succeed('代码审查完成');
|
|
53
|
-
// 显示审查结果
|
|
54
72
|
console.log(chalk_1.default.bold.cyan('\n🔍 代码审查报告\n'));
|
|
55
73
|
const scoreColor = getScoreColor(result.score);
|
|
56
74
|
console.log(chalk_1.default.bold('评分: ') + scoreColor(result.score.toString()) + chalk_1.default.bold('/100'));
|
|
57
|
-
console.log(chalk_1.default.gray(`审查文件: ${result.filesReviewed}
|
|
75
|
+
console.log(chalk_1.default.gray(`审查文件: ${result.filesReviewed} 个`));
|
|
76
|
+
console.log(chalk_1.default.gray(`置信度: ${(result.confidence * 100).toFixed(1)}%`));
|
|
77
|
+
if (result.degradation?.applied) {
|
|
78
|
+
console.log(chalk_1.default.yellow(`降级: ${result.degradation.originalLevel} → ${result.degradation.targetLevel}`));
|
|
79
|
+
console.log(chalk_1.default.gray(`原因: ${result.degradation.reason}`));
|
|
80
|
+
}
|
|
81
|
+
console.log();
|
|
58
82
|
console.log(chalk_1.default.bold('📋 总体评价:'));
|
|
59
83
|
console.log(chalk_1.default.white(` ${result.summary}\n`));
|
|
60
84
|
if (result.issues.length > 0) {
|
|
@@ -251,4 +275,73 @@ function formatReviewAsMarkdown(review) {
|
|
|
251
275
|
md += `[↑ 返回顶部](#)\n\n`;
|
|
252
276
|
return md;
|
|
253
277
|
}
|
|
278
|
+
/**
|
|
279
|
+
* 执行安全扫描
|
|
280
|
+
*/
|
|
281
|
+
async function performSecurityScan(gitService, securityScanner, files, options) {
|
|
282
|
+
const repoRoot = await gitService.getRepoRoot();
|
|
283
|
+
const filesToScan = new Map();
|
|
284
|
+
// 限制扫描文件数量和并发数,避免性能问题
|
|
285
|
+
const MAX_SCAN_FILES = 50;
|
|
286
|
+
const MAX_CONCURRENT = 5; // 限制并发数
|
|
287
|
+
const limit = (0, p_limit_1.default)(MAX_CONCURRENT);
|
|
288
|
+
const filesToProcess = files.slice(0, MAX_SCAN_FILES);
|
|
289
|
+
if (files.length > MAX_SCAN_FILES) {
|
|
290
|
+
console.log(chalk_1.default.yellow(`\nℹ️ 文件数量过多,仅扫描前 ${MAX_SCAN_FILES} 个文件\n`));
|
|
291
|
+
}
|
|
292
|
+
// 使用并发限制异步扫描文件
|
|
293
|
+
const scanPromises = filesToProcess.map(file => limit(async () => {
|
|
294
|
+
const filePath = path_1.default.join(repoRoot, file);
|
|
295
|
+
try {
|
|
296
|
+
const stats = await promises_1.default.stat(filePath);
|
|
297
|
+
if (!stats.isFile())
|
|
298
|
+
return null;
|
|
299
|
+
// 限制文件大小,避免扫描大文件
|
|
300
|
+
const MAX_FILE_SIZE = 1024 * 1024; // 1MB
|
|
301
|
+
if (stats.size > MAX_FILE_SIZE) {
|
|
302
|
+
console.log(chalk_1.default.yellow(`⚠️ 跳过大文件: ${file} (${(stats.size / 1024 / 1024).toFixed(2)}MB)`));
|
|
303
|
+
return null;
|
|
304
|
+
}
|
|
305
|
+
const content = await promises_1.default.readFile(filePath, 'utf8');
|
|
306
|
+
const scanResult = securityScanner.scanAndRedact(content, file);
|
|
307
|
+
if (scanResult.issues.length > 0) {
|
|
308
|
+
return { file, issues: scanResult.issues };
|
|
309
|
+
}
|
|
310
|
+
return null;
|
|
311
|
+
}
|
|
312
|
+
catch (error) {
|
|
313
|
+
console.warn(chalk_1.default.yellow(`Warning: 无法读取文件 ${file}: ${error.message}`));
|
|
314
|
+
return null;
|
|
315
|
+
}
|
|
316
|
+
}));
|
|
317
|
+
const results = await Promise.all(scanPromises);
|
|
318
|
+
for (const result of results) {
|
|
319
|
+
if (result && result.issues.length > 0) {
|
|
320
|
+
filesToScan.set(result.file, '');
|
|
321
|
+
console.log(chalk_1.default.yellow(`⚠️ 发现 ${result.issues.length} 个安全问题在 ${result.file}`));
|
|
322
|
+
for (const issue of result.issues) {
|
|
323
|
+
console.log(chalk_1.default.red(` ${issue.type}: ${issue.description} (line ${issue.line})`));
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
if (filesToScan.size > 0) {
|
|
328
|
+
console.log(chalk_1.default.yellow('\n⚠️ 警告:检测到可能的敏感信息!'));
|
|
329
|
+
console.log(chalk_1.default.yellow('建议:'));
|
|
330
|
+
console.log(chalk_1.default.yellow(' • 移除硬编码的密钥、密码、令牌等敏感信息'));
|
|
331
|
+
console.log(chalk_1.default.yellow(' • 使用环境变量或配置文件管理敏感数据'));
|
|
332
|
+
console.log(chalk_1.default.yellow(' • 考虑添加到 .gitignore 中\n'));
|
|
333
|
+
// 检查是否强制继续
|
|
334
|
+
const shouldContinue = options.force || process.env.YUANGS_AUTO_CONTINUE === 'true';
|
|
335
|
+
if (!shouldContinue) {
|
|
336
|
+
console.log(chalk_1.default.cyan('💡 使用 --force 选项可跳过此警告继续执行'));
|
|
337
|
+
console.log(chalk_1.default.cyan('💡 或设置环境变量 YUANGS_AUTO_CONTINUE=true\n'));
|
|
338
|
+
return { hasIssues: true, shouldContinue: false };
|
|
339
|
+
}
|
|
340
|
+
else {
|
|
341
|
+
console.log(chalk_1.default.yellow('⚠️ 已强制继续,请注意安全风险\n'));
|
|
342
|
+
return { hasIssues: true, shouldContinue: true };
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
return { hasIssues: false, shouldContinue: true };
|
|
346
|
+
}
|
|
254
347
|
//# sourceMappingURL=review.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review.js","sourceRoot":"","sources":["../../../src/commands/git/review.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"review.js","sourceRoot":"","sources":["../../../src/commands/git/review.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git 能力等级枚举
|
|
3
|
+
*
|
|
4
|
+
* 定义了不同层级的代码理解和处理能力,用于:
|
|
5
|
+
* - 评估任务的复杂度
|
|
6
|
+
* - 决定降级策略
|
|
7
|
+
* - 选择合适的 AI 模型和工具
|
|
8
|
+
*
|
|
9
|
+
* 等级说明:
|
|
10
|
+
* - SEMANTIC (5): 语义理解,需要理解代码意图和设计模式
|
|
11
|
+
* - STRUCTURAL (4): 结构分析,需要理解代码结构和依赖关系
|
|
12
|
+
* - LINE (3): 行级分析,需要理解具体代码行逻辑
|
|
13
|
+
* - TEXT (2): 文本分析,只需要处理文本内容
|
|
14
|
+
* - NONE (1): 无需智能分析
|
|
15
|
+
*/
|
|
16
|
+
export declare enum CapabilityLevel {
|
|
17
|
+
SEMANTIC = 5,
|
|
18
|
+
STRUCTURAL = 4,
|
|
19
|
+
LINE = 3,
|
|
20
|
+
TEXT = 2,
|
|
21
|
+
NONE = 1
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* 将 CapabilityLevel 枚举转换为字符串
|
|
25
|
+
* @param level 能力等级
|
|
26
|
+
* @returns 字符串表示
|
|
27
|
+
*/
|
|
28
|
+
export declare function capabilityLevelToString(level: CapabilityLevel): string;
|
|
29
|
+
/**
|
|
30
|
+
* 将字符串转换为 CapabilityLevel
|
|
31
|
+
* 用于从配置或 LLM 输出解析能力等级
|
|
32
|
+
*
|
|
33
|
+
* @param str 能力等级字符串(不区分大小写)
|
|
34
|
+
* @returns CapabilityLevel 枚举值,如果字符串无效则返回 undefined
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* const level = stringToCapabilityLevel('semantic');
|
|
39
|
+
* console.log(level); // CapabilityLevel.SEMANTIC
|
|
40
|
+
*
|
|
41
|
+
* const invalid = stringToCapabilityLevel('INVALID');
|
|
42
|
+
* console.log(invalid); // undefined
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export declare function stringToCapabilityLevel(str: string): CapabilityLevel | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* 比较两个能力等级
|
|
48
|
+
* @param a 第一个能力等级
|
|
49
|
+
* @param b 第二个能力等级
|
|
50
|
+
* @returns 正数表示 a > b,负数表示 a < b,0 表示相等
|
|
51
|
+
*/
|
|
52
|
+
export declare function compareCapabilities(a: CapabilityLevel, b: CapabilityLevel): number;
|
|
53
|
+
/**
|
|
54
|
+
* 判断能力等级 a 是否高于 b
|
|
55
|
+
* @param a 第一个能力等级
|
|
56
|
+
* @param b 第二个能力等级
|
|
57
|
+
* @returns 如果 a > b 返回 true
|
|
58
|
+
*/
|
|
59
|
+
export declare function isCapabilityHigher(a: CapabilityLevel, b: CapabilityLevel): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* 判断能力等级 a 是否低于 b
|
|
62
|
+
* @param a 第一个能力等级
|
|
63
|
+
* @param b 第二个能力等级
|
|
64
|
+
* @returns 如果 a < b 返回 true
|
|
65
|
+
*/
|
|
66
|
+
export declare function isCapabilityLower(a: CapabilityLevel, b: CapabilityLevel): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* 验证能力等级序列的单调性(严格递减)
|
|
69
|
+
* 用于检查 fallbackChain 是否符合从高到低的要求
|
|
70
|
+
*
|
|
71
|
+
* @param levels 能力等级数组
|
|
72
|
+
* @returns 如果序列严格递减返回 true
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```typescript
|
|
76
|
+
* validateCapabilityMonotonicity([
|
|
77
|
+
* CapabilityLevel.SEMANTIC,
|
|
78
|
+
* CapabilityLevel.STRUCTURAL,
|
|
79
|
+
* CapabilityLevel.NONE
|
|
80
|
+
* ]); // true
|
|
81
|
+
*
|
|
82
|
+
* validateCapabilityMonotonicity([
|
|
83
|
+
* CapabilityLevel.TEXT,
|
|
84
|
+
* CapabilityLevel.SEMANTIC
|
|
85
|
+
* ]); // false
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
export declare function validateCapabilityMonotonicity(levels: CapabilityLevel[]): boolean;
|
|
89
|
+
/**
|
|
90
|
+
* 最小能力和降级链接口
|
|
91
|
+
* 定义模块的能力需求和降级路径
|
|
92
|
+
*/
|
|
93
|
+
export interface MinCapability {
|
|
94
|
+
minCapability: CapabilityLevel;
|
|
95
|
+
fallbackChain: CapabilityLevel[];
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* 验证降级链的有效性
|
|
99
|
+
*
|
|
100
|
+
* 规则:
|
|
101
|
+
* 1. 降级链必须严格递减(从高到低)
|
|
102
|
+
* 2. 降级链必须以 NONE 结束
|
|
103
|
+
*
|
|
104
|
+
* @param minCapability 包含最小能力和降级链的对象
|
|
105
|
+
* @returns 如果降级链有效返回 true
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```typescript
|
|
109
|
+
* validateFallbackChain({
|
|
110
|
+
* minCapability: CapabilityLevel.SEMANTIC,
|
|
111
|
+
* fallbackChain: [CapabilityLevel.STRUCTURAL, CapabilityLevel.TEXT, CapabilityLevel.NONE]
|
|
112
|
+
* }); // true
|
|
113
|
+
*
|
|
114
|
+
* validateFallbackChain({
|
|
115
|
+
* minCapability: CapabilityLevel.SEMANTIC,
|
|
116
|
+
* fallbackChain: [CapabilityLevel.NONE]
|
|
117
|
+
* }); // true
|
|
118
|
+
*
|
|
119
|
+
* validateFallbackChain({
|
|
120
|
+
* minCapability: CapabilityLevel.SEMANTIC,
|
|
121
|
+
* fallbackChain: [CapabilityLevel.TEXT] // 未以 NONE 结束
|
|
122
|
+
* }); // false
|
|
123
|
+
* ```
|
|
124
|
+
*/
|
|
125
|
+
export declare function validateFallbackChain(minCapability: MinCapability): boolean;
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CapabilityLevel = void 0;
|
|
4
|
+
exports.capabilityLevelToString = capabilityLevelToString;
|
|
5
|
+
exports.stringToCapabilityLevel = stringToCapabilityLevel;
|
|
6
|
+
exports.compareCapabilities = compareCapabilities;
|
|
7
|
+
exports.isCapabilityHigher = isCapabilityHigher;
|
|
8
|
+
exports.isCapabilityLower = isCapabilityLower;
|
|
9
|
+
exports.validateCapabilityMonotonicity = validateCapabilityMonotonicity;
|
|
10
|
+
exports.validateFallbackChain = validateFallbackChain;
|
|
11
|
+
/**
|
|
12
|
+
* Git 能力等级枚举
|
|
13
|
+
*
|
|
14
|
+
* 定义了不同层级的代码理解和处理能力,用于:
|
|
15
|
+
* - 评估任务的复杂度
|
|
16
|
+
* - 决定降级策略
|
|
17
|
+
* - 选择合适的 AI 模型和工具
|
|
18
|
+
*
|
|
19
|
+
* 等级说明:
|
|
20
|
+
* - SEMANTIC (5): 语义理解,需要理解代码意图和设计模式
|
|
21
|
+
* - STRUCTURAL (4): 结构分析,需要理解代码结构和依赖关系
|
|
22
|
+
* - LINE (3): 行级分析,需要理解具体代码行逻辑
|
|
23
|
+
* - TEXT (2): 文本分析,只需要处理文本内容
|
|
24
|
+
* - NONE (1): 无需智能分析
|
|
25
|
+
*/
|
|
26
|
+
var CapabilityLevel;
|
|
27
|
+
(function (CapabilityLevel) {
|
|
28
|
+
CapabilityLevel[CapabilityLevel["SEMANTIC"] = 5] = "SEMANTIC";
|
|
29
|
+
CapabilityLevel[CapabilityLevel["STRUCTURAL"] = 4] = "STRUCTURAL";
|
|
30
|
+
CapabilityLevel[CapabilityLevel["LINE"] = 3] = "LINE";
|
|
31
|
+
CapabilityLevel[CapabilityLevel["TEXT"] = 2] = "TEXT";
|
|
32
|
+
CapabilityLevel[CapabilityLevel["NONE"] = 1] = "NONE";
|
|
33
|
+
})(CapabilityLevel || (exports.CapabilityLevel = CapabilityLevel = {}));
|
|
34
|
+
/**
|
|
35
|
+
* 将 CapabilityLevel 枚举转换为字符串
|
|
36
|
+
* @param level 能力等级
|
|
37
|
+
* @returns 字符串表示
|
|
38
|
+
*/
|
|
39
|
+
function capabilityLevelToString(level) {
|
|
40
|
+
switch (level) {
|
|
41
|
+
case CapabilityLevel.SEMANTIC:
|
|
42
|
+
return 'SEMANTIC';
|
|
43
|
+
case CapabilityLevel.STRUCTURAL:
|
|
44
|
+
return 'STRUCTURAL';
|
|
45
|
+
case CapabilityLevel.LINE:
|
|
46
|
+
return 'LINE';
|
|
47
|
+
case CapabilityLevel.TEXT:
|
|
48
|
+
return 'TEXT';
|
|
49
|
+
case CapabilityLevel.NONE:
|
|
50
|
+
return 'NONE';
|
|
51
|
+
default:
|
|
52
|
+
// 如果传入未知值,返回其数字表示
|
|
53
|
+
return String(level);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* 将字符串转换为 CapabilityLevel
|
|
58
|
+
* 用于从配置或 LLM 输出解析能力等级
|
|
59
|
+
*
|
|
60
|
+
* @param str 能力等级字符串(不区分大小写)
|
|
61
|
+
* @returns CapabilityLevel 枚举值,如果字符串无效则返回 undefined
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```typescript
|
|
65
|
+
* const level = stringToCapabilityLevel('semantic');
|
|
66
|
+
* console.log(level); // CapabilityLevel.SEMANTIC
|
|
67
|
+
*
|
|
68
|
+
* const invalid = stringToCapabilityLevel('INVALID');
|
|
69
|
+
* console.log(invalid); // undefined
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
function stringToCapabilityLevel(str) {
|
|
73
|
+
const upper = str.toUpperCase();
|
|
74
|
+
switch (upper) {
|
|
75
|
+
case 'SEMANTIC':
|
|
76
|
+
return CapabilityLevel.SEMANTIC;
|
|
77
|
+
case 'STRUCTURAL':
|
|
78
|
+
return CapabilityLevel.STRUCTURAL;
|
|
79
|
+
case 'LINE':
|
|
80
|
+
return CapabilityLevel.LINE;
|
|
81
|
+
case 'TEXT':
|
|
82
|
+
return CapabilityLevel.TEXT;
|
|
83
|
+
case 'NONE':
|
|
84
|
+
return CapabilityLevel.NONE;
|
|
85
|
+
default:
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* 比较两个能力等级
|
|
91
|
+
* @param a 第一个能力等级
|
|
92
|
+
* @param b 第二个能力等级
|
|
93
|
+
* @returns 正数表示 a > b,负数表示 a < b,0 表示相等
|
|
94
|
+
*/
|
|
95
|
+
function compareCapabilities(a, b) {
|
|
96
|
+
return a - b;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* 判断能力等级 a 是否高于 b
|
|
100
|
+
* @param a 第一个能力等级
|
|
101
|
+
* @param b 第二个能力等级
|
|
102
|
+
* @returns 如果 a > b 返回 true
|
|
103
|
+
*/
|
|
104
|
+
function isCapabilityHigher(a, b) {
|
|
105
|
+
return a > b;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* 判断能力等级 a 是否低于 b
|
|
109
|
+
* @param a 第一个能力等级
|
|
110
|
+
* @param b 第二个能力等级
|
|
111
|
+
* @returns 如果 a < b 返回 true
|
|
112
|
+
*/
|
|
113
|
+
function isCapabilityLower(a, b) {
|
|
114
|
+
return a < b;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* 验证能力等级序列的单调性(严格递减)
|
|
118
|
+
* 用于检查 fallbackChain 是否符合从高到低的要求
|
|
119
|
+
*
|
|
120
|
+
* @param levels 能力等级数组
|
|
121
|
+
* @returns 如果序列严格递减返回 true
|
|
122
|
+
*
|
|
123
|
+
* @example
|
|
124
|
+
* ```typescript
|
|
125
|
+
* validateCapabilityMonotonicity([
|
|
126
|
+
* CapabilityLevel.SEMANTIC,
|
|
127
|
+
* CapabilityLevel.STRUCTURAL,
|
|
128
|
+
* CapabilityLevel.NONE
|
|
129
|
+
* ]); // true
|
|
130
|
+
*
|
|
131
|
+
* validateCapabilityMonotonicity([
|
|
132
|
+
* CapabilityLevel.TEXT,
|
|
133
|
+
* CapabilityLevel.SEMANTIC
|
|
134
|
+
* ]); // false
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
function validateCapabilityMonotonicity(levels) {
|
|
138
|
+
if (levels.length <= 1)
|
|
139
|
+
return true;
|
|
140
|
+
for (let i = 0; i < levels.length - 1; i++) {
|
|
141
|
+
if (levels[i] <= levels[i + 1]) {
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* 验证降级链的有效性
|
|
149
|
+
*
|
|
150
|
+
* 规则:
|
|
151
|
+
* 1. 降级链必须严格递减(从高到低)
|
|
152
|
+
* 2. 降级链必须以 NONE 结束
|
|
153
|
+
*
|
|
154
|
+
* @param minCapability 包含最小能力和降级链的对象
|
|
155
|
+
* @returns 如果降级链有效返回 true
|
|
156
|
+
*
|
|
157
|
+
* @example
|
|
158
|
+
* ```typescript
|
|
159
|
+
* validateFallbackChain({
|
|
160
|
+
* minCapability: CapabilityLevel.SEMANTIC,
|
|
161
|
+
* fallbackChain: [CapabilityLevel.STRUCTURAL, CapabilityLevel.TEXT, CapabilityLevel.NONE]
|
|
162
|
+
* }); // true
|
|
163
|
+
*
|
|
164
|
+
* validateFallbackChain({
|
|
165
|
+
* minCapability: CapabilityLevel.SEMANTIC,
|
|
166
|
+
* fallbackChain: [CapabilityLevel.NONE]
|
|
167
|
+
* }); // true
|
|
168
|
+
*
|
|
169
|
+
* validateFallbackChain({
|
|
170
|
+
* minCapability: CapabilityLevel.SEMANTIC,
|
|
171
|
+
* fallbackChain: [CapabilityLevel.TEXT] // 未以 NONE 结束
|
|
172
|
+
* }); // false
|
|
173
|
+
* ```
|
|
174
|
+
*/
|
|
175
|
+
function validateFallbackChain(minCapability) {
|
|
176
|
+
if (minCapability.fallbackChain.length === 0) {
|
|
177
|
+
return true;
|
|
178
|
+
}
|
|
179
|
+
if (!validateCapabilityMonotonicity([minCapability.minCapability, ...minCapability.fallbackChain])) {
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
return minCapability.fallbackChain[minCapability.fallbackChain.length - 1] === CapabilityLevel.NONE;
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=CapabilityLevel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CapabilityLevel.js","sourceRoot":"","sources":["../../../src/core/capability/CapabilityLevel.ts"],"names":[],"mappings":"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"}
|