soloforge 1.3.3 → 1.3.5
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 +19 -3
- package/dist/adapters/claude_code/server.js +1 -1
- package/dist/adapters/claude_code/server.js.map +1 -1
- package/dist/adapters/claude_code/tools.d.ts.map +1 -1
- package/dist/adapters/claude_code/tools.js +164 -44
- package/dist/adapters/claude_code/tools.js.map +1 -1
- package/dist/adapters/shared/workflow_template.js +2 -2
- package/dist/adapters/shared/workflow_template.js.map +1 -1
- package/dist/bin/soloforge.d.ts.map +1 -1
- package/dist/bin/soloforge.js +148 -1
- package/dist/bin/soloforge.js.map +1 -1
- package/dist/engine/asset_manifest.d.ts.map +1 -1
- package/dist/engine/asset_manifest.js +11 -0
- package/dist/engine/asset_manifest.js.map +1 -1
- package/dist/engine/backend_implementation_contract.d.ts +1 -1
- package/dist/engine/backend_implementation_contract.d.ts.map +1 -1
- package/dist/engine/backend_implementation_contract.js +22 -0
- package/dist/engine/backend_implementation_contract.js.map +1 -1
- package/dist/engine/brainstorm_contract.d.ts +1 -1
- package/dist/engine/brainstorm_contract.js +1 -1
- package/dist/engine/code_maintainability_observability_contract.d.ts +74 -0
- package/dist/engine/code_maintainability_observability_contract.d.ts.map +1 -0
- package/dist/engine/code_maintainability_observability_contract.js +711 -0
- package/dist/engine/code_maintainability_observability_contract.js.map +1 -0
- package/dist/engine/config_write_boundary.d.ts +29 -0
- package/dist/engine/config_write_boundary.d.ts.map +1 -0
- package/dist/engine/config_write_boundary.js +69 -0
- package/dist/engine/config_write_boundary.js.map +1 -0
- package/dist/engine/consumable_asset_registry.d.ts.map +1 -1
- package/dist/engine/consumable_asset_registry.js +49 -1
- package/dist/engine/consumable_asset_registry.js.map +1 -1
- package/dist/engine/contract_registry.js +1 -1
- package/dist/engine/diagnostic_registry.d.ts +13 -0
- package/dist/engine/diagnostic_registry.d.ts.map +1 -1
- package/dist/engine/diagnostic_registry.js +68 -0
- package/dist/engine/diagnostic_registry.js.map +1 -1
- package/dist/engine/dual_layer_mechanism_registry.d.ts.map +1 -1
- package/dist/engine/dual_layer_mechanism_registry.js +195 -2
- package/dist/engine/dual_layer_mechanism_registry.js.map +1 -1
- package/dist/engine/explicit_asset_registry.d.ts.map +1 -1
- package/dist/engine/explicit_asset_registry.js +134 -0
- package/dist/engine/explicit_asset_registry.js.map +1 -1
- package/dist/engine/extension_scenario_registry.js +4 -4
- package/dist/engine/extension_scenario_registry.js.map +1 -1
- package/dist/engine/foundation_scenario_runners.d.ts.map +1 -1
- package/dist/engine/foundation_scenario_runners.js +4 -2
- package/dist/engine/foundation_scenario_runners.js.map +1 -1
- package/dist/engine/historical_issue_mechanization_matrix.d.ts +28 -0
- package/dist/engine/historical_issue_mechanization_matrix.d.ts.map +1 -0
- package/dist/engine/historical_issue_mechanization_matrix.js +134 -0
- package/dist/engine/historical_issue_mechanization_matrix.js.map +1 -0
- package/dist/engine/implementation_roadmap_registry.d.ts.map +1 -1
- package/dist/engine/implementation_roadmap_registry.js +114 -13
- package/dist/engine/implementation_roadmap_registry.js.map +1 -1
- package/dist/engine/intent_expander.d.ts.map +1 -1
- package/dist/engine/intent_expander.js +151 -1
- package/dist/engine/intent_expander.js.map +1 -1
- package/dist/engine/knowledge_governance_gate.d.ts +38 -0
- package/dist/engine/knowledge_governance_gate.d.ts.map +1 -0
- package/dist/engine/knowledge_governance_gate.js +123 -0
- package/dist/engine/knowledge_governance_gate.js.map +1 -0
- package/dist/engine/log_governance.d.ts +25 -0
- package/dist/engine/log_governance.d.ts.map +1 -0
- package/dist/engine/log_governance.js +76 -0
- package/dist/engine/log_governance.js.map +1 -0
- package/dist/engine/mechanism_contract_registry.d.ts +1 -0
- package/dist/engine/mechanism_contract_registry.d.ts.map +1 -1
- package/dist/engine/mechanism_contract_registry.js +104 -0
- package/dist/engine/mechanism_contract_registry.js.map +1 -1
- package/dist/engine/mechanism_health_check.d.ts +23 -0
- package/dist/engine/mechanism_health_check.d.ts.map +1 -0
- package/dist/engine/mechanism_health_check.js +140 -0
- package/dist/engine/mechanism_health_check.js.map +1 -0
- package/dist/engine/next_action_planner.d.ts.map +1 -1
- package/dist/engine/next_action_planner.js +72 -4
- package/dist/engine/next_action_planner.js.map +1 -1
- package/dist/engine/observability.js +1 -1
- package/dist/engine/observability.js.map +1 -1
- package/dist/engine/project_knowledge_contract.d.ts +58 -0
- package/dist/engine/project_knowledge_contract.d.ts.map +1 -0
- package/dist/engine/project_knowledge_contract.js +298 -0
- package/dist/engine/project_knowledge_contract.js.map +1 -0
- package/dist/engine/project_knowledge_system_regression_matrix.d.ts +27 -0
- package/dist/engine/project_knowledge_system_regression_matrix.d.ts.map +1 -0
- package/dist/engine/project_knowledge_system_regression_matrix.js +295 -0
- package/dist/engine/project_knowledge_system_regression_matrix.js.map +1 -0
- package/dist/engine/release_issue_scenario_registry.d.ts.map +1 -1
- package/dist/engine/release_issue_scenario_registry.js +506 -95
- package/dist/engine/release_issue_scenario_registry.js.map +1 -1
- package/dist/engine/release_readiness_gate.d.ts +4 -0
- package/dist/engine/release_readiness_gate.d.ts.map +1 -1
- package/dist/engine/release_readiness_gate.js +643 -12
- package/dist/engine/release_readiness_gate.js.map +1 -1
- package/dist/engine/team_awareness.js +6 -6
- package/dist/engine/team_awareness.js.map +1 -1
- package/dist/engine/technology_decision.js +5 -5
- package/dist/engine/technology_decision.js.map +1 -1
- package/dist/engine/template_asset_contract_registry.d.ts.map +1 -1
- package/dist/engine/template_asset_contract_registry.js +6 -5
- package/dist/engine/template_asset_contract_registry.js.map +1 -1
- package/dist/engine/verifier.js +1 -1
- package/dist/engine/verifier.js.map +1 -1
- package/dist/engine/workflow_navigation_contract.d.ts +10 -0
- package/dist/engine/workflow_navigation_contract.d.ts.map +1 -1
- package/dist/knowledge/loader.d.ts +3 -1
- package/dist/knowledge/loader.d.ts.map +1 -1
- package/dist/knowledge/loader.js +2 -2
- package/dist/knowledge/loader.js.map +1 -1
- package/dist/types.d.ts +23 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/templates/knowledge/acceptance_templates//344/273/243/347/240/201/346/263/250/351/207/212/344/270/216/346/227/245/345/277/227/351/252/214/346/224/266/346/250/241/346/235/277.md +78 -0
- package/templates/knowledge/acceptance_templates//351/200/232/347/224/250/350/264/250/351/207/217/351/252/214/346/224/266/346/270/205/345/215/225.md +1 -1
- package/templates/knowledge/acceptance_templates//351/207/215/346/236/204/346/226/271/346/241/210/346/250/241/347/211/210.md +1 -1
- package/templates/knowledge/domain//346/224/257/344/273/230/350/247/204/345/210/231.md +1 -1
- package/templates/knowledge/procedures//346/225/260/346/215/256/345/272/223/350/277/201/347/247/273/346/265/201/347/250/213.md +1 -1
- package/templates/knowledge/procedures//351/203/250/347/275/262/345/217/221/345/270/203/346/265/201/347/250/213.md +1 -1
- package/templates/knowledge/procedures//351/207/215/346/236/204/346/265/201/346/260/264/347/272/277.md +1 -1
- package/templates/knowledge/review//344/273/243/347/240/201/345/217/257/347/273/264/346/212/244/346/200/247/344/270/216/345/217/257/350/247/202/346/265/213/346/200/247/345/256/241/346/237/245.md +81 -0
- package/templates/knowledge/review_rules//344/272/244/344/273/230/345/256/214/345/244/207/346/200/247/345/256/241/346/237/245/350/247/204/345/210/231.md +1 -1
- package/templates/knowledge/review_rules//350/264/250/351/207/217/345/256/241/346/237/245/350/247/204/345/210/231.md +3 -3
- package/templates/knowledge/rules//344/273/243/347/240/201/346/263/250/351/207/212/344/270/216/346/227/245/345/277/227/345/245/221/347/272/246/350/247/204/345/210/231.md +150 -0
- package/templates/knowledge/rules//346/225/217/346/204/237/344/277/241/346/201/257/346/227/245/345/277/227/350/247/204/345/210/231.md +69 -0
- package/templates/knowledge/rules//346/227/245/345/277/227/346/262/273/347/220/206/350/247/204/345/210/231.md +49 -0
- package/templates/knowledge/rules//346/234/272/345/210/266/350/207/252/346/262/273/347/220/206/350/247/204/345/210/231.md +48 -0
- package/templates/knowledge/rules//346/240/270/345/277/203/344/275/223/351/252/214/345/216/237/345/210/231.md +1 -1
- package/templates/knowledge/rules//346/240/270/345/277/203/345/267/245/347/250/213/346/211/247/350/241/214/345/216/237/345/210/231.md +2 -2
- package/templates/knowledge/rules//346/274/224/350/277/233/345/233/236/345/275/222/351/227/250/346/216/247/350/247/204/345/210/231.md +1 -1
- package/templates/knowledge/rules//347/237/245/350/257/206/346/262/273/347/220/206/350/247/204/345/210/231.md +50 -0
- package/templates/knowledge/rules//351/205/215/347/275/256/350/220/275/347/233/230/350/276/271/347/225/214/350/247/204/345/210/231.md +47 -0
- package/templates/patterns/Git/346/223/215/344/275/234/350/247/204/350/214/203.md +1 -1
- package/templates/scaffolds/react/Form.tsx.hbs +11 -3
- package/templates/scaffolds/react/List.tsx.hbs +11 -3
- package/templates/scaffolds/react/Page.tsx.hbs +1 -1
- package/templates/scaffolds/react/types.ts.hbs +4 -1
- package/templates/scaffolds/spring-boot/Controller.java.hbs +18 -4
- package/templates/scaffolds/spring-boot/DTO.java.hbs +4 -1
- package/templates/scaffolds/spring-boot/Entity.java.hbs +8 -3
- package/templates/scaffolds/spring-boot/Mapper.java.hbs +4 -1
- package/templates/scaffolds/spring-boot/ServiceImpl.java.hbs +34 -10
- package/templates/scaffolds/spring-boot/ServiceTest.java.hbs +0 -1
|
@@ -31,7 +31,7 @@ const WORKFLOW_STEPS = [
|
|
|
31
31
|
{ title: "### 步骤 1: 分类", rule_ids: ["wf-classify-first"] },
|
|
32
32
|
{ title: "### 步骤 1.5: 入口裁决", rule_ids: ["wf-routing-gate", "wf-strategy-no-route"] },
|
|
33
33
|
{ title: "### 步骤 1.6: 多阶段拆解", rule_ids: ["wf-multi-stage-loop"] },
|
|
34
|
-
{ title: "### 步骤 2: 执行", rule_ids: ["wf-dispatch-by-route", "wf-command-contract", "wf-tool-contract", "wf-architecture-workshop-first", "wf-design-artifact-pack", "wf-standard-asset-contract", "wf-template-asset-visibility"] },
|
|
34
|
+
{ title: "### 步骤 2: 执行", rule_ids: ["wf-dispatch-by-route", "wf-command-contract", "wf-tool-contract", "wf-architecture-workshop-first", "wf-design-artifact-pack", "wf-standard-asset-contract", "wf-template-asset-visibility", "wf-code-observability"] },
|
|
35
35
|
{ title: "### 步骤 2.5: 导航", rule_ids: ["wf-navigation-contract"] },
|
|
36
36
|
{ title: "### 步骤 3: 验证", rule_ids: ["wf-verify-after-change", "wf-evidence-grounding"] },
|
|
37
37
|
{ title: "### 步骤 4: 学习", rule_ids: ["wf-learn-after-verify"] },
|
|
@@ -109,7 +109,7 @@ export function validateWorkflowRuleSources(rootDir) {
|
|
|
109
109
|
};
|
|
110
110
|
}
|
|
111
111
|
/** 当前嵌入的权威规则校验和 — 由 `npm run update-workflow-checksum` 更新。 */
|
|
112
|
-
const EMBEDDED_CHECKSUM = "
|
|
112
|
+
const EMBEDDED_CHECKSUM = "557e7282efda3e13";
|
|
113
113
|
function getEmbeddedChecksum() {
|
|
114
114
|
return EMBEDDED_CHECKSUM;
|
|
115
115
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow_template.js","sourceRoot":"","sources":["../../../src/adapters/shared/workflow_template.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,yBAAyB,EAAE,MAAM,+CAA+C,CAAC;AAC1F,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAE9E,MAAM,eAAe,GAAG,oCAAoC,CAAC;AAE7D,gCAAgC;AAChC,SAAS,WAAW,CAAC,MAAc;IACjC,MAAM,IAAI,GAAG,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;IAC1E,IAAI,CAAC,IAAI;QAAE,OAAO,yBAAyB,MAAM,0BAA0B,CAAC;IAC5E,OAAO,yBAAyB,IAAI,CAAC,OAAO,cAAc,IAAI,CAAC,YAAY,gBAAgB,IAAI,CAAC,kBAAkB,aAAa,IAAI,CAAC,YAAY,OAAO,CAAC;AAC1J,CAAC;AAED,wCAAwC;AACxC,SAAS,UAAU,CAAC,MAAc;IAChC,MAAM,IAAI,GAAG,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;IAC1E,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,IAAI,EAAE,gBAAgB,IAAI,EAAE,CAAC;IAC1C,IAAI,IAAI;QAAE,OAAO,GAAG,GAAG,KAAK,IAAI,EAAE,CAAC;IACnC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,wCAAwC;AACxC,SAAS,WAAW,CAAC,OAAiB;IACpC,OAAO,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtD,CAAC;AAED,8BAA8B;AAC9B,MAAM,cAAc,GAAiD;IACnE,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,0BAA0B,EAAE,wBAAwB,EAAE,oBAAoB,CAAC,EAAE;IACrG,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,mBAAmB,CAAC,EAAE;IAC1D,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,EAAE;IACpF,EAAE,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,CAAC,qBAAqB,CAAC,EAAE;IACjE,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,sBAAsB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,gCAAgC,EAAE,yBAAyB,EAAE,4BAA4B,EAAE,8BAA8B,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"workflow_template.js","sourceRoot":"","sources":["../../../src/adapters/shared/workflow_template.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"soloforge.d.ts","sourceRoot":"","sources":["../../src/bin/soloforge.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"soloforge.d.ts","sourceRoot":"","sources":["../../src/bin/soloforge.ts"],"names":[],"mappings":";AA4zBA,OAAO,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC"}
|
package/dist/bin/soloforge.js
CHANGED
|
@@ -84,6 +84,9 @@ async function main() {
|
|
|
84
84
|
case "audit-template-visibility":
|
|
85
85
|
await cmdAuditTemplateVisibility();
|
|
86
86
|
break;
|
|
87
|
+
case "audit-project-knowledge":
|
|
88
|
+
await cmdAuditProjectKnowledge();
|
|
89
|
+
break;
|
|
87
90
|
case "sync-templates":
|
|
88
91
|
await cmdSyncTemplates();
|
|
89
92
|
break;
|
|
@@ -165,6 +168,7 @@ async function main() {
|
|
|
165
168
|
validate-mechanisms 验证双层机制承载模型完整性(模板层 + 机制层)
|
|
166
169
|
audit-template-mechanisms 扫描模板与机制注册表交叉校验(--json 输出完整报告,--changed-only 仅检查变更文件)
|
|
167
170
|
audit-design-artifacts 审计架构/数据库/API 设计产物包(只读,--json 输出报告)
|
|
171
|
+
audit-project-knowledge 审计用户项目 .soloforge/knowledge 自定义规则承载与消费
|
|
168
172
|
upgrade-design-artifacts 生成存量设计资产升级计划(默认 dry-run,--apply --confirm 仅建立已归档迁移基线)
|
|
169
173
|
validate-release 验证发布门禁(契约、场景矩阵、消费 trace、双层机制、回归基线)
|
|
170
174
|
validate-batch1 [历史] 仅基础契约验证,不代表正式发布通过
|
|
@@ -895,6 +899,27 @@ async function cmdValidate() {
|
|
|
895
899
|
for (const w of evidenceWarnings) {
|
|
896
900
|
userInfo(`⚠️ evidence: ${w}`);
|
|
897
901
|
}
|
|
902
|
+
// 知识治理统一入口:生命周期、语义、文档与语言策略的轻量主链路消费
|
|
903
|
+
try {
|
|
904
|
+
const { runKnowledgeGovernanceCheck } = await import("../engine/knowledge_governance_gate.js");
|
|
905
|
+
const kgReport = runKnowledgeGovernanceCheck({
|
|
906
|
+
project_language: "zh",
|
|
907
|
+
contents: [{ id: "cli-validate", domain: "user_feedback", content: "SoloForge 校验输出保持中文语义优先" }],
|
|
908
|
+
});
|
|
909
|
+
if (kgReport.hard_fail_count > 0) {
|
|
910
|
+
userInfo(`❌ 知识治理: ${kgReport.hard_fail_count} hard_fail`);
|
|
911
|
+
for (const f of kgReport.findings.filter((f) => f.severity === "hard_fail")) {
|
|
912
|
+
userInfo(` - [${f.kind}] ${f.message_zh}`);
|
|
913
|
+
}
|
|
914
|
+
hasHardFail = true;
|
|
915
|
+
}
|
|
916
|
+
else {
|
|
917
|
+
userInfo(`✅ 知识治理检查: ${kgReport.warning_count} warning, 0 hard_fail`);
|
|
918
|
+
}
|
|
919
|
+
}
|
|
920
|
+
catch (e) {
|
|
921
|
+
userInfo(` ⚠ 知识治理检查异常: ${e instanceof Error ? e.message : String(e)}`);
|
|
922
|
+
}
|
|
898
923
|
// 检查知识文件
|
|
899
924
|
const knowledgeDir = getProjectKnowledgeDir(config);
|
|
900
925
|
if (fss.existsSync(knowledgeDir)) {
|
|
@@ -915,6 +940,20 @@ async function cmdValidate() {
|
|
|
915
940
|
finally {
|
|
916
941
|
await index.close();
|
|
917
942
|
}
|
|
943
|
+
const { auditProjectKnowledge } = await import("../engine/project_knowledge_contract.js");
|
|
944
|
+
const pkReport = auditProjectKnowledge(projectPath, config);
|
|
945
|
+
if (pkReport.hard_fail_count > 0) {
|
|
946
|
+
userInfo(`❌ 项目知识承载: ${pkReport.hard_fail_count} hard_fail`);
|
|
947
|
+
for (const asset of pkReport.assets) {
|
|
948
|
+
for (const finding of asset.findings.filter((f) => f.severity === "hard_fail")) {
|
|
949
|
+
userInfo(` - ${asset.rel_path}: [${finding.code}] ${finding.message_zh}`);
|
|
950
|
+
}
|
|
951
|
+
}
|
|
952
|
+
hasHardFail = true;
|
|
953
|
+
}
|
|
954
|
+
else {
|
|
955
|
+
userInfo(`✅ 项目知识承载: ${pkReport.total} 条,${pkReport.injectable} 条可注入,${pkReport.index_only} 条仅索引,0 hard_fail`);
|
|
956
|
+
}
|
|
918
957
|
}
|
|
919
958
|
// 扩展清单校验 (problem-39: validateExtensionManifest)
|
|
920
959
|
try {
|
|
@@ -1146,6 +1185,22 @@ async function cmdValidateMechanisms() {
|
|
|
1146
1185
|
userError(`❌ 模板审计异常: ${e.message}`);
|
|
1147
1186
|
process.exit(1);
|
|
1148
1187
|
}
|
|
1188
|
+
try {
|
|
1189
|
+
const { runFullHealthCheck } = await import("../engine/mechanism_health_check.js");
|
|
1190
|
+
const health = runFullHealthCheck(projectPath);
|
|
1191
|
+
if (health.hard_fail_count > 0) {
|
|
1192
|
+
userInfo(`\n❌ 机制运行时健康度: ${health.hard_fail_count} hard_fail`);
|
|
1193
|
+
for (const f of health.findings.filter((f) => f.severity === "hard_fail")) {
|
|
1194
|
+
userInfo(` - [${f.kind}] ${f.target}: ${f.message_zh}`);
|
|
1195
|
+
}
|
|
1196
|
+
process.exit(1);
|
|
1197
|
+
}
|
|
1198
|
+
userInfo(`\n📊 机制运行时健康度: ${health.warning_count} warning, 0 hard_fail`);
|
|
1199
|
+
}
|
|
1200
|
+
catch (e) {
|
|
1201
|
+
userError(`❌ 机制运行时健康度检查异常: ${e.message}`);
|
|
1202
|
+
process.exit(1);
|
|
1203
|
+
}
|
|
1149
1204
|
}
|
|
1150
1205
|
catch (e) {
|
|
1151
1206
|
userError(`❌ validate-mechanisms 失败: ${e.message}`);
|
|
@@ -1490,6 +1545,19 @@ async function cmdSyncTemplates() {
|
|
|
1490
1545
|
const projectPath = process.cwd();
|
|
1491
1546
|
const packageRoot = path.resolve(import.meta.dirname, "..", "..");
|
|
1492
1547
|
const sourceDir = args.find((a) => a.startsWith("--source="))?.slice("--source=".length) ?? path.join(packageRoot, "templates");
|
|
1548
|
+
if (apply) {
|
|
1549
|
+
const { classifyConfigContext, validateWriteBoundary } = await import("../engine/config_write_boundary.js");
|
|
1550
|
+
const writeContext = classifyConfigContext(projectPath, { confirmed: confirm });
|
|
1551
|
+
const violations = validateWriteBoundary(writeContext, [
|
|
1552
|
+
path.join(projectPath, ".soloforge", "template-manifest.json"),
|
|
1553
|
+
path.join(projectPath, ".soloforge", "knowledge"),
|
|
1554
|
+
]);
|
|
1555
|
+
if (violations.length > 0) {
|
|
1556
|
+
for (const v of violations)
|
|
1557
|
+
userError(`❌ 模板同步写入边界阻断: ${v.target_path} — ${v.reason_zh}`);
|
|
1558
|
+
process.exit(1);
|
|
1559
|
+
}
|
|
1560
|
+
}
|
|
1493
1561
|
// 读取当前包版本
|
|
1494
1562
|
let packageVersion = "0.0.0";
|
|
1495
1563
|
try {
|
|
@@ -1544,6 +1612,21 @@ async function cmdSyncTemplates() {
|
|
|
1544
1612
|
}
|
|
1545
1613
|
}
|
|
1546
1614
|
const safeCheck = validateSyncSafety(assets);
|
|
1615
|
+
try {
|
|
1616
|
+
const { runKnowledgeGovernanceCheck } = await import("../engine/knowledge_governance_gate.js");
|
|
1617
|
+
const kgReport = runKnowledgeGovernanceCheck({
|
|
1618
|
+
project_language: "zh",
|
|
1619
|
+
contents: sourceManifest.slice(0, 12).map((e) => ({ id: e.asset_id, domain: "governance_contracts", content: e.target_path })),
|
|
1620
|
+
});
|
|
1621
|
+
if (kgReport.hard_fail_count > 0 && apply) {
|
|
1622
|
+
userError(`❌ 知识治理阻断模板同步: ${kgReport.hard_fail_count} hard_fail`);
|
|
1623
|
+
process.exit(1);
|
|
1624
|
+
}
|
|
1625
|
+
}
|
|
1626
|
+
catch (e) {
|
|
1627
|
+
if (!isJson)
|
|
1628
|
+
userInfo(` ⚠ 知识治理同步检查异常: ${e instanceof Error ? e.message : String(e)}`);
|
|
1629
|
+
}
|
|
1547
1630
|
const syncResult = executeSync({ dry_run: !apply, apply, confirm, project_path: projectPath, source_path: sourceDir }, assets, sourceManifest);
|
|
1548
1631
|
// apply 模式:真实文件复制
|
|
1549
1632
|
if (apply && confirm && syncResult.success && syncResult.backup_path) {
|
|
@@ -1927,7 +2010,7 @@ async function cmdValidateNewIssue() {
|
|
|
1927
2010
|
// label 精确匹配
|
|
1928
2011
|
if (p.label.toLowerCase() === lower)
|
|
1929
2012
|
matched = true;
|
|
1930
|
-
// label 前缀匹配: "
|
|
2013
|
+
// label 前缀匹配: "问题四十二" 匹配 "问题四十二" 等
|
|
1931
2014
|
if (p.label.toLowerCase().startsWith(lower + "("))
|
|
1932
2015
|
matched = true;
|
|
1933
2016
|
// 完整 title 的包含匹配(title 是长描述,子串匹配合理)
|
|
@@ -2143,8 +2226,10 @@ async function cmdNext() {
|
|
|
2143
2226
|
confidence: plan.confidence,
|
|
2144
2227
|
stage_evidence: plan.stage_evidence,
|
|
2145
2228
|
blocking_reasons: plan.blocking_reasons,
|
|
2229
|
+
warnings: plan.warnings,
|
|
2146
2230
|
recommended_commands: plan.recommended_commands,
|
|
2147
2231
|
recommended_prompt: plan.recommended_prompt_zh,
|
|
2232
|
+
project_knowledge_context: plan.project_knowledge_context,
|
|
2148
2233
|
disallowed_next_actions: plan.disallowed_actions.map((da) => ({
|
|
2149
2234
|
rule_id: da.rule_id,
|
|
2150
2235
|
blocked_actions: da.blocked_actions,
|
|
@@ -2180,6 +2265,22 @@ async function cmdNext() {
|
|
|
2180
2265
|
userInfo(` - ${ev}`);
|
|
2181
2266
|
}
|
|
2182
2267
|
}
|
|
2268
|
+
if (plan.warnings.length > 0) {
|
|
2269
|
+
userInfo(`\n提示:`);
|
|
2270
|
+
for (const warning of plan.warnings) {
|
|
2271
|
+
userInfo(` - [${warning.code}] ${warning.message_zh}`);
|
|
2272
|
+
}
|
|
2273
|
+
}
|
|
2274
|
+
if (plan.project_knowledge_context && plan.project_knowledge_context.total > 0) {
|
|
2275
|
+
userInfo(`\n项目规则上下文:`);
|
|
2276
|
+
userInfo(` 项目知识: ${plan.project_knowledge_context.total} 条,hard_fail: ${plan.project_knowledge_context.hard_fail_count}`);
|
|
2277
|
+
if (plan.project_knowledge_context.selected.length > 0) {
|
|
2278
|
+
userInfo(" 下一步会优先参考:");
|
|
2279
|
+
for (const item of plan.project_knowledge_context.selected) {
|
|
2280
|
+
userInfo(` - ${item.name} (${item.rel_path}, ${item.consumption})`);
|
|
2281
|
+
}
|
|
2282
|
+
}
|
|
2283
|
+
}
|
|
2183
2284
|
// 陈旧任务
|
|
2184
2285
|
if (plan.stale_task?.is_stale) {
|
|
2185
2286
|
userInfo(`\n⚠️ 检测到陈旧任务: ${plan.stale_task.reason_zh}`);
|
|
@@ -2498,6 +2599,7 @@ async function cmdAuditTemplateVisibility() {
|
|
|
2498
2599
|
const isJson = args.includes("--json");
|
|
2499
2600
|
const result = {
|
|
2500
2601
|
total_assets: report.total_assets,
|
|
2602
|
+
registered_contracts: coverageReport.total_contracts,
|
|
2501
2603
|
contract_covered: coverageReport.contract_covered,
|
|
2502
2604
|
uncovered_assets: coverageReport.uncovered,
|
|
2503
2605
|
user_visible_count: userVisibleCount,
|
|
@@ -2509,6 +2611,8 @@ async function cmdAuditTemplateVisibility() {
|
|
|
2509
2611
|
missing_consumer: report.missing_consumer,
|
|
2510
2612
|
missing_owner: report.missing_owner,
|
|
2511
2613
|
unregistered: report.unregistered_assets,
|
|
2614
|
+
consumption_evidence_verified: coverageReport.consumption_evidence_verified,
|
|
2615
|
+
consumption_evidence_failures: coverageReport.consumption_evidence_failures,
|
|
2512
2616
|
};
|
|
2513
2617
|
if (isJson) {
|
|
2514
2618
|
userJson(JSON.stringify(result, null, 2));
|
|
@@ -2516,6 +2620,7 @@ async function cmdAuditTemplateVisibility() {
|
|
|
2516
2620
|
else {
|
|
2517
2621
|
userInfo("═══ 模板资产可见性审计报告 ═══");
|
|
2518
2622
|
userInfo(`总资产数: ${report.total_assets}`);
|
|
2623
|
+
userInfo(`注册合同数: ${coverageReport.total_contracts}(包含非文件运行时资产)`);
|
|
2519
2624
|
userInfo(`合同覆盖: ${coverageReport.contract_covered}`);
|
|
2520
2625
|
userInfo(`未覆盖: ${coverageReport.uncovered}`);
|
|
2521
2626
|
userInfo(`用户可见: ${userVisibleCount}`);
|
|
@@ -2526,6 +2631,48 @@ async function cmdAuditTemplateVisibility() {
|
|
|
2526
2631
|
userInfo(`缺消费者: ${report.missing_consumer}`);
|
|
2527
2632
|
userInfo(`缺 owner: ${report.missing_owner}`);
|
|
2528
2633
|
userInfo(`未注册: ${report.unregistered_assets}`);
|
|
2634
|
+
userInfo(`消费证据验证: ${coverageReport.consumption_evidence_verified ? "通过" : "失败"}`);
|
|
2635
|
+
for (const failure of coverageReport.consumption_evidence_failures) {
|
|
2636
|
+
userInfo(` - ${failure}`);
|
|
2637
|
+
}
|
|
2638
|
+
}
|
|
2639
|
+
}
|
|
2640
|
+
async function cmdAuditProjectKnowledge() {
|
|
2641
|
+
const projectPathArg = getArgValue("--project-path");
|
|
2642
|
+
const projectPath = projectPathArg ? path.resolve(projectPathArg) : (process.env.SOLOFORGE_PROJECT ?? process.cwd());
|
|
2643
|
+
const { auditProjectKnowledge } = await import("../engine/project_knowledge_contract.js");
|
|
2644
|
+
const { userInfo, userJson } = await import("../engine/logger.js");
|
|
2645
|
+
const isJson = args.includes("--json");
|
|
2646
|
+
const { config } = await resolveProjectConfig(projectPath, { quiet: isJson });
|
|
2647
|
+
const report = auditProjectKnowledge(projectPath, config);
|
|
2648
|
+
if (isJson) {
|
|
2649
|
+
userJson(JSON.stringify(report, null, 2));
|
|
2650
|
+
return;
|
|
2651
|
+
}
|
|
2652
|
+
userInfo(`用户项目知识审计: ${projectPath}`);
|
|
2653
|
+
userInfo(` 总数: ${report.total}`);
|
|
2654
|
+
userInfo(` 用户自建: ${report.user_authored}`);
|
|
2655
|
+
userInfo(` 内置同步: ${report.builtin_synced}`);
|
|
2656
|
+
userInfo(` 用户修改内置: ${report.user_modified_builtin}`);
|
|
2657
|
+
userInfo(` 冲突: ${report.conflict}`);
|
|
2658
|
+
userInfo(` hard_rule: ${report.hard_rule}`);
|
|
2659
|
+
userInfo(` injectable: ${report.injectable}`);
|
|
2660
|
+
userInfo(` index_only: ${report.index_only}`);
|
|
2661
|
+
userInfo(` hard_fail: ${report.hard_fail_count}`);
|
|
2662
|
+
userInfo(` warning: ${report.warning_count}`);
|
|
2663
|
+
for (const asset of report.assets) {
|
|
2664
|
+
if (asset.findings.length === 0)
|
|
2665
|
+
continue;
|
|
2666
|
+
userInfo(` - ${asset.rel_path} (${asset.identity}/${asset.consumption})`);
|
|
2667
|
+
for (const finding of asset.findings) {
|
|
2668
|
+
const mark = finding.severity === "hard_fail" ? "❌" : finding.severity === "warning" ? "⚠️" : "ℹ️";
|
|
2669
|
+
userInfo(` ${mark} [${finding.code}] ${finding.message_zh}`);
|
|
2670
|
+
}
|
|
2671
|
+
}
|
|
2672
|
+
if (report.recommended_next_steps.length > 0) {
|
|
2673
|
+
userInfo(" 下一步:");
|
|
2674
|
+
for (const step of report.recommended_next_steps)
|
|
2675
|
+
userInfo(` - ${step}`);
|
|
2529
2676
|
}
|
|
2530
2677
|
}
|
|
2531
2678
|
//# sourceMappingURL=soloforge.js.map
|