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.
Files changed (38) hide show
  1. package/dist/commands/git/plan.js +64 -10
  2. package/dist/commands/git/plan.js.map +1 -1
  3. package/dist/commands/git/review.js +95 -2
  4. package/dist/commands/git/review.js.map +1 -1
  5. package/dist/core/capability/CapabilityLevel.d.ts +125 -0
  6. package/dist/core/capability/CapabilityLevel.js +184 -0
  7. package/dist/core/capability/CapabilityLevel.js.map +1 -0
  8. package/dist/core/capability/CostProfile.d.ts +34 -0
  9. package/dist/core/capability/CostProfile.js +138 -0
  10. package/dist/core/capability/CostProfile.js.map +1 -0
  11. package/dist/core/capability/DegradationPolicy.d.ts +26 -0
  12. package/dist/core/capability/DegradationPolicy.js +65 -0
  13. package/dist/core/capability/DegradationPolicy.js.map +1 -0
  14. package/dist/core/capability/index.d.ts +3 -0
  15. package/dist/core/capability/index.js +20 -0
  16. package/dist/core/capability/index.js.map +1 -0
  17. package/dist/core/context/ContextMeta.d.ts +30 -0
  18. package/dist/core/context/ContextMeta.js +108 -0
  19. package/dist/core/context/ContextMeta.js.map +1 -0
  20. package/dist/core/context/index.d.ts +1 -0
  21. package/dist/core/context/index.js +18 -0
  22. package/dist/core/context/index.js.map +1 -0
  23. package/dist/core/git/CodeReviewer.d.ts +11 -0
  24. package/dist/core/git/CodeReviewer.js +76 -8
  25. package/dist/core/git/CodeReviewer.js.map +1 -1
  26. package/dist/core/git/ContextGatherer.d.ts +6 -0
  27. package/dist/core/git/ContextGatherer.js +38 -3
  28. package/dist/core/git/ContextGatherer.js.map +1 -1
  29. package/dist/core/git/GitService.d.ts +13 -0
  30. package/dist/core/git/GitService.js +50 -0
  31. package/dist/core/git/GitService.js.map +1 -1
  32. package/dist/core/security/SecurityScanner.d.ts +39 -0
  33. package/dist/core/security/SecurityScanner.js +136 -0
  34. package/dist/core/security/SecurityScanner.js.map +1 -0
  35. package/dist/core/security/index.d.ts +1 -0
  36. package/dist/core/security/index.js +18 -0
  37. package/dist/core/security/index.js.map +1 -0
  38. 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. 仅输出 Markdown 内容,不要包含 "好的" 等废话。`
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
- // 增强的 Markdown 清理正则
194
- const cleanedContent = todoContent
195
- .replace(/^```(markdown|md)?\s*\n/i, '') // 去头
196
- .replace(/\n\s*```$/, '') // 去尾
197
- .trim();
198
- // 加上一些元数据头
199
- const fileOutput = `> 📅 Generated by Yuangs Git Plan at ${new Date().toLocaleString()}\n> 🎯 Context: ${userPrompt}\n\n${cleanedContent}`;
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":"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"}
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/commands/git/plan.ts"],"names":[],"mappings":"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"}
@@ -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} 个\n`));
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":";;;AA4BA,0DAgBC;AAkBD,0DAgBC;AAQD,kDAEC;AAQD,gDAEC;AAQD,8CAEC;AAuBD,wEASC;AAuCD,sDAUC;AA7LD;;;;;;;;;;;;;;GAcG;AACH,IAAY,eAMX;AAND,WAAY,eAAe;IACvB,6DAAY,CAAA;IACZ,iEAAc,CAAA;IACd,qDAAQ,CAAA;IACR,qDAAQ,CAAA;IACR,qDAAQ,CAAA;AACZ,CAAC,EANW,eAAe,+BAAf,eAAe,QAM1B;AAED;;;;GAIG;AACH,SAAgB,uBAAuB,CAAC,KAAsB;IAC1D,QAAQ,KAAK,EAAE,CAAC;QACZ,KAAK,eAAe,CAAC,QAAQ;YACzB,OAAO,UAAU,CAAC;QACtB,KAAK,eAAe,CAAC,UAAU;YAC3B,OAAO,YAAY,CAAC;QACxB,KAAK,eAAe,CAAC,IAAI;YACrB,OAAO,MAAM,CAAC;QAClB,KAAK,eAAe,CAAC,IAAI;YACrB,OAAO,MAAM,CAAC;QAClB,KAAK,eAAe,CAAC,IAAI;YACrB,OAAO,MAAM,CAAC;QAClB;YACI,kBAAkB;YAClB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,uBAAuB,CAAC,GAAW;IAC/C,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAChC,QAAQ,KAAK,EAAE,CAAC;QACZ,KAAK,UAAU;YACX,OAAO,eAAe,CAAC,QAAQ,CAAC;QACpC,KAAK,YAAY;YACb,OAAO,eAAe,CAAC,UAAU,CAAC;QACtC,KAAK,MAAM;YACP,OAAO,eAAe,CAAC,IAAI,CAAC;QAChC,KAAK,MAAM;YACP,OAAO,eAAe,CAAC,IAAI,CAAC;QAChC,KAAK,MAAM;YACP,OAAO,eAAe,CAAC,IAAI,CAAC;QAChC;YACI,OAAO,SAAS,CAAC;IACzB,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,CAAkB,EAAE,CAAkB;IACtE,OAAO,CAAC,GAAG,CAAC,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,CAAkB,EAAE,CAAkB;IACrE,OAAO,CAAC,GAAG,CAAC,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,CAAkB,EAAE,CAAkB;IACpE,OAAO,CAAC,GAAG,CAAC,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAgB,8BAA8B,CAAC,MAAyB;IACpE,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,SAAgB,qBAAqB,CAAC,aAA4B;IAC9D,IAAI,aAAa,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,8BAA8B,CAAC,CAAC,aAAa,CAAC,aAAa,EAAE,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;QACjG,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,eAAe,CAAC,IAAI,CAAC;AACxG,CAAC"}