soloforge 1.3.1 → 1.3.3

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 (158) hide show
  1. package/README.md +11 -3
  2. package/dist/adapters/claude_code/claude_md.d.ts.map +1 -1
  3. package/dist/adapters/claude_code/claude_md.js +4 -0
  4. package/dist/adapters/claude_code/claude_md.js.map +1 -1
  5. package/dist/adapters/claude_code/tools.d.ts +10 -10
  6. package/dist/adapters/claude_code/tools.d.ts.map +1 -1
  7. package/dist/adapters/claude_code/tools.js +603 -18
  8. package/dist/adapters/claude_code/tools.js.map +1 -1
  9. package/dist/adapters/shared/workflow_template.d.ts +26 -0
  10. package/dist/adapters/shared/workflow_template.d.ts.map +1 -1
  11. package/dist/adapters/shared/workflow_template.js +140 -46
  12. package/dist/adapters/shared/workflow_template.js.map +1 -1
  13. package/dist/bin/soloforge.d.ts.map +1 -1
  14. package/dist/bin/soloforge.js +316 -54
  15. package/dist/bin/soloforge.js.map +1 -1
  16. package/dist/engine/asset_manifest.d.ts +7 -1
  17. package/dist/engine/asset_manifest.d.ts.map +1 -1
  18. package/dist/engine/asset_manifest.js +41 -18
  19. package/dist/engine/asset_manifest.js.map +1 -1
  20. package/dist/engine/backend_implementation_contract.d.ts +51 -0
  21. package/dist/engine/backend_implementation_contract.d.ts.map +1 -0
  22. package/dist/engine/backend_implementation_contract.js +142 -0
  23. package/dist/engine/backend_implementation_contract.js.map +1 -0
  24. package/dist/engine/consumable_asset_registry.d.ts.map +1 -1
  25. package/dist/engine/consumable_asset_registry.js +159 -0
  26. package/dist/engine/consumable_asset_registry.js.map +1 -1
  27. package/dist/engine/consumption_trace_store.d.ts +8 -8
  28. package/dist/engine/consumption_trace_store.d.ts.map +1 -1
  29. package/dist/engine/consumption_trace_store.js +11 -7
  30. package/dist/engine/consumption_trace_store.js.map +1 -1
  31. package/dist/engine/decision_workshop.d.ts +160 -0
  32. package/dist/engine/decision_workshop.d.ts.map +1 -0
  33. package/dist/engine/decision_workshop.js +279 -0
  34. package/dist/engine/decision_workshop.js.map +1 -0
  35. package/dist/engine/dual_layer_mechanism_registry.d.ts.map +1 -1
  36. package/dist/engine/dual_layer_mechanism_registry.js +300 -2
  37. package/dist/engine/dual_layer_mechanism_registry.js.map +1 -1
  38. package/dist/engine/explicit_asset_registry.d.ts +30 -0
  39. package/dist/engine/explicit_asset_registry.d.ts.map +1 -0
  40. package/dist/engine/explicit_asset_registry.js +3712 -0
  41. package/dist/engine/explicit_asset_registry.js.map +1 -0
  42. package/dist/engine/implementation_roadmap_registry.d.ts +2 -2
  43. package/dist/engine/implementation_roadmap_registry.d.ts.map +1 -1
  44. package/dist/engine/implementation_roadmap_registry.js +110 -16
  45. package/dist/engine/implementation_roadmap_registry.js.map +1 -1
  46. package/dist/engine/intent_expander.d.ts.map +1 -1
  47. package/dist/engine/intent_expander.js +46 -2
  48. package/dist/engine/intent_expander.js.map +1 -1
  49. package/dist/engine/intent_router.d.ts +1 -1
  50. package/dist/engine/intent_router.d.ts.map +1 -1
  51. package/dist/engine/intent_router.js +2 -1
  52. package/dist/engine/intent_router.js.map +1 -1
  53. package/dist/engine/knowledge_injection_boundary.d.ts +3 -0
  54. package/dist/engine/knowledge_injection_boundary.d.ts.map +1 -1
  55. package/dist/engine/knowledge_injection_boundary.js +48 -5
  56. package/dist/engine/knowledge_injection_boundary.js.map +1 -1
  57. package/dist/engine/mechanism_contract_registry.d.ts +1 -1
  58. package/dist/engine/mechanism_contract_registry.d.ts.map +1 -1
  59. package/dist/engine/mechanism_contract_registry.js +142 -2
  60. package/dist/engine/mechanism_contract_registry.js.map +1 -1
  61. package/dist/engine/next_action_planner.d.ts +19 -0
  62. package/dist/engine/next_action_planner.d.ts.map +1 -0
  63. package/dist/engine/next_action_planner.js +453 -0
  64. package/dist/engine/next_action_planner.js.map +1 -0
  65. package/dist/engine/observed_consumption.d.ts +54 -0
  66. package/dist/engine/observed_consumption.d.ts.map +1 -0
  67. package/dist/engine/observed_consumption.js +377 -0
  68. package/dist/engine/observed_consumption.js.map +1 -0
  69. package/dist/engine/ood_solid_contract.d.ts +51 -0
  70. package/dist/engine/ood_solid_contract.d.ts.map +1 -0
  71. package/dist/engine/ood_solid_contract.js +115 -0
  72. package/dist/engine/ood_solid_contract.js.map +1 -0
  73. package/dist/engine/project_stage_detector.d.ts +17 -0
  74. package/dist/engine/project_stage_detector.d.ts.map +1 -0
  75. package/dist/engine/project_stage_detector.js +185 -0
  76. package/dist/engine/project_stage_detector.js.map +1 -0
  77. package/dist/engine/release_issue_scenario_registry.d.ts +64 -0
  78. package/dist/engine/release_issue_scenario_registry.d.ts.map +1 -0
  79. package/dist/engine/release_issue_scenario_registry.js +1362 -0
  80. package/dist/engine/release_issue_scenario_registry.js.map +1 -0
  81. package/dist/engine/release_readiness_gate.d.ts +1 -1
  82. package/dist/engine/release_readiness_gate.d.ts.map +1 -1
  83. package/dist/engine/release_readiness_gate.js +721 -47
  84. package/dist/engine/release_readiness_gate.js.map +1 -1
  85. package/dist/engine/release_tool_harness.d.ts +71 -0
  86. package/dist/engine/release_tool_harness.d.ts.map +1 -0
  87. package/dist/engine/release_tool_harness.js +161 -0
  88. package/dist/engine/release_tool_harness.js.map +1 -0
  89. package/dist/engine/scaffolder.d.ts.map +1 -1
  90. package/dist/engine/scaffolder.js +144 -7
  91. package/dist/engine/scaffolder.js.map +1 -1
  92. package/dist/engine/stale_current_task_detector.d.ts +30 -0
  93. package/dist/engine/stale_current_task_detector.d.ts.map +1 -0
  94. package/dist/engine/stale_current_task_detector.js +168 -0
  95. package/dist/engine/stale_current_task_detector.js.map +1 -0
  96. package/dist/engine/standard_asset_contract.d.ts +75 -0
  97. package/dist/engine/standard_asset_contract.d.ts.map +1 -0
  98. package/dist/engine/standard_asset_contract.js +388 -0
  99. package/dist/engine/standard_asset_contract.js.map +1 -0
  100. package/dist/engine/standard_asset_coverage.d.ts +45 -0
  101. package/dist/engine/standard_asset_coverage.d.ts.map +1 -0
  102. package/dist/engine/standard_asset_coverage.js +220 -0
  103. package/dist/engine/standard_asset_coverage.js.map +1 -0
  104. package/dist/engine/task_stage_detector.d.ts +19 -0
  105. package/dist/engine/task_stage_detector.d.ts.map +1 -0
  106. package/dist/engine/task_stage_detector.js +201 -0
  107. package/dist/engine/task_stage_detector.js.map +1 -0
  108. package/dist/engine/template_asset_contract_registry.d.ts +162 -0
  109. package/dist/engine/template_asset_contract_registry.d.ts.map +1 -0
  110. package/dist/engine/template_asset_contract_registry.js +598 -0
  111. package/dist/engine/template_asset_contract_registry.js.map +1 -0
  112. package/dist/engine/template_asset_visibility.d.ts +109 -0
  113. package/dist/engine/template_asset_visibility.d.ts.map +1 -0
  114. package/dist/engine/template_asset_visibility.js +321 -0
  115. package/dist/engine/template_asset_visibility.js.map +1 -0
  116. package/dist/engine/template_init_sync.d.ts +68 -0
  117. package/dist/engine/template_init_sync.d.ts.map +1 -0
  118. package/dist/engine/template_init_sync.js +218 -0
  119. package/dist/engine/template_init_sync.js.map +1 -0
  120. package/dist/engine/template_manifest_io.d.ts +10 -0
  121. package/dist/engine/template_manifest_io.d.ts.map +1 -1
  122. package/dist/engine/template_manifest_io.js +63 -30
  123. package/dist/engine/template_manifest_io.js.map +1 -1
  124. package/dist/engine/template_mechanism_auditor.d.ts +3 -1
  125. package/dist/engine/template_mechanism_auditor.d.ts.map +1 -1
  126. package/dist/engine/template_mechanism_auditor.js +27 -24
  127. package/dist/engine/template_mechanism_auditor.js.map +1 -1
  128. package/dist/engine/tool_invocation_contract_registry.d.ts.map +1 -1
  129. package/dist/engine/tool_invocation_contract_registry.js +21 -1
  130. package/dist/engine/tool_invocation_contract_registry.js.map +1 -1
  131. package/dist/engine/workflow_navigation_contract.d.ts +115 -0
  132. package/dist/engine/workflow_navigation_contract.d.ts.map +1 -0
  133. package/dist/engine/workflow_navigation_contract.js +39 -0
  134. package/dist/engine/workflow_navigation_contract.js.map +1 -0
  135. package/dist/knowledge/index_manager.d.ts +20 -0
  136. package/dist/knowledge/index_manager.d.ts.map +1 -1
  137. package/dist/knowledge/index_manager.js +234 -3
  138. package/dist/knowledge/index_manager.js.map +1 -1
  139. package/dist/types.d.ts +44 -1
  140. package/dist/types.d.ts.map +1 -1
  141. package/package.json +2 -2
  142. package/templates/knowledge/acceptance_templates/OOD/350/256/276/350/256/241/346/221/230/350/246/201/346/250/241/347/211/210.md +60 -0
  143. package/templates/knowledge/acceptance_templates//345/220/216/347/253/257/345/256/236/347/216/260/351/252/214/346/224/266/346/270/205/345/215/225.md +46 -0
  144. package/templates/knowledge/procedures/OOD/350/256/276/350/256/241/345/267/245/344/275/234/346/265/201.md +50 -0
  145. package/templates/knowledge/procedures//345/205/250/347/224/237/345/221/275/345/221/250/346/234/237/345/267/245/344/275/234/346/265/201/345/257/274/350/210/252.md +100 -0
  146. package/templates/knowledge/procedures//345/220/216/347/253/257/346/216/245/345/217/243/345/256/236/347/216/260/345/267/245/344/275/234/346/265/201.md +50 -0
  147. package/templates/knowledge/review_rules/SOLID/344/273/243/347/240/201/345/256/241/346/237/245/350/247/204/345/210/231.md +40 -0
  148. package/templates/knowledge/review_rules//345/220/216/347/253/257/345/256/236/347/216/260/345/267/245/347/250/213/345/256/241/346/237/245/350/247/204/345/210/231.md +38 -0
  149. package/templates/knowledge/rules/OOD/344/270/216SOLID/350/256/276/350/256/241/350/247/204/345/210/231.md +62 -0
  150. package/templates/knowledge/rules//345/220/216/347/253/257/345/256/236/347/216/260/345/267/245/347/250/213/345/245/221/347/272/246/350/247/204/345/210/231.md +55 -0
  151. package/templates/knowledge/rules//345/267/245/344/275/234/346/265/201/345/257/274/350/210/252/345/245/221/347/272/246/350/247/204/345/210/231.md +113 -0
  152. package/templates/knowledge/rules//346/240/207/345/207/206/350/265/204/344/272/247/350/246/206/347/233/226/350/247/204/345/210/231.md +72 -0
  153. package/templates/knowledge/rules//346/250/241/346/235/277/350/265/204/344/272/247/345/217/257/350/247/201/346/200/247/350/247/204/345/210/231.md +71 -0
  154. package/templates/knowledge/rules//347/224/250/346/210/267/345/217/215/351/246/210/345/245/221/347/272/246/350/247/204/345/210/231.md +62 -1
  155. package/templates/knowledge/rules//351/200/232/347/224/250/345/206/263/347/255/226/347/240/224/350/256/250/350/247/204/345/210/231.md +77 -0
  156. package/templates/knowledge/rules//351/252/214/346/224/266/346/250/241/346/235/277/350/276/223/345/207/272/345/245/221/347/272/246/350/247/204/345/210/231.md +96 -0
  157. package/templates/patterns/SOLID/350/256/276/350/256/241/350/247/204/350/214/203.md +39 -0
  158. package/templates/patterns//345/220/216/347/253/257/345/256/236/347/216/260/345/267/245/347/250/213/350/247/204/350/214/203.md +39 -0
@@ -1,6 +1,32 @@
1
1
  import type { ProjectConfig } from "../../types.js";
2
+ /**
3
+ * 计算所有权威规则资产的第一行非注释内容组合的 SHA256 校验和。
4
+ * 权威规则内容变化时校验和必然变化。
5
+ */
6
+ export declare function computeAuthoritativeRulesChecksum(rootDir: string): string;
7
+ /**
8
+ * 提取 generateWorkflowRules 输出中所有 @sf-hard-rule 引用的机制 ID(去重)。
9
+ */
10
+ export declare function getWorkflowRuleMechanismIds(): string[];
11
+ /**
12
+ * 校验工作流模板中每条 @sf-hard-rule 都能找到权威机制注册条目,
13
+ * 且其 template_layer 资产文件存在,且内容校验和与嵌入值一致。
14
+ */
15
+ export declare function validateWorkflowRuleSources(rootDir: string): {
16
+ valid: boolean;
17
+ missing_mechanisms: string[];
18
+ missing_assets: string[];
19
+ checksum_mismatch: boolean;
20
+ embedded_checksum: string;
21
+ computed_checksum: string;
22
+ };
23
+ /**
24
+ * 更新嵌入校验和到源文件。由 CI 或开发者在确认权威规则变化后调用。
25
+ */
26
+ export declare function updateEmbeddedChecksum(rootDir: string): string;
2
27
  /**
3
28
  * 生成工作流规则模板内容。
29
+ * 从 WORKFLOW_TEMPLATE_HARD_RULES 结构化清单循环渲染每条规则的 marker + user_instruction。
4
30
  * @param config - 项目配置
5
31
  * @returns 工作流规则文本
6
32
  */
@@ -1 +1 @@
1
- {"version":3,"file":"workflow_template.d.ts","sourceRoot":"","sources":["../../../src/adapters/shared/workflow_template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGpD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAqDnE"}
1
+ {"version":3,"file":"workflow_template.d.ts","sourceRoot":"","sources":["../../../src/adapters/shared/workflow_template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AA4CpD;;;GAGG;AACH,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAmBzE;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,EAAE,CAQtD;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG;IAC5D,KAAK,EAAE,OAAO,CAAC;IACf,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAiCA;AASD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAY9D;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAsBnE"}
@@ -1,61 +1,155 @@
1
1
  import { debug } from "../../engine/logger.js";
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ import crypto from "node:crypto";
5
+ import { findLayerMapByMechanismId } from "../../engine/dual_layer_mechanism_registry.js";
6
+ import { WORKFLOW_TEMPLATE_HARD_RULES } from "../../engine/asset_manifest.js";
7
+ const SF_HARD_RULE_RE = /@sf-hard-rule[^>]*mechanism=(\S+)/g;
8
+ /** 从结构化清单生成 @sf-hard-rule 标记 */
9
+ function hardRuleTag(ruleId) {
10
+ const rule = WORKFLOW_TEMPLATE_HARD_RULES.find(r => r.rule_id === ruleId);
11
+ if (!rule)
12
+ return `<!-- @sf-hard-rule id=${ruleId} MISSING_IN_MANIFEST -->`;
13
+ return `<!-- @sf-hard-rule id=${rule.rule_id} mechanism=${rule.mechanism_id} enforcement=${rule.enforcement_status} summary="${rule.rule_summary}" -->`;
14
+ }
15
+ /** 渲染一条规则的 marker + user_instruction */
16
+ function renderRule(ruleId) {
17
+ const rule = WORKFLOW_TEMPLATE_HARD_RULES.find(r => r.rule_id === ruleId);
18
+ const tag = hardRuleTag(ruleId);
19
+ const text = rule?.user_instruction ?? "";
20
+ if (text)
21
+ return `${tag}\n${text}`;
22
+ return tag;
23
+ }
24
+ /** 渲染一组规则(marker + user_instruction) */
25
+ function renderRules(ruleIds) {
26
+ return ruleIds.map(id => renderRule(id)).join("\n");
27
+ }
28
+ /** 工作流步骤定义: 每步包含标题和有序规则 ID */
29
+ const WORKFLOW_STEPS = [
30
+ { title: "", rule_ids: ["wf-privacy-before-expand", "wf-knowledge-injection", "wf-core-principles"] },
31
+ { title: "### 步骤 1: 分类", rule_ids: ["wf-classify-first"] },
32
+ { title: "### 步骤 1.5: 入口裁决", rule_ids: ["wf-routing-gate", "wf-strategy-no-route"] },
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"] },
35
+ { title: "### 步骤 2.5: 导航", rule_ids: ["wf-navigation-contract"] },
36
+ { title: "### 步骤 3: 验证", rule_ids: ["wf-verify-after-change", "wf-evidence-grounding"] },
37
+ { title: "### 步骤 4: 学习", rule_ids: ["wf-learn-after-verify"] },
38
+ { title: "### 步骤 5: 汇报", rule_ids: ["wf-no-auto-capability-change"] },
39
+ ];
40
+ /**
41
+ * 计算所有权威规则资产的第一行非注释内容组合的 SHA256 校验和。
42
+ * 权威规则内容变化时校验和必然变化。
43
+ */
44
+ export function computeAuthoritativeRulesChecksum(rootDir) {
45
+ const mechanismIds = getWorkflowRuleMechanismIds();
46
+ const parts = [];
47
+ for (const mid of mechanismIds) {
48
+ const map = findLayerMapByMechanismId(mid);
49
+ if (!map?.template_assets)
50
+ continue;
51
+ for (const asset of map.template_assets) {
52
+ const fullPath = path.join(rootDir, asset.path);
53
+ if (!fs.existsSync(fullPath))
54
+ continue;
55
+ const content = fs.readFileSync(fullPath, "utf-8");
56
+ // 取前 200 字符(去掉 frontmatter 后的首段)作为校验依据
57
+ const bodyStart = content.indexOf("---", content.indexOf("---") + 3);
58
+ const body = bodyStart >= 0 ? content.substring(bodyStart + 3).trimStart() : content;
59
+ parts.push(`${asset.path}:${body.substring(0, 500)}`);
60
+ }
61
+ }
62
+ return crypto.createHash("sha256").update(parts.join("\n")).digest("hex").substring(0, 16);
63
+ }
64
+ /**
65
+ * 提取 generateWorkflowRules 输出中所有 @sf-hard-rule 引用的机制 ID(去重)。
66
+ */
67
+ export function getWorkflowRuleMechanismIds() {
68
+ const text = generateWorkflowRules({});
69
+ const ids = new Set();
70
+ let m;
71
+ while ((m = SF_HARD_RULE_RE.exec(text)) !== null) {
72
+ ids.add(m[1]);
73
+ }
74
+ return [...ids];
75
+ }
76
+ /**
77
+ * 校验工作流模板中每条 @sf-hard-rule 都能找到权威机制注册条目,
78
+ * 且其 template_layer 资产文件存在,且内容校验和与嵌入值一致。
79
+ */
80
+ export function validateWorkflowRuleSources(rootDir) {
81
+ const mechanismIds = getWorkflowRuleMechanismIds();
82
+ const missing_mechanisms = [];
83
+ const missing_assets = [];
84
+ for (const mid of mechanismIds) {
85
+ const map = findLayerMapByMechanismId(mid);
86
+ if (!map) {
87
+ missing_mechanisms.push(mid);
88
+ continue;
89
+ }
90
+ if (map.template_assets) {
91
+ for (const asset of map.template_assets) {
92
+ if (!fs.existsSync(path.join(rootDir, asset.path))) {
93
+ missing_assets.push(asset.path);
94
+ }
95
+ }
96
+ }
97
+ }
98
+ // 内容校验和验证
99
+ const computedChecksum = computeAuthoritativeRulesChecksum(rootDir);
100
+ const embeddedChecksum = getEmbeddedChecksum();
101
+ const checksumMismatch = computedChecksum !== embeddedChecksum;
102
+ return {
103
+ valid: missing_mechanisms.length === 0 && missing_assets.length === 0 && !checksumMismatch,
104
+ missing_mechanisms,
105
+ missing_assets,
106
+ checksum_mismatch: checksumMismatch,
107
+ embedded_checksum: embeddedChecksum,
108
+ computed_checksum: computedChecksum,
109
+ };
110
+ }
111
+ /** 当前嵌入的权威规则校验和 — 由 `npm run update-workflow-checksum` 更新。 */
112
+ const EMBEDDED_CHECKSUM = "b0a78fd669fd93c5";
113
+ function getEmbeddedChecksum() {
114
+ return EMBEDDED_CHECKSUM;
115
+ }
116
+ /**
117
+ * 更新嵌入校验和到源文件。由 CI 或开发者在确认权威规则变化后调用。
118
+ */
119
+ export function updateEmbeddedChecksum(rootDir) {
120
+ const newChecksum = computeAuthoritativeRulesChecksum(rootDir);
121
+ const selfPath = path.join(rootDir, "src", "adapters", "shared", "workflow_template.ts");
122
+ if (fs.existsSync(selfPath)) {
123
+ let content = fs.readFileSync(selfPath, "utf-8");
124
+ content = content.replace(/const EMBEDDED_CHECKSUM = "[^"]*";/, `const EMBEDDED_CHECKSUM = "${newChecksum}";`);
125
+ fs.writeFileSync(selfPath, content, "utf-8");
126
+ }
127
+ return newChecksum;
128
+ }
2
129
  /**
3
130
  * 生成工作流规则模板内容。
131
+ * 从 WORKFLOW_TEMPLATE_HARD_RULES 结构化清单循环渲染每条规则的 marker + user_instruction。
4
132
  * @param config - 项目配置
5
133
  * @returns 工作流规则文本
6
134
  */
7
135
  export function generateWorkflowRules(config) {
8
136
  debug("工作流模板", "生成工作流规则");
9
- return `# SoloForge 集成规则
137
+ const header = `# SoloForge 集成规则
10
138
 
11
139
  ## 强制工作流
12
140
 
13
- 当收到开发指令时(非纯对话/提问),必须按以下顺序执行:
14
-
15
- <!-- @sf-hard-rule id=wf-privacy-before-expand mechanism=mc-privacy-boundary enforcement=enforced -->
16
- <!-- @sf-hard-rule id=wf-knowledge-injection mechanism=mc-knowledge-injection-boundary enforcement=enforced -->
17
- <!-- @sf-hard-rule id=wf-core-principles mechanism=mc-core-engineering-principles enforcement=enforced -->
18
- ### 步骤 1: 分类
19
- <!-- @sf-hard-rule id=wf-classify-first mechanism=mc-workflow-contract enforcement=enforced -->
20
- 调用 \`sf_classify\` 分类。
21
-
22
- <!-- @sf-hard-rule id=wf-routing-gate mechanism=mc-workflow-contract enforcement=enforced -->
23
- ### 步骤 1.5: 入口裁决
24
- 按分类结果 \`route_decision\` 字段分发。详见知识库路由规则。
25
-
26
- <!-- @sf-hard-rule id=wf-strategy-no-route mechanism=mc-workflow-contract enforcement=enforced -->
27
- \`strategy\` 仅兼容展示,不作为入口裁决。
28
-
29
- <!-- @sf-hard-rule id=wf-multi-stage-loop mechanism=mc-workflow-contract enforcement=enforced -->
30
- ### 步骤 1.6: 多阶段拆解
31
- \`execution_shape=multi_stage_plan\` 时: \`sf_plan\` → \`sf_expand\` → 执行 → \`sf_plan_advance\` → 循环。
32
-
33
- <!-- @sf-hard-rule id=wf-dispatch-by-route mechanism=mc-workflow-contract enforcement=enforced -->
34
- <!-- @sf-hard-rule id=wf-command-contract mechanism=mc-command-execution enforcement=enforced -->
35
- <!-- @sf-hard-rule id=wf-tool-contract mechanism=mc-tool-invocation-contract enforcement=enforced -->
36
- <!-- @sf-hard-rule id=wf-architecture-workshop-first mechanism=mc-architecture-decision-workshop enforcement=enforced -->
37
- <!-- @sf-hard-rule id=wf-design-artifact-pack mechanism=mc-design-artifact-pack enforcement=enforced -->
38
- ### 步骤 2: 执行
39
- 按分类结果调用对应工具。详见知识库流程。
40
- 涉及架构设计时,必须先完成业务流程、数据、安全、后端、前端、基础设施六类决策研讨与用户确认,再生成正式设计产物。
41
- 涉及架构、数据库或 API 设计产物时,必须按设计产物包规则生成或升级;未经真实复验的旧文档不得用于编码结论。
42
-
43
- <!-- @sf-hard-rule id=wf-verify-after-change mechanism=mc-verifier enforcement=enforced -->
44
- <!-- @sf-hard-rule id=wf-evidence-grounding mechanism=mc-evidence-grounding enforcement=enforced -->
45
- ### 步骤 3: 验证
46
- 代码修改后调用 \`sf_verify\` 并执行返回的验证命令。
47
- 关键事实和交付结论必须有 evidence_refs,证据不足时必须说明不确定并请求确认。验证计划不得当作验证结果。
48
-
49
- <!-- @sf-hard-rule id=wf-learn-after-verify mechanism=mc-task-context-lifecycle enforcement=enforced -->
50
- ### 步骤 4: 学习
51
- 验证后调用 \`sf_learn\`。若有 \`retry_hint\` 回到步骤 3。
52
-
53
- <!-- @sf-hard-rule id=wf-no-auto-capability-change mechanism=mc-guard-evaluation enforcement=enforced -->
54
- ### 步骤 5: 汇报
55
- 展示验证摘要和验收结果。
141
+ 当收到开发指令时(非纯对话/提问),必须按以下顺序执行:`;
142
+ const sections = WORKFLOW_STEPS.map(step => {
143
+ const rulesText = renderRules(step.rule_ids);
144
+ if (step.title)
145
+ return `${step.title}\n${rulesText}`;
146
+ return rulesText;
147
+ }).join("\n\n");
148
+ const footer = `## 项目信息
56
149
 
57
- ## 项目信息
150
+ 项目事实以 config 配置及 tool 输出为准,不在模板中硬编码。
58
151
 
59
- 项目事实以 config 配置及 tool 输出为准,不在模板中硬编码。`;
152
+ <!-- @sf-checksum: ${EMBEDDED_CHECKSUM} -->`;
153
+ return `${header}\n\n${sections}\n\n${footer}`;
60
154
  }
61
155
  //# sourceMappingURL=workflow_template.js.map
@@ -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;AAE/C;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAqB;IACzD,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC1B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAkD4B,CAAC;AACtC,CAAC"}
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":";AAm0BA,OAAO,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC"}
1
+ {"version":3,"file":"soloforge.d.ts","sourceRoot":"","sources":["../../src/bin/soloforge.ts"],"names":[],"mappings":";AAwzBA,OAAO,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC"}