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.
- package/README.md +41 -5
- package/dist/adapters/claude_code/tools.d.ts.map +1 -1
- package/dist/adapters/claude_code/tools.js +85 -3
- package/dist/adapters/claude_code/tools.js.map +1 -1
- package/dist/bin/soloforge.js +11 -1
- package/dist/bin/soloforge.js.map +1 -1
- package/dist/engine/design_artifact_pack.d.ts.map +1 -1
- package/dist/engine/design_artifact_pack.js +10 -0
- package/dist/engine/design_artifact_pack.js.map +1 -1
- package/dist/engine/design_lifecycle_contract.d.ts +1 -1
- package/dist/engine/design_lifecycle_contract.d.ts.map +1 -1
- package/dist/engine/design_lifecycle_contract.js +3 -1
- package/dist/engine/design_lifecycle_contract.js.map +1 -1
- package/dist/engine/extension_platform_contracts.d.ts +6 -0
- package/dist/engine/extension_platform_contracts.d.ts.map +1 -1
- package/dist/engine/extension_platform_contracts.js.map +1 -1
- package/dist/engine/next_action_planner.d.ts.map +1 -1
- package/dist/engine/next_action_planner.js +87 -18
- package/dist/engine/next_action_planner.js.map +1 -1
- package/dist/engine/project_knowledge_contract.d.ts.map +1 -1
- package/dist/engine/project_knowledge_contract.js +35 -16
- package/dist/engine/project_knowledge_contract.js.map +1 -1
- package/dist/engine/release_readiness_gate.d.ts.map +1 -1
- package/dist/engine/release_readiness_gate.js +15 -0
- package/dist/engine/release_readiness_gate.js.map +1 -1
- package/dist/engine/traceability.d.ts.map +1 -1
- package/dist/engine/traceability.js +8 -1
- package/dist/engine/traceability.js.map +1 -1
- package/dist/knowledge/conflict_detector.d.ts.map +1 -1
- package/dist/knowledge/conflict_detector.js +18 -16
- package/dist/knowledge/conflict_detector.js.map +1 -1
- package/dist/types.d.ts +12 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/bin/soloforge.js
CHANGED
|
@@ -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
|
-
|
|
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
|
}
|