soloforge 1.1.2 → 1.2.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.
- package/dist/adapters/claude_code/tools.d.ts.map +1 -1
- package/dist/adapters/claude_code/tools.js +8 -0
- package/dist/adapters/claude_code/tools.js.map +1 -1
- package/dist/bin/soloforge.js +7 -2
- package/dist/bin/soloforge.js.map +1 -1
- package/dist/engine/audit_verifier.d.ts +52 -0
- package/dist/engine/audit_verifier.d.ts.map +1 -0
- package/dist/engine/audit_verifier.js +96 -0
- package/dist/engine/audit_verifier.js.map +1 -0
- package/dist/engine/code_reviewer.d.ts +6 -0
- package/dist/engine/code_reviewer.d.ts.map +1 -1
- package/dist/engine/code_reviewer.js +73 -3
- package/dist/engine/code_reviewer.js.map +1 -1
- package/dist/engine/evolver.d.ts +9 -0
- package/dist/engine/evolver.d.ts.map +1 -1
- package/dist/engine/evolver.js +47 -1
- package/dist/engine/evolver.js.map +1 -1
- package/dist/engine/exploration.d.ts +13 -0
- package/dist/engine/exploration.d.ts.map +1 -1
- package/dist/engine/exploration.js +59 -1
- package/dist/engine/exploration.js.map +1 -1
- package/dist/engine/intent_expander.d.ts.map +1 -1
- package/dist/engine/intent_expander.js +10 -5
- package/dist/engine/intent_expander.js.map +1 -1
- package/dist/engine/io_controller.d.ts +87 -0
- package/dist/engine/io_controller.d.ts.map +1 -0
- package/dist/engine/io_controller.js +190 -0
- package/dist/engine/io_controller.js.map +1 -0
- package/dist/engine/knowledge_config_loader.d.ts +28 -0
- package/dist/engine/knowledge_config_loader.d.ts.map +1 -0
- package/dist/engine/knowledge_config_loader.js +72 -0
- package/dist/engine/knowledge_config_loader.js.map +1 -0
- package/dist/engine/knowledge_manager.d.ts.map +1 -1
- package/dist/engine/knowledge_manager.js +11 -1
- package/dist/engine/knowledge_manager.js.map +1 -1
- package/dist/engine/llm_gateway.d.ts +96 -0
- package/dist/engine/llm_gateway.d.ts.map +1 -0
- package/dist/engine/llm_gateway.js +220 -0
- package/dist/engine/llm_gateway.js.map +1 -0
- package/dist/engine/test_quality.d.ts +15 -1
- package/dist/engine/test_quality.d.ts.map +1 -1
- package/dist/engine/test_quality.js +235 -23
- package/dist/engine/test_quality.js.map +1 -1
- package/dist/engine/workspace_resumer.d.ts +37 -0
- package/dist/engine/workspace_resumer.d.ts.map +1 -0
- package/dist/engine/workspace_resumer.js +82 -0
- package/dist/engine/workspace_resumer.js.map +1 -0
- package/dist/knowledge/writer.d.ts +2 -0
- package/dist/knowledge/writer.d.ts.map +1 -1
- package/dist/knowledge/writer.js +12 -4
- package/dist/knowledge/writer.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/templates/knowledge/checklists/session_recovery.md +37 -0
- package/templates/knowledge/patterns/core/authority.md +38 -0
- package/templates/knowledge/patterns/core/concurrency_lock.md +36 -0
- package/templates/knowledge/patterns/core/decision_gateway.md +33 -0
- package/templates/knowledge/patterns/core/developer_constitution.md +39 -0
- package/templates/knowledge/patterns/core/mutation_audit.md +30 -0
- package/templates/knowledge/patterns/core/streaming_protocol.md +36 -0
- package/templates/knowledge/templates/review_summary.md +46 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { loadKnowledgeConfig, extractNumberRule, extractListRule } from "./knowledge_config_loader.js";
|
|
1
2
|
/**
|
|
2
3
|
* 测试质量分析器 — 对测试文件进行纯规则维度的质量评估,包含断言密度、边界覆盖、
|
|
3
4
|
* 命名规范性、断言重复和场景覆盖五个检查维度。零 AI 依赖。
|
|
@@ -11,7 +12,7 @@
|
|
|
11
12
|
* @param sourceContent - 可选的被测源码内容(用于变异测试)
|
|
12
13
|
* @returns 测试质量报告,包含总分(0-100)、各项检查结果和改进建议列表
|
|
13
14
|
*/
|
|
14
|
-
export function analyzeTestQuality(testContent, filename, sourceContent) {
|
|
15
|
+
export function analyzeTestQuality(testContent, filename, sourceContent, coverageMap, sourceFilePath) {
|
|
15
16
|
const checks = [];
|
|
16
17
|
const suggestions = [];
|
|
17
18
|
// ── 1. assertion_density ──
|
|
@@ -41,9 +42,9 @@ export function analyzeTestQuality(testContent, filename, sourceContent) {
|
|
|
41
42
|
// ── 5. scenario_coverage ──
|
|
42
43
|
const scenarioCheck = checkScenarioCoverage();
|
|
43
44
|
checks.push(scenarioCheck);
|
|
44
|
-
// ── 6. mutation_audit (机制 4: 变异测试防造假) ──
|
|
45
|
+
// ── 6. mutation_audit (机制 4: 变异测试防造假 + 覆盖率联动) ──
|
|
45
46
|
if (sourceContent) {
|
|
46
|
-
const mutationCheck =
|
|
47
|
+
const mutationCheck = checkMutationResistanceWithCoverage(testContent, sourceContent, coverageMap, sourceFilePath);
|
|
47
48
|
checks.push(mutationCheck);
|
|
48
49
|
if (!mutationCheck.passed) {
|
|
49
50
|
suggestions.push("测试可能存在'自己证明自己'问题:变异后断言仍能通过。建议增加反向用例和精确断言");
|
|
@@ -288,6 +289,19 @@ function checkScenarioCoverage() {
|
|
|
288
289
|
detail: "需结合知识模板验收项进行交叉检查",
|
|
289
290
|
};
|
|
290
291
|
}
|
|
292
|
+
// ── 机制 4: 变异测试防造假(知识库驱动) ──
|
|
293
|
+
/** 从知识库 mutation_audit.md 读取变异审计配置 */
|
|
294
|
+
function loadMutationConfig() {
|
|
295
|
+
const config = loadKnowledgeConfig("patterns/core/mutation_audit.md");
|
|
296
|
+
const body = config?.body ?? "";
|
|
297
|
+
return {
|
|
298
|
+
precision_threshold: extractNumberRule(body, "Precision_Threshold") ?? 0.5,
|
|
299
|
+
max_sample_lines: 8,
|
|
300
|
+
whitelist_keywords: extractListRule(body, "变异白名单") ?? ["if", "else", "switch", "===", "!=="],
|
|
301
|
+
blacklist_keywords: extractListRule(body, "变异黑名单") ?? ["console.log", "import", "export", "debugger"],
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
const MUTATION_CONFIG = loadMutationConfig();
|
|
291
305
|
/** 预定义变异操作集 */
|
|
292
306
|
const MUTATION_OPERATORS = [
|
|
293
307
|
{
|
|
@@ -341,32 +355,85 @@ const MUTATION_OPERATORS = [
|
|
|
341
355
|
},
|
|
342
356
|
},
|
|
343
357
|
];
|
|
358
|
+
// ── 变异白名单: AST 级别节点过滤 ──
|
|
359
|
+
/**
|
|
360
|
+
* 判断一行代码是否属于可变异的白名单节点。
|
|
361
|
+
* 白名单: 条件分支(if/else/switch)、比较/逻辑操作符、return 语句、算术表达式。
|
|
362
|
+
* 黑名单: console.log、注释、import/export、纯字符串/变量名赋值、类型声明。
|
|
363
|
+
*/
|
|
364
|
+
function isMutationCandidate(line) {
|
|
365
|
+
const trimmed = line.trim();
|
|
366
|
+
// 黑名单: 跳过注释
|
|
367
|
+
if (trimmed.startsWith("//") || trimmed.startsWith("*") || trimmed.startsWith("/*"))
|
|
368
|
+
return false;
|
|
369
|
+
// 黑名单: 跳过 import/export 声明
|
|
370
|
+
if (/^(import |export |from )/.test(trimmed))
|
|
371
|
+
return false;
|
|
372
|
+
// 黑名单: 跳过 console.log / console.warn / console.error 等无副作用日志
|
|
373
|
+
if (/console\.(log|warn|error|info|debug)\s*\(/.test(trimmed))
|
|
374
|
+
return false;
|
|
375
|
+
// 黑名单: 跳过纯类型声明(TypeScript interface/type/enum)
|
|
376
|
+
if (/^(interface |type |enum |declare )/.test(trimmed))
|
|
377
|
+
return false;
|
|
378
|
+
// 黑名单: 跳过纯字符串字面量行(无逻辑)
|
|
379
|
+
if (/^['"\`]/.test(trimmed) && trimmed.endsWith(';'))
|
|
380
|
+
return false;
|
|
381
|
+
// 黑名单: 跳过 debugger / breakpoint
|
|
382
|
+
if (/^debugger/.test(trimmed))
|
|
383
|
+
return false;
|
|
384
|
+
// 白名单: 条件分支 (if / else if / switch / case / ternary)
|
|
385
|
+
if (/\b(if|else|switch|case)\b/.test(trimmed) && /[(){}?]/.test(trimmed))
|
|
386
|
+
return true;
|
|
387
|
+
// 白名单: 比较操作符
|
|
388
|
+
if (/(===|!==|==|!=|>=|<=|>|<)/.test(trimmed))
|
|
389
|
+
return true;
|
|
390
|
+
// 白名单: 逻辑操作符 (&& ||)
|
|
391
|
+
if (/(&&|\|\|)/.test(trimmed))
|
|
392
|
+
return true;
|
|
393
|
+
// 白名单: return 语句(非 return void)
|
|
394
|
+
if (/\breturn\b/.test(trimmed) && !/return\s*;\s*$/.test(trimmed))
|
|
395
|
+
return true;
|
|
396
|
+
// 白名单: 布尔字面量在表达式中
|
|
397
|
+
if (/\b(true|false)\b/.test(trimmed) && /[=(){}?]/.test(trimmed))
|
|
398
|
+
return true;
|
|
399
|
+
// 白名单: 算术表达式在赋值/返回中
|
|
400
|
+
if (/[+\-*/%]/.test(trimmed) && /[=()]/.test(trimmed))
|
|
401
|
+
return true;
|
|
402
|
+
return false;
|
|
403
|
+
}
|
|
344
404
|
/**
|
|
345
405
|
* 变异测试防造假 — 通过对源码模拟变异,检查测试的断言是否精确到能检测变异。
|
|
346
|
-
* 策略:
|
|
406
|
+
* 策略: 从源码中提取白名单关键逻辑行(AST 级别过滤),执行变异,
|
|
407
|
+
* 检查测试中是否有断言针对这些逻辑的精确值。
|
|
347
408
|
* 若测试只含模糊断言(如 toBeTruthy),判定为可能存在"自己证明自己"问题。
|
|
348
409
|
*/
|
|
410
|
+
/** 伪随机数生成器 (基于种子,确保可复现且不由 AI 控制) */
|
|
411
|
+
function seededRandom(seed) {
|
|
412
|
+
let s = seed;
|
|
413
|
+
return () => {
|
|
414
|
+
s = (s * 1103515245 + 12345) & 0x7fffffff;
|
|
415
|
+
return s / 0x7fffffff;
|
|
416
|
+
};
|
|
417
|
+
}
|
|
349
418
|
function checkMutationResistance(testContent, sourceContent) {
|
|
350
|
-
//
|
|
351
|
-
const
|
|
352
|
-
|
|
353
|
-
return trimmed.length > 0
|
|
354
|
-
&& !trimmed.startsWith("//")
|
|
355
|
-
&& !trimmed.startsWith("import ")
|
|
356
|
-
&& !trimmed.startsWith("export ")
|
|
357
|
-
&& (/===|!==|>=|<=|>|<|return|true|false/.test(trimmed));
|
|
358
|
-
});
|
|
359
|
-
if (keyLines.length === 0) {
|
|
419
|
+
// 提取白名单关键逻辑行(AST 级别过滤,跳过 console.log 等无副作用代码)
|
|
420
|
+
const allKeyLines = sourceContent.split("\n").filter(isMutationCandidate);
|
|
421
|
+
if (allKeyLines.length === 0) {
|
|
360
422
|
return {
|
|
361
423
|
dimension: "scenario_coverage",
|
|
362
424
|
passed: true,
|
|
363
425
|
detail: "无可变异的关键逻辑行,跳过变异测试",
|
|
364
426
|
};
|
|
365
427
|
}
|
|
428
|
+
// 强制随机抽取: 使用源码哈希作为种子,确保可复现但不由 AI 选择位置
|
|
429
|
+
// 从所有关键行中随机抽取 min(行数, 8) 行进行变异,防止 AI 避开弱点行
|
|
430
|
+
const seed = sourceContent.split("").reduce((acc, ch) => acc + ch.charCodeAt(0), 0);
|
|
431
|
+
const rng = seededRandom(seed);
|
|
432
|
+
const sampleSize = Math.min(allKeyLines.length, 8);
|
|
433
|
+
const keyLines = seededSample(allKeyLines, sampleSize, rng);
|
|
366
434
|
// 检查测试中的断言精确度
|
|
367
435
|
const preciseAssertions = testContent.match(/\bexpect\s*\([^)]*\)\s*\.\s*(toBe|toEqual|toStrictEqual|toBeLessThan|toBeGreaterThan|toThrow|toThrowError)/g) ?? [];
|
|
368
436
|
const looseAssertions = testContent.match(/\bexpect\s*\([^)]*\)\s*\.\s*(toBeTruthy|toBeFalsy|toBeDefined|toBeUndefined|toBeDefined)/g) ?? [];
|
|
369
|
-
// 变异可检测性评估: 精确断言/总断言 比率
|
|
370
437
|
const totalAssertions = preciseAssertions.length + looseAssertions.length;
|
|
371
438
|
if (totalAssertions === 0) {
|
|
372
439
|
return {
|
|
@@ -376,38 +443,183 @@ function checkMutationResistance(testContent, sourceContent) {
|
|
|
376
443
|
};
|
|
377
444
|
}
|
|
378
445
|
const precisionRatio = preciseAssertions.length / totalAssertions;
|
|
379
|
-
//
|
|
446
|
+
// 对随机抽取的行执行变异操作,检查是否有对应检测能力
|
|
380
447
|
let mutationsApplied = 0;
|
|
381
448
|
let mutationsUndetected = 0;
|
|
382
|
-
for (const keyLine of keyLines
|
|
383
|
-
|
|
449
|
+
for (const keyLine of keyLines) {
|
|
450
|
+
// 每行随机选一个能产生有效变异的操作符(防止 AI 预测哪个操作符会被选中)
|
|
451
|
+
const shuffledOps = seededSample([...MUTATION_OPERATORS], MUTATION_OPERATORS.length, rng);
|
|
452
|
+
for (const mut of shuffledOps) {
|
|
384
453
|
const mutated = mut.mutate(keyLine);
|
|
385
454
|
if (mutated !== keyLine) {
|
|
386
455
|
mutationsApplied++;
|
|
387
|
-
// 简化检测: 如果测试中存在针对被变异值的精确断言,认为可检测
|
|
388
456
|
const mutatedValues = mutated.match(/(!==|===|<=|>=|>|<|\b\d+\b|true|false)/g) ?? [];
|
|
389
457
|
const hasDetection = mutatedValues.some((v) => testContent.includes(v));
|
|
390
458
|
if (!hasDetection) {
|
|
391
459
|
mutationsUndetected++;
|
|
392
460
|
}
|
|
461
|
+
// 每行最多应用 1 个变异操作符(随机化后无需覆盖全部)
|
|
462
|
+
break;
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
const passThreshold = MUTATION_CONFIG.precision_threshold;
|
|
467
|
+
const precisionOk = precisionRatio >= passThreshold;
|
|
468
|
+
const detectionOk = mutationsApplied === 0 || (mutationsUndetected / mutationsApplied) < passThreshold;
|
|
469
|
+
if (precisionOk && detectionOk) {
|
|
470
|
+
return {
|
|
471
|
+
dimension: "scenario_coverage",
|
|
472
|
+
passed: true,
|
|
473
|
+
detail: `变异测试通过(随机抽样 ${keyLines.length} 行)— 精确断言率 ${(precisionRatio * 100).toFixed(0)}%,${mutationsApplied} 次变异中 ${mutationsApplied - mutationsUndetected} 次可检测`,
|
|
474
|
+
};
|
|
475
|
+
}
|
|
476
|
+
return {
|
|
477
|
+
dimension: "scenario_coverage",
|
|
478
|
+
passed: false,
|
|
479
|
+
detail: `变异测试未通过(随机抽样 ${keyLines.length} 行)— 精确断言率 ${(precisionRatio * 100).toFixed(0)}%(阈值 50%),${mutationsApplied} 次变异中 ${mutationsUndetected} 次不可检测。测试可能存在"自己证明自己"问题`,
|
|
480
|
+
};
|
|
481
|
+
}
|
|
482
|
+
/** 基于 RNG 的随机抽样(Fisher-Yates 部分洗牌)*/
|
|
483
|
+
function seededSample(arr, count, rng) {
|
|
484
|
+
const result = [...arr];
|
|
485
|
+
const n = Math.min(count, result.length);
|
|
486
|
+
for (let i = 0; i < n; i++) {
|
|
487
|
+
const j = i + Math.floor(rng() * (result.length - i));
|
|
488
|
+
[result[i], result[j]] = [result[j], result[i]];
|
|
489
|
+
}
|
|
490
|
+
return result.slice(0, n);
|
|
491
|
+
}
|
|
492
|
+
/**
|
|
493
|
+
* 解析 lcov.info 报告,提取每个文件的已覆盖行号。
|
|
494
|
+
* lcov 格式:
|
|
495
|
+
* SF:path/to/file.ts
|
|
496
|
+
* DA:10,1
|
|
497
|
+
* DA:25,0
|
|
498
|
+
* end_of_record
|
|
499
|
+
* DA 行中第二个字段 > 0 表示该行被执行过(已覆盖)。
|
|
500
|
+
* @param lcovContent - lcov.info 文件内容
|
|
501
|
+
* @returns 覆盖率映射(文件路径 → 已覆盖行号集合)
|
|
502
|
+
*/
|
|
503
|
+
export function parseLcov(lcovContent) {
|
|
504
|
+
const map = new Map();
|
|
505
|
+
let currentFile = "";
|
|
506
|
+
for (const line of lcovContent.split("\n")) {
|
|
507
|
+
const sfMatch = line.match(/^SF:(.+)$/);
|
|
508
|
+
if (sfMatch) {
|
|
509
|
+
currentFile = sfMatch[1];
|
|
510
|
+
continue;
|
|
511
|
+
}
|
|
512
|
+
const daMatch = line.match(/^DA:(\d+),(\d+)/);
|
|
513
|
+
if (daMatch && currentFile) {
|
|
514
|
+
const lineNum = parseInt(daMatch[1], 10);
|
|
515
|
+
const hitCount = parseInt(daMatch[2], 10);
|
|
516
|
+
if (hitCount > 0) {
|
|
517
|
+
if (!map.has(currentFile))
|
|
518
|
+
map.set(currentFile, new Set());
|
|
519
|
+
map.get(currentFile).add(lineNum);
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
if (line === "end_of_record") {
|
|
523
|
+
currentFile = "";
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
return map;
|
|
527
|
+
}
|
|
528
|
+
/**
|
|
529
|
+
* 带覆盖率联动的变异测试 — 只变异被测试覆盖的代码行。
|
|
530
|
+
* 若变异了未覆盖行,该变异无法被测试检测到,审计结果无效。
|
|
531
|
+
* @param testContent - 测试文件内容
|
|
532
|
+
* @param sourceContent - 被测源码内容
|
|
533
|
+
* @param coverageMap - 可选的覆盖率映射(文件 → 已覆盖行号),无则退化为全行变异
|
|
534
|
+
* @param sourceFilePath - 源码文件路径,用于在 coverageMap 中查找覆盖行
|
|
535
|
+
*/
|
|
536
|
+
function checkMutationResistanceWithCoverage(testContent, sourceContent, coverageMap, sourceFilePath) {
|
|
537
|
+
const sourceLines = sourceContent.split("\n");
|
|
538
|
+
const coveredLineNumbers = (sourceFilePath && coverageMap) ? coverageMap.get(sourceFilePath) : undefined;
|
|
539
|
+
// 提取白名单关键逻辑行,并记录行号
|
|
540
|
+
const candidates = [];
|
|
541
|
+
for (let i = 0; i < sourceLines.length; i++) {
|
|
542
|
+
if (isMutationCandidate(sourceLines[i])) {
|
|
543
|
+
candidates.push({ line: sourceLines[i], lineNum: i + 1 });
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
if (candidates.length === 0) {
|
|
547
|
+
return {
|
|
548
|
+
dimension: "scenario_coverage",
|
|
549
|
+
passed: true,
|
|
550
|
+
detail: "无可变异的关键逻辑行,跳过变异测试",
|
|
551
|
+
};
|
|
552
|
+
}
|
|
553
|
+
// 覆盖率过滤: 只保留被测试覆盖的行
|
|
554
|
+
let filteredCandidates = candidates;
|
|
555
|
+
const hasCoverageData = coverageMap !== undefined && sourceFilePath !== undefined;
|
|
556
|
+
if (hasCoverageData) {
|
|
557
|
+
const covered = coveredLineNumbers ?? new Set();
|
|
558
|
+
const beforeCount = candidates.length;
|
|
559
|
+
if (covered.size === 0) {
|
|
560
|
+
return {
|
|
561
|
+
dimension: "scenario_coverage",
|
|
562
|
+
passed: false,
|
|
563
|
+
detail: `变异审计无效: ${beforeCount} 个可变异行均未被测试覆盖(覆盖率联动)`,
|
|
564
|
+
};
|
|
565
|
+
}
|
|
566
|
+
filteredCandidates = candidates.filter((c) => covered.has(c.lineNum));
|
|
567
|
+
if (filteredCandidates.length === 0) {
|
|
568
|
+
return {
|
|
569
|
+
dimension: "scenario_coverage",
|
|
570
|
+
passed: false,
|
|
571
|
+
detail: `变异审计无效: ${beforeCount} 个可变异行均未被测试覆盖(覆盖率联动)`,
|
|
572
|
+
};
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
// 随机抽样
|
|
576
|
+
const seed = sourceContent.split("").reduce((acc, ch) => acc + ch.charCodeAt(0), 0);
|
|
577
|
+
const rng = seededRandom(seed);
|
|
578
|
+
const sampleSize = Math.min(filteredCandidates.length, 8);
|
|
579
|
+
const keyLines = seededSample(filteredCandidates, sampleSize, rng);
|
|
580
|
+
// 断言精确度检查 — 使用宽松正则以支持嵌套括号如 expect(fn(a, b))
|
|
581
|
+
const preciseAssertions = testContent.match(/\bexpect\b.*?\.(toBe|toEqual|toStrictEqual|toBeLessThan|toBeGreaterThan|toThrow|toThrowError)\s*\(/g) ?? [];
|
|
582
|
+
const looseAssertions = testContent.match(/\bexpect\b.*?\.(toBeTruthy|toBeFalsy|toBeDefined|toBeUndefined)\s*\(/g) ?? [];
|
|
583
|
+
const totalAssertions = preciseAssertions.length + looseAssertions.length;
|
|
584
|
+
if (totalAssertions === 0) {
|
|
585
|
+
return {
|
|
586
|
+
dimension: "scenario_coverage",
|
|
587
|
+
passed: false,
|
|
588
|
+
detail: "无断言,无法检测源码变异(变异测试防造假失败)",
|
|
589
|
+
};
|
|
590
|
+
}
|
|
591
|
+
const precisionRatio = preciseAssertions.length / totalAssertions;
|
|
592
|
+
let mutationsApplied = 0;
|
|
593
|
+
let mutationsUndetected = 0;
|
|
594
|
+
for (const item of keyLines) {
|
|
595
|
+
const shuffledOps = seededSample([...MUTATION_OPERATORS], MUTATION_OPERATORS.length, rng);
|
|
596
|
+
for (const mut of shuffledOps) {
|
|
597
|
+
const mutated = mut.mutate(item.line);
|
|
598
|
+
if (mutated !== item.line) {
|
|
599
|
+
mutationsApplied++;
|
|
600
|
+
const mutatedValues = mutated.match(/(!==|===|<=|>=|>|<|\b\d+\b|true|false)/g) ?? [];
|
|
601
|
+
const hasDetection = mutatedValues.some((v) => testContent.includes(v));
|
|
602
|
+
if (!hasDetection)
|
|
603
|
+
mutationsUndetected++;
|
|
604
|
+
break;
|
|
393
605
|
}
|
|
394
606
|
}
|
|
395
607
|
}
|
|
396
|
-
|
|
397
|
-
const passThreshold = 0.5;
|
|
608
|
+
const passThreshold = MUTATION_CONFIG.precision_threshold;
|
|
398
609
|
const precisionOk = precisionRatio >= passThreshold;
|
|
399
610
|
const detectionOk = mutationsApplied === 0 || (mutationsUndetected / mutationsApplied) < passThreshold;
|
|
611
|
+
const coverageNote = hasCoverageData ? `(覆盖率联动: ${filteredCandidates.length}/${candidates.length} 可变异行已被覆盖)` : "";
|
|
400
612
|
if (precisionOk && detectionOk) {
|
|
401
613
|
return {
|
|
402
614
|
dimension: "scenario_coverage",
|
|
403
615
|
passed: true,
|
|
404
|
-
detail:
|
|
616
|
+
detail: `变异测试通过(随机抽样 ${keyLines.length} 行${coverageNote})— 精确断言率 ${(precisionRatio * 100).toFixed(0)}%,${mutationsApplied} 次变异中 ${mutationsApplied - mutationsUndetected} 次可检测`,
|
|
405
617
|
};
|
|
406
618
|
}
|
|
407
619
|
return {
|
|
408
620
|
dimension: "scenario_coverage",
|
|
409
621
|
passed: false,
|
|
410
|
-
detail:
|
|
622
|
+
detail: `变异测试未通过(随机抽样 ${keyLines.length} 行${coverageNote})— 精确断言率 ${(precisionRatio * 100).toFixed(0)}%(阈值 50%),${mutationsApplied} 次变异中 ${mutationsUndetected} 次不可检测。测试可能存在"自己证明自己"问题`,
|
|
411
623
|
};
|
|
412
624
|
}
|
|
413
625
|
//# sourceMappingURL=test_quality.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test_quality.js","sourceRoot":"","sources":["../../src/engine/test_quality.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"test_quality.js","sourceRoot":"","sources":["../../src/engine/test_quality.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { TaskContextManager } from "./task_context.js";
|
|
2
|
+
/**
|
|
3
|
+
* 工作区状态唤醒 — 解决前端对话窗口刷新导致 UUID 内存丢失的问题。
|
|
4
|
+
*
|
|
5
|
+
* 核心能力:
|
|
6
|
+
* 1. 扫描 .soloforge/state/ 目录,找到最后处于 In Progress 的工单
|
|
7
|
+
* 2. 反序列化工单上下文,重新加载到内存
|
|
8
|
+
* 3. 向用户播报当前进度,实现上下文断点续传
|
|
9
|
+
*
|
|
10
|
+
* 强制前置: 系统启动或建立新会话时必须调用 scanAndResume()
|
|
11
|
+
*/
|
|
12
|
+
/** 唤醒结果 */
|
|
13
|
+
export interface ResumeResult {
|
|
14
|
+
/** 是否发现可恢复的工单 */
|
|
15
|
+
resumed: boolean;
|
|
16
|
+
/** 恢复的工单信息 */
|
|
17
|
+
task?: {
|
|
18
|
+
task_id: string;
|
|
19
|
+
intent: string;
|
|
20
|
+
status: string;
|
|
21
|
+
created_at: string;
|
|
22
|
+
phase_hint: string;
|
|
23
|
+
};
|
|
24
|
+
/** 播报消息(向用户展示) */
|
|
25
|
+
broadcast: string;
|
|
26
|
+
/** state 目录中的工单总数 */
|
|
27
|
+
total_tasks: number;
|
|
28
|
+
/** 处于活跃状态的工单数 */
|
|
29
|
+
active_tasks: number;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* 扫描工作区状态目录,恢复最后活跃的工单。
|
|
33
|
+
* @param taskContext - 任务上下文管理器
|
|
34
|
+
* @returns 唤醒结果
|
|
35
|
+
*/
|
|
36
|
+
export declare function scanAndResume(taskContext: TaskContextManager): Promise<ResumeResult>;
|
|
37
|
+
//# sourceMappingURL=workspace_resumer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace_resumer.d.ts","sourceRoot":"","sources":["../../src/engine/workspace_resumer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG5D;;;;;;;;;GASG;AAEH,WAAW;AACX,MAAM,WAAW,YAAY;IAC3B,iBAAiB;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc;IACd,IAAI,CAAC,EAAE;QACL,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,kBAAkB;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAYD;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,kBAAkB,GAC9B,OAAO,CAAC,YAAY,CAAC,CA2EvB"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
/** 活跃状态集合 */
|
|
4
|
+
const ACTIVE_STATUSES = [
|
|
5
|
+
"expanding",
|
|
6
|
+
"executing",
|
|
7
|
+
"verifying",
|
|
8
|
+
"retrying",
|
|
9
|
+
"learning",
|
|
10
|
+
"reworking",
|
|
11
|
+
];
|
|
12
|
+
/**
|
|
13
|
+
* 扫描工作区状态目录,恢复最后活跃的工单。
|
|
14
|
+
* @param taskContext - 任务上下文管理器
|
|
15
|
+
* @returns 唤醒结果
|
|
16
|
+
*/
|
|
17
|
+
export async function scanAndResume(taskContext) {
|
|
18
|
+
const recent = await taskContext.listRecent(100);
|
|
19
|
+
const activeTasks = recent.filter((t) => ACTIVE_STATUSES.includes(t.status));
|
|
20
|
+
if (activeTasks.length === 0) {
|
|
21
|
+
return {
|
|
22
|
+
resumed: false,
|
|
23
|
+
broadcast: "工作区干净,无中断工单。可以开始新任务",
|
|
24
|
+
total_tasks: recent.length,
|
|
25
|
+
active_tasks: 0,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
// 找到最近创建的活跃工单
|
|
29
|
+
const latestActive = activeTasks[0];
|
|
30
|
+
const ctx = await taskContext.load(latestActive.task_id);
|
|
31
|
+
if (!ctx) {
|
|
32
|
+
return {
|
|
33
|
+
resumed: false,
|
|
34
|
+
broadcast: `发现 ${activeTasks.length} 个活跃工单,但无法加载 ${latestActive.task_id}`,
|
|
35
|
+
total_tasks: recent.length,
|
|
36
|
+
active_tasks: activeTasks.length,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
// 生成阶段提示
|
|
40
|
+
const phaseHint = taskContext.getResumeHint(ctx);
|
|
41
|
+
// 构造播报消息
|
|
42
|
+
const changedFiles = ctx.execution?.changed_files?.length ?? 0;
|
|
43
|
+
const attemptCount = ctx.execution?.attempt_count ?? 0;
|
|
44
|
+
let progressDetail = "";
|
|
45
|
+
if (ctx.classification) {
|
|
46
|
+
progressDetail += `任务类型: ${ctx.classification.task_type},风险: ${ctx.classification.risk},策略: ${ctx.classification.strategy}`;
|
|
47
|
+
}
|
|
48
|
+
if (changedFiles > 0) {
|
|
49
|
+
progressDetail += ` | 已修改 ${changedFiles} 个文件`;
|
|
50
|
+
}
|
|
51
|
+
if (attemptCount > 0) {
|
|
52
|
+
progressDetail += ` | 第 ${attemptCount} 次尝试`;
|
|
53
|
+
}
|
|
54
|
+
const broadcast = [
|
|
55
|
+
`⚡ 检测到 ${activeTasks.length} 个中断工单,已自动恢复最新的:`,
|
|
56
|
+
``,
|
|
57
|
+
`工单: ${ctx.intent}`,
|
|
58
|
+
`状态: ${ctx.status} → ${phaseHint}`,
|
|
59
|
+
`创建时间: ${ctx.created_at}`,
|
|
60
|
+
progressDetail ? `进度: ${progressDetail}` : "",
|
|
61
|
+
``,
|
|
62
|
+
`请继续执行上述操作,或输入 "sf_status action=cancel task_id=${ctx.task_id}" 取消此工单`,
|
|
63
|
+
].filter(Boolean).join("\n");
|
|
64
|
+
// 将此工单设为当前活跃
|
|
65
|
+
const stateDir = taskContext.getStateDir();
|
|
66
|
+
const pointerPath = path.join(stateDir, "current-task.json");
|
|
67
|
+
await fs.writeFile(pointerPath, JSON.stringify({ task_id: ctx.task_id }));
|
|
68
|
+
return {
|
|
69
|
+
resumed: true,
|
|
70
|
+
task: {
|
|
71
|
+
task_id: ctx.task_id,
|
|
72
|
+
intent: ctx.intent,
|
|
73
|
+
status: ctx.status,
|
|
74
|
+
created_at: ctx.created_at,
|
|
75
|
+
phase_hint: phaseHint,
|
|
76
|
+
},
|
|
77
|
+
broadcast,
|
|
78
|
+
total_tasks: recent.length,
|
|
79
|
+
active_tasks: activeTasks.length,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=workspace_resumer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace_resumer.js","sourceRoot":"","sources":["../../src/engine/workspace_resumer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/knowledge/writer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,qBAAa,eAAe;IAC1B,OAAO,CAAC,SAAS,CAAS;gBAEd,WAAW,EAAE,MAAM;IAKzB,aAAa,CACjB,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC;IA0BZ,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/knowledge/writer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,qBAAa,eAAe;IAC1B,OAAO,CAAC,SAAS,CAAS;gBAEd,WAAW,EAAE,MAAM;IAKzB,aAAa,CACjB,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC;IA0BZ,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA8B1E,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAuBhF,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUxD,OAAO,CAAC,YAAY;IAYpB,iCAAiC;IACjC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAG7C"}
|
package/dist/knowledge/writer.js
CHANGED
|
@@ -34,9 +34,13 @@ export class KnowledgeWriter {
|
|
|
34
34
|
async promoteToActive(stagedPath, knowledgeDir) {
|
|
35
35
|
const content = await fs.readFile(stagedPath, "utf-8");
|
|
36
36
|
const { data, content: body } = matter(content);
|
|
37
|
-
//
|
|
37
|
+
// 维度6: 知识目录隔离 — 禁止将 AI 进化产物写入 core/ 目录
|
|
38
38
|
const type = data.type || "pattern";
|
|
39
|
-
const
|
|
39
|
+
const targetSubdir = this.typeToSubdir(type);
|
|
40
|
+
if (targetSubdir.includes("/core") || targetSubdir.endsWith("/core")) {
|
|
41
|
+
throw new Error("知识隔离: 禁止将 AI 进化产物写入 core/ 只读目录。目标: " + targetSubdir);
|
|
42
|
+
}
|
|
43
|
+
const targetDir = path.join(knowledgeDir, targetSubdir);
|
|
40
44
|
fss.mkdirSync(targetDir, { recursive: true });
|
|
41
45
|
const filename = path.basename(stagedPath);
|
|
42
46
|
const targetPath = path.join(targetDir, filename);
|
|
@@ -86,13 +90,17 @@ export class KnowledgeWriter {
|
|
|
86
90
|
}
|
|
87
91
|
typeToSubdir(type) {
|
|
88
92
|
switch (type) {
|
|
89
|
-
case "pattern": return "patterns";
|
|
93
|
+
case "pattern": return "patterns/temp";
|
|
90
94
|
case "procedure": return "procedures";
|
|
91
95
|
case "domain": return "domain";
|
|
92
96
|
case "acceptance_template": return "acceptance_templates";
|
|
93
97
|
case "review_rule": return "review_rules";
|
|
94
|
-
default: return "patterns";
|
|
98
|
+
default: return "patterns/temp";
|
|
95
99
|
}
|
|
96
100
|
}
|
|
101
|
+
/** 维度6: 检查文件路径是否在 core/ 只读目录中 */
|
|
102
|
+
static isCorePath(filePath) {
|
|
103
|
+
return /patterns[\/]core[\/]/.test(filePath);
|
|
104
|
+
}
|
|
97
105
|
}
|
|
98
106
|
//# sourceMappingURL=writer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/knowledge/writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,GAAG,MAAM,SAAS,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,aAAa,CAAC;AAGjC,MAAM,OAAO,eAAe;IAClB,SAAS,CAAS;IAE1B,YAAY,WAAmB;QAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QAChE,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,KAAqB,EACrB,OAAe;QAEf,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;QAC5F,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAErD,MAAM,WAAW,GAAwB;YACvC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,MAAM,EAAE,QAAQ;YAChB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAClD,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAClD,WAAW,EAAE,CAAC;SACf,CAAC;QAEF,IAAI,KAAK,CAAC,UAAU;YAAE,WAAW,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QAEhE,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,GAAG,QAAQ,MAAM,CAAC;QAClC,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACnC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,UAAkB,EAAE,YAAoB;QAC5D,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAEhD,
|
|
1
|
+
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/knowledge/writer.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED