soloforge 1.4.5 → 1.4.7

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 (34) hide show
  1. package/README.md +41 -5
  2. package/dist/adapters/claude_code/tools.d.ts.map +1 -1
  3. package/dist/adapters/claude_code/tools.js +85 -3
  4. package/dist/adapters/claude_code/tools.js.map +1 -1
  5. package/dist/bin/soloforge.js +11 -1
  6. package/dist/bin/soloforge.js.map +1 -1
  7. package/dist/engine/design_artifact_pack.d.ts.map +1 -1
  8. package/dist/engine/design_artifact_pack.js +10 -0
  9. package/dist/engine/design_artifact_pack.js.map +1 -1
  10. package/dist/engine/design_lifecycle_contract.d.ts +1 -1
  11. package/dist/engine/design_lifecycle_contract.d.ts.map +1 -1
  12. package/dist/engine/design_lifecycle_contract.js +3 -1
  13. package/dist/engine/design_lifecycle_contract.js.map +1 -1
  14. package/dist/engine/extension_platform_contracts.d.ts +6 -0
  15. package/dist/engine/extension_platform_contracts.d.ts.map +1 -1
  16. package/dist/engine/extension_platform_contracts.js.map +1 -1
  17. package/dist/engine/next_action_planner.d.ts.map +1 -1
  18. package/dist/engine/next_action_planner.js +87 -18
  19. package/dist/engine/next_action_planner.js.map +1 -1
  20. package/dist/engine/project_knowledge_contract.d.ts.map +1 -1
  21. package/dist/engine/project_knowledge_contract.js +35 -16
  22. package/dist/engine/project_knowledge_contract.js.map +1 -1
  23. package/dist/engine/release_readiness_gate.d.ts.map +1 -1
  24. package/dist/engine/release_readiness_gate.js +15 -0
  25. package/dist/engine/release_readiness_gate.js.map +1 -1
  26. package/dist/engine/traceability.d.ts.map +1 -1
  27. package/dist/engine/traceability.js +8 -1
  28. package/dist/engine/traceability.js.map +1 -1
  29. package/dist/knowledge/conflict_detector.d.ts.map +1 -1
  30. package/dist/knowledge/conflict_detector.js +18 -16
  31. package/dist/knowledge/conflict_detector.js.map +1 -1
  32. package/dist/types.d.ts +12 -0
  33. package/dist/types.d.ts.map +1 -1
  34. package/package.json +1 -1
@@ -1076,6 +1076,7 @@ async function cmdValidate() {
1076
1076
  }
1077
1077
  // 使用共享函数验证配置优先级
1078
1078
  let hasHardFail = false;
1079
+ const hardFailSources = new Set();
1079
1080
  try {
1080
1081
  const { reports, entries } = await resolveCurrentProjectConfigReports(projectPath);
1081
1082
  const findings = validateConfigPrecedence(reports, entries);
@@ -1083,6 +1084,7 @@ async function cmdValidate() {
1083
1084
  const advisory = findings.filter(f => f.severity === "advisory");
1084
1085
  if (hardFails.length > 0) {
1085
1086
  hasHardFail = true;
1087
+ hardFailSources.add("配置优先级");
1086
1088
  userInfo(`❌ 配置优先级: ${hardFails.length} hard_fail`);
1087
1089
  for (const f of hardFails) {
1088
1090
  userInfo(` - [${f.rule}] ${f.field_path ?? "N/A"}: ${f.message}`);
@@ -1117,6 +1119,7 @@ async function cmdValidate() {
1117
1119
  userInfo(` - [${f.kind}] ${f.message_zh}`);
1118
1120
  }
1119
1121
  hasHardFail = true;
1122
+ hardFailSources.add("知识治理");
1120
1123
  }
1121
1124
  else {
1122
1125
  userInfo(`✅ 知识治理检查: ${kgReport.warning_count} warning, 0 hard_fail`);
@@ -1155,6 +1158,7 @@ async function cmdValidate() {
1155
1158
  }
1156
1159
  }
1157
1160
  hasHardFail = true;
1161
+ hardFailSources.add("项目知识承载");
1158
1162
  }
1159
1163
  else {
1160
1164
  userInfo(`✅ 项目知识承载: ${pkReport.total} 条,${pkReport.injectable} 条可注入,${pkReport.index_only} 条仅索引,0 hard_fail`);
@@ -1169,6 +1173,7 @@ async function cmdValidate() {
1169
1173
  for (const v of extResult.violations)
1170
1174
  userInfo(` - ${v}`);
1171
1175
  hasHardFail = true;
1176
+ hardFailSources.add("扩展清单");
1172
1177
  }
1173
1178
  else {
1174
1179
  userInfo(" ✓ 扩展清单校验通过");
@@ -1194,6 +1199,7 @@ async function cmdValidate() {
1194
1199
  if (platformReport.platform_compatibility_status === "blocked") {
1195
1200
  userInfo(` ✗ 平台兼容性阻断: ${platformReport.issues_found.join(", ")}`);
1196
1201
  hasHardFail = true;
1202
+ hardFailSources.add("平台兼容性");
1197
1203
  }
1198
1204
  else {
1199
1205
  userInfo(` ✓ 平台兼容性检查: ${platformReport.platform_compatibility_status}`);
@@ -1220,6 +1226,7 @@ async function cmdValidate() {
1220
1226
  for (const hf of hardFails)
1221
1227
  userInfo(` - ${hf.message_zh}`);
1222
1228
  hasHardFail = true;
1229
+ hardFailSources.add("README 命令漂移");
1223
1230
  }
1224
1231
  else if (warnings.length > 0) {
1225
1232
  userInfo(" ⚠ README 命令漂移警告:");
@@ -1291,6 +1298,7 @@ async function cmdValidate() {
1291
1298
  if (tsHardFail) {
1292
1299
  userError(`❌ 测试策略覆盖验证失败: ${tsChecked} 个已检查, ${tsPending} 个元数据缺失`);
1293
1300
  hasHardFail = true;
1301
+ hardFailSources.add("测试策略覆盖");
1294
1302
  }
1295
1303
  else {
1296
1304
  userInfo(`✅ 测试策略覆盖: 已检查 ${tsChecked} 个 enforced 契约`);
@@ -1299,6 +1307,7 @@ async function cmdValidate() {
1299
1307
  catch (e) {
1300
1308
  userError(`❌ 测试策略验证异常: ${e.message}`);
1301
1309
  hasHardFail = true;
1310
+ hardFailSources.add("测试策略覆盖");
1302
1311
  }
1303
1312
  } // 双层机制检查结束
1304
1313
  try {
@@ -1314,7 +1323,8 @@ async function cmdValidate() {
1314
1323
  userInfo(` ⚠ 导航摘要异常: ${e instanceof Error ? e.message : String(e)}`);
1315
1324
  }
1316
1325
  if (hasHardFail) {
1317
- userError("❌ validate 失败: 配置优先级存在 hard_fail");
1326
+ const sources = hardFailSources.size > 0 ? Array.from(hardFailSources).join("、") : "校验项";
1327
+ userError(`❌ validate 失败: ${sources} 存在 hard_fail`);
1318
1328
  process.exit(1);
1319
1329
  }
1320
1330
  }