soloforge 1.1.30 → 1.1.31

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 (804) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +33 -18
  3. package/dist/adapters/claude_code/claude_md.d.ts +2 -1
  4. package/dist/adapters/claude_code/claude_md.d.ts.map +1 -1
  5. package/dist/adapters/claude_code/claude_md.js.map +1 -1
  6. package/dist/adapters/codex/codex_rules.d.ts +2 -1
  7. package/dist/adapters/codex/codex_rules.d.ts.map +1 -1
  8. package/dist/adapters/codex/codex_rules.js.map +1 -1
  9. package/dist/adapters/shared/workflow_template.d.ts.map +1 -1
  10. package/dist/adapters/shared/workflow_template.js +0 -1
  11. package/dist/adapters/shared/workflow_template.js.map +1 -1
  12. package/dist/adapters/trae/trae_config.d.ts +17 -1
  13. package/dist/adapters/trae/trae_config.d.ts.map +1 -1
  14. package/dist/adapters/trae/trae_config.js +2 -2
  15. package/dist/adapters/trae/trae_config.js.map +1 -1
  16. package/dist/adapters/trae/trae_rules.d.ts +2 -1
  17. package/dist/adapters/trae/trae_rules.d.ts.map +1 -1
  18. package/dist/adapters/trae/trae_rules.js.map +1 -1
  19. package/dist/bin/args.d.ts +9 -0
  20. package/dist/bin/args.d.ts.map +1 -1
  21. package/dist/bin/args.js +44 -1
  22. package/dist/bin/args.js.map +1 -1
  23. package/dist/bin/commands/audit.d.ts.map +1 -1
  24. package/dist/bin/commands/audit.js +5 -40
  25. package/dist/bin/commands/audit.js.map +1 -1
  26. package/dist/bin/commands/check_bash.d.ts.map +1 -1
  27. package/dist/bin/commands/check_bash.js +28 -6
  28. package/dist/bin/commands/check_bash.js.map +1 -1
  29. package/dist/bin/commands/check_write.d.ts +2 -1
  30. package/dist/bin/commands/check_write.d.ts.map +1 -1
  31. package/dist/bin/commands/check_write.js +14 -45
  32. package/dist/bin/commands/check_write.js.map +1 -1
  33. package/dist/bin/commands/hooks.d.ts.map +1 -1
  34. package/dist/bin/commands/hooks.js +7 -3
  35. package/dist/bin/commands/hooks.js.map +1 -1
  36. package/dist/bin/commands/init.d.ts +19 -2
  37. package/dist/bin/commands/init.d.ts.map +1 -1
  38. package/dist/bin/commands/init.js +97 -72
  39. package/dist/bin/commands/init.js.map +1 -1
  40. package/dist/bin/commands/status.d.ts.map +1 -1
  41. package/dist/bin/commands/status.js +49 -65
  42. package/dist/bin/commands/status.js.map +1 -1
  43. package/dist/bin/commands/sync.d.ts.map +1 -1
  44. package/dist/bin/commands/sync.js +18 -26
  45. package/dist/bin/commands/sync.js.map +1 -1
  46. package/dist/bin/commands/validate.d.ts +1 -1
  47. package/dist/bin/commands/validate.d.ts.map +1 -1
  48. package/dist/bin/commands/validate.js +47 -58
  49. package/dist/bin/commands/validate.js.map +1 -1
  50. package/dist/bin/config_commands.d.ts +1 -1
  51. package/dist/bin/config_commands.d.ts.map +1 -1
  52. package/dist/bin/config_commands.js +40 -26
  53. package/dist/bin/config_commands.js.map +1 -1
  54. package/dist/bin/soloforge.js +30 -3
  55. package/dist/bin/soloforge.js.map +1 -1
  56. package/dist/engine/audit/audit_pool.d.ts.map +1 -1
  57. package/dist/engine/audit/audit_pool.js +2 -1
  58. package/dist/engine/audit/audit_pool.js.map +1 -1
  59. package/dist/engine/audit/audit_sampler.d.ts +2 -0
  60. package/dist/engine/audit/audit_sampler.d.ts.map +1 -1
  61. package/dist/engine/audit/audit_sampler.js.map +1 -1
  62. package/dist/engine/audit/code_reviewer.d.ts +1 -1
  63. package/dist/engine/audit/code_reviewer.d.ts.map +1 -1
  64. package/dist/engine/audit/code_reviewer.js +9 -21
  65. package/dist/engine/audit/code_reviewer.js.map +1 -1
  66. package/dist/engine/audit/core_experience_principle.js +1 -1
  67. package/dist/engine/audit/core_experience_principle.js.map +1 -1
  68. package/dist/engine/audit/debt_reporter.d.ts +3 -0
  69. package/dist/engine/audit/debt_reporter.d.ts.map +1 -1
  70. package/dist/engine/audit/debt_reporter.js.map +1 -1
  71. package/dist/engine/audit/debt_tracker.d.ts.map +1 -1
  72. package/dist/engine/audit/debt_tracker.js +12 -5
  73. package/dist/engine/audit/debt_tracker.js.map +1 -1
  74. package/dist/engine/audit/debugger.d.ts +3 -0
  75. package/dist/engine/audit/debugger.d.ts.map +1 -1
  76. package/dist/engine/audit/debugger.js.map +1 -1
  77. package/dist/engine/audit/delivery.d.ts +1 -1
  78. package/dist/engine/audit/delivery.d.ts.map +1 -1
  79. package/dist/engine/audit/delivery.js +7 -4
  80. package/dist/engine/audit/delivery.js.map +1 -1
  81. package/dist/engine/audit/delivery_readiness.d.ts +2 -0
  82. package/dist/engine/audit/delivery_readiness.d.ts.map +1 -1
  83. package/dist/engine/audit/delivery_readiness.js +2 -0
  84. package/dist/engine/audit/delivery_readiness.js.map +1 -1
  85. package/dist/engine/audit/developer_sovereignty.d.ts +5 -43
  86. package/dist/engine/audit/developer_sovereignty.d.ts.map +1 -1
  87. package/dist/engine/audit/developer_sovereignty.js +2 -6
  88. package/dist/engine/audit/developer_sovereignty.js.map +1 -1
  89. package/dist/engine/audit/evolver.js +5 -5
  90. package/dist/engine/audit/evolver.js.map +1 -1
  91. package/dist/engine/audit/failure_classifier.d.ts.map +1 -1
  92. package/dist/engine/audit/governance_report.d.ts +1 -1
  93. package/dist/engine/audit/governance_report.d.ts.map +1 -1
  94. package/dist/engine/audit/governance_report.js +1 -1
  95. package/dist/engine/audit/governance_report.js.map +1 -1
  96. package/dist/engine/audit/main_path_integration_contract/gates.d.ts +2 -1
  97. package/dist/engine/audit/main_path_integration_contract/gates.d.ts.map +1 -1
  98. package/dist/engine/audit/main_path_integration_contract/gates.js.map +1 -1
  99. package/dist/engine/audit/main_path_integration_contract/queries.d.ts +2 -2
  100. package/dist/engine/audit/main_path_integration_contract/queries.d.ts.map +1 -1
  101. package/dist/engine/audit/main_path_integration_contract/queries.js +2 -2
  102. package/dist/engine/audit/main_path_integration_contract/queries.js.map +1 -1
  103. package/dist/engine/audit/main_path_integration_contract/scanning.d.ts.map +1 -1
  104. package/dist/engine/audit/main_path_integration_contract/scanning.js +2 -2
  105. package/dist/engine/audit/main_path_integration_contract/scanning.js.map +1 -1
  106. package/dist/engine/audit/main_path_integration_contract/scanning_infra.d.ts.map +1 -1
  107. package/dist/engine/audit/main_path_integration_contract/scanning_infra.js +3 -2
  108. package/dist/engine/audit/main_path_integration_contract/scanning_infra.js.map +1 -1
  109. package/dist/engine/audit/mutation_audit.d.ts +4 -22
  110. package/dist/engine/audit/mutation_audit.d.ts.map +1 -1
  111. package/dist/engine/audit/mutation_audit.js.map +1 -1
  112. package/dist/engine/audit/observability.d.ts.map +1 -1
  113. package/dist/engine/audit/observability.js +4 -2
  114. package/dist/engine/audit/observability.js.map +1 -1
  115. package/dist/engine/audit/privacy_grants.d.ts +108 -0
  116. package/dist/engine/audit/privacy_grants.d.ts.map +1 -0
  117. package/dist/engine/audit/privacy_grants.js +171 -0
  118. package/dist/engine/audit/privacy_grants.js.map +1 -0
  119. package/dist/engine/audit/privacy_patterns.d.ts +24 -0
  120. package/dist/engine/audit/privacy_patterns.d.ts.map +1 -0
  121. package/dist/engine/audit/privacy_patterns.js +143 -0
  122. package/dist/engine/audit/privacy_patterns.js.map +1 -0
  123. package/dist/engine/audit/privacy_scanning.d.ts +153 -0
  124. package/dist/engine/audit/privacy_scanning.d.ts.map +1 -0
  125. package/dist/engine/audit/privacy_scanning.js +567 -0
  126. package/dist/engine/audit/privacy_scanning.js.map +1 -0
  127. package/dist/engine/audit/privacy_secret_contract.d.ts +9 -317
  128. package/dist/engine/audit/privacy_secret_contract.d.ts.map +1 -1
  129. package/dist/engine/audit/privacy_secret_contract.js +12 -873
  130. package/dist/engine/audit/privacy_secret_contract.js.map +1 -1
  131. package/dist/engine/audit/privacy_types.d.ts +48 -0
  132. package/dist/engine/audit/privacy_types.d.ts.map +1 -0
  133. package/dist/engine/audit/privacy_types.js +14 -0
  134. package/dist/engine/audit/privacy_types.js.map +1 -0
  135. package/dist/engine/audit/risk_sampler.d.ts +2 -0
  136. package/dist/engine/audit/risk_sampler.d.ts.map +1 -1
  137. package/dist/engine/audit/risk_sampler.js +2 -0
  138. package/dist/engine/audit/risk_sampler.js.map +1 -1
  139. package/dist/engine/audit/semantic_evidence.d.ts +5 -1
  140. package/dist/engine/audit/semantic_evidence.d.ts.map +1 -1
  141. package/dist/engine/audit/semantic_evidence.js +2 -0
  142. package/dist/engine/audit/semantic_evidence.js.map +1 -1
  143. package/dist/engine/audit/test_generator.d.ts.map +1 -1
  144. package/dist/engine/audit/test_generator.js +4 -1
  145. package/dist/engine/audit/test_generator.js.map +1 -1
  146. package/dist/engine/audit/test_quality.d.ts +3 -0
  147. package/dist/engine/audit/test_quality.d.ts.map +1 -1
  148. package/dist/engine/audit/test_quality.js +1 -71
  149. package/dist/engine/audit/test_quality.js.map +1 -1
  150. package/dist/engine/change_coordinator.d.ts +1 -1
  151. package/dist/engine/change_coordinator.d.ts.map +1 -1
  152. package/dist/engine/change_coordinator.js +30 -27
  153. package/dist/engine/change_coordinator.js.map +1 -1
  154. package/dist/engine/cognitive_anchor.d.ts.map +1 -1
  155. package/dist/engine/cognitive_anchor.js +6 -7
  156. package/dist/engine/cognitive_anchor.js.map +1 -1
  157. package/dist/engine/config/config_auto_repair.d.ts +2 -1
  158. package/dist/engine/config/config_auto_repair.d.ts.map +1 -1
  159. package/dist/engine/config/config_auto_repair.js +18 -13
  160. package/dist/engine/config/config_auto_repair.js.map +1 -1
  161. package/dist/engine/config/config_precedence_contract/field_class.d.ts +11 -0
  162. package/dist/engine/config/config_precedence_contract/field_class.d.ts.map +1 -0
  163. package/dist/engine/config/config_precedence_contract/field_class.js +10 -0
  164. package/dist/engine/config/config_precedence_contract/field_class.js.map +1 -0
  165. package/dist/engine/config/config_precedence_contract/index.d.ts +1 -0
  166. package/dist/engine/config/config_precedence_contract/index.d.ts.map +1 -1
  167. package/dist/engine/config/config_precedence_contract/index.js.map +1 -1
  168. package/dist/engine/config/config_precedence_contract/project_config.d.ts.map +1 -1
  169. package/dist/engine/config/config_precedence_contract/project_config.js +17 -9
  170. package/dist/engine/config/config_precedence_contract/project_config.js.map +1 -1
  171. package/dist/engine/config/config_precedence_contract/resolution.d.ts +1 -1
  172. package/dist/engine/config/config_precedence_contract/resolution.d.ts.map +1 -1
  173. package/dist/engine/config/config_precedence_contract/resolution.js +9 -0
  174. package/dist/engine/config/config_precedence_contract/resolution.js.map +1 -1
  175. package/dist/engine/config/config_precedence_contract/types.d.ts +4 -26
  176. package/dist/engine/config/config_precedence_contract/types.d.ts.map +1 -1
  177. package/dist/engine/config/config_precedence_contract/types.js +2 -0
  178. package/dist/engine/config/config_precedence_contract/types.js.map +1 -1
  179. package/dist/engine/config/config_precedence_contract.d.ts +3 -1
  180. package/dist/engine/config/config_precedence_contract.d.ts.map +1 -1
  181. package/dist/engine/config/config_precedence_contract.js +7 -1
  182. package/dist/engine/config/config_precedence_contract.js.map +1 -1
  183. package/dist/engine/config/config_write_boundary.d.ts.map +1 -1
  184. package/dist/engine/config/config_write_boundary.js +16 -0
  185. package/dist/engine/config/config_write_boundary.js.map +1 -1
  186. package/dist/engine/config/regression_matrix.d.ts.map +1 -1
  187. package/dist/engine/config/regression_matrix.js +3 -3
  188. package/dist/engine/config/regression_matrix.js.map +1 -1
  189. package/dist/engine/config/zero_config_init.d.ts +30 -5
  190. package/dist/engine/config/zero_config_init.d.ts.map +1 -1
  191. package/dist/engine/config/zero_config_init.js +26 -15
  192. package/dist/engine/config/zero_config_init.js.map +1 -1
  193. package/dist/engine/contracts/architecture_design_contract.d.ts.map +1 -1
  194. package/dist/engine/contracts/architecture_design_contract.js.map +1 -1
  195. package/dist/engine/contracts/artifact_contract_registry.d.ts +1 -1
  196. package/dist/engine/contracts/artifact_contract_registry.d.ts.map +1 -1
  197. package/dist/engine/contracts/artifact_contract_registry.js +1 -1
  198. package/dist/engine/contracts/artifact_contract_registry.js.map +1 -1
  199. package/dist/engine/contracts/backend_implementation_contract.js +4 -4
  200. package/dist/engine/contracts/backend_implementation_contract.js.map +1 -1
  201. package/dist/engine/contracts/brainstorm_contract.d.ts +1 -1
  202. package/dist/engine/contracts/brainstorm_contract.d.ts.map +1 -1
  203. package/dist/engine/contracts/brainstorm_contract.js +1 -1
  204. package/dist/engine/contracts/brainstorm_contract.js.map +1 -1
  205. package/dist/engine/contracts/capability_state_store.d.ts +2 -0
  206. package/dist/engine/contracts/capability_state_store.d.ts.map +1 -1
  207. package/dist/engine/contracts/capability_state_store.js +11 -1
  208. package/dist/engine/contracts/capability_state_store.js.map +1 -1
  209. package/dist/engine/contracts/code_maintainability_observability_contract.js +5 -5
  210. package/dist/engine/contracts/code_maintainability_observability_contract.js.map +1 -1
  211. package/dist/engine/contracts/coding_readiness_gate.d.ts +1 -1
  212. package/dist/engine/contracts/coding_readiness_gate.d.ts.map +1 -1
  213. package/dist/engine/contracts/coding_readiness_gate.js +1 -1
  214. package/dist/engine/contracts/coding_readiness_gate.js.map +1 -1
  215. package/dist/engine/contracts/command_execution_contract.d.ts +1 -11
  216. package/dist/engine/contracts/command_execution_contract.d.ts.map +1 -1
  217. package/dist/engine/contracts/command_execution_contract.js +1 -11
  218. package/dist/engine/contracts/command_execution_contract.js.map +1 -1
  219. package/dist/engine/contracts/contract_guard.d.ts +1 -1
  220. package/dist/engine/contracts/contract_guard.d.ts.map +1 -1
  221. package/dist/engine/contracts/contract_registry/registry.d.ts.map +1 -1
  222. package/dist/engine/contracts/contract_registry/registry.js +2 -2
  223. package/dist/engine/contracts/contract_registry/registry.js.map +1 -1
  224. package/dist/engine/contracts/contract_registry/validation.js.map +1 -1
  225. package/dist/engine/contracts/contract_state_store.d.ts +2 -0
  226. package/dist/engine/contracts/contract_state_store.d.ts.map +1 -1
  227. package/dist/engine/contracts/contract_state_store.js +4 -1
  228. package/dist/engine/contracts/contract_state_store.js.map +1 -1
  229. package/dist/engine/contracts/control_plane_contract.d.ts.map +1 -1
  230. package/dist/engine/contracts/control_plane_contract.js +5 -4
  231. package/dist/engine/contracts/control_plane_contract.js.map +1 -1
  232. package/dist/engine/contracts/decision_contract.js +1 -1
  233. package/dist/engine/contracts/decision_contract.js.map +1 -1
  234. package/dist/engine/contracts/decision_workshop.d.ts.map +1 -1
  235. package/dist/engine/contracts/decision_workshop.js.map +1 -1
  236. package/dist/engine/contracts/design_artifact_pack.d.ts +3 -40
  237. package/dist/engine/contracts/design_artifact_pack.d.ts.map +1 -1
  238. package/dist/engine/contracts/design_artifact_pack.js.map +1 -1
  239. package/dist/engine/contracts/detail_discipline.d.ts.map +1 -1
  240. package/dist/engine/contracts/detail_discipline.js.map +1 -1
  241. package/dist/engine/contracts/dual_layer_mechanism_registry/validation.js +1 -1
  242. package/dist/engine/contracts/dual_layer_mechanism_registry/validation.js.map +1 -1
  243. package/dist/engine/contracts/enforcement_guard.d.ts +2 -1
  244. package/dist/engine/contracts/enforcement_guard.d.ts.map +1 -1
  245. package/dist/engine/contracts/enforcement_guard.js +1 -1
  246. package/dist/engine/contracts/enforcement_guard.js.map +1 -1
  247. package/dist/engine/contracts/escape_report.d.ts.map +1 -1
  248. package/dist/engine/contracts/escape_report.js +2 -1
  249. package/dist/engine/contracts/escape_report.js.map +1 -1
  250. package/dist/engine/contracts/evidence_grounding_contract.d.ts +2 -4
  251. package/dist/engine/contracts/evidence_grounding_contract.d.ts.map +1 -1
  252. package/dist/engine/contracts/evidence_grounding_contract.js +3 -9
  253. package/dist/engine/contracts/evidence_grounding_contract.js.map +1 -1
  254. package/dist/engine/contracts/evolution_regression_gate.d.ts +2 -0
  255. package/dist/engine/contracts/evolution_regression_gate.d.ts.map +1 -1
  256. package/dist/engine/contracts/evolution_regression_gate.js +2 -0
  257. package/dist/engine/contracts/evolution_regression_gate.js.map +1 -1
  258. package/dist/engine/contracts/existing_system_analysis.d.ts.map +1 -1
  259. package/dist/engine/contracts/existing_system_analysis.js.map +1 -1
  260. package/dist/engine/contracts/existing_system_analyzer.d.ts +9 -9
  261. package/dist/engine/contracts/existing_system_analyzer.d.ts.map +1 -1
  262. package/dist/engine/contracts/existing_system_analyzer.js +83 -80
  263. package/dist/engine/contracts/existing_system_analyzer.js.map +1 -1
  264. package/dist/engine/contracts/extension_contract.d.ts +2 -2
  265. package/dist/engine/contracts/extension_contract.d.ts.map +1 -1
  266. package/dist/engine/contracts/extension_contract.js +2 -2
  267. package/dist/engine/contracts/extension_contract.js.map +1 -1
  268. package/dist/engine/contracts/extension_scenario_definitions.d.ts +10 -0
  269. package/dist/engine/contracts/extension_scenario_definitions.d.ts.map +1 -0
  270. package/dist/engine/contracts/extension_scenario_definitions.js +112 -0
  271. package/dist/engine/contracts/extension_scenario_definitions.js.map +1 -0
  272. package/dist/engine/contracts/extension_scenario_registry.d.ts +1 -7
  273. package/dist/engine/contracts/extension_scenario_registry.d.ts.map +1 -1
  274. package/dist/engine/contracts/extension_scenario_registry.js +5 -257
  275. package/dist/engine/contracts/extension_scenario_registry.js.map +1 -1
  276. package/dist/engine/contracts/first_principles.d.ts.map +1 -1
  277. package/dist/engine/contracts/first_principles.js.map +1 -1
  278. package/dist/engine/contracts/instruction_contract.d.ts.map +1 -1
  279. package/dist/engine/contracts/instruction_contract.js +0 -6
  280. package/dist/engine/contracts/instruction_contract.js.map +1 -1
  281. package/dist/engine/contracts/local_docker_acceptance.d.ts +1 -1
  282. package/dist/engine/contracts/local_docker_acceptance.d.ts.map +1 -1
  283. package/dist/engine/contracts/local_docker_acceptance.js +4 -4
  284. package/dist/engine/contracts/local_docker_acceptance.js.map +1 -1
  285. package/dist/engine/contracts/mechanism_health_check.d.ts +2 -0
  286. package/dist/engine/contracts/mechanism_health_check.d.ts.map +1 -1
  287. package/dist/engine/contracts/mechanism_health_check.js +2 -0
  288. package/dist/engine/contracts/mechanism_health_check.js.map +1 -1
  289. package/dist/engine/contracts/metric_governance.d.ts.map +1 -1
  290. package/dist/engine/contracts/metric_governance.js.map +1 -1
  291. package/dist/engine/contracts/ood_solid_contract.js +2 -2
  292. package/dist/engine/contracts/ood_solid_contract.js.map +1 -1
  293. package/dist/engine/contracts/platform_context.d.ts +2 -0
  294. package/dist/engine/contracts/platform_context.d.ts.map +1 -1
  295. package/dist/engine/contracts/platform_context.js +2 -0
  296. package/dist/engine/contracts/platform_context.js.map +1 -1
  297. package/dist/engine/contracts/project_knowledge_contract.d.ts.map +1 -1
  298. package/dist/engine/contracts/project_knowledge_contract.js +3 -0
  299. package/dist/engine/contracts/project_knowledge_contract.js.map +1 -1
  300. package/dist/engine/contracts/route_decision_contract_verifier.js +1 -1
  301. package/dist/engine/contracts/route_decision_contract_verifier.js.map +1 -1
  302. package/dist/engine/contracts/technology_decision.d.ts.map +1 -1
  303. package/dist/engine/contracts/technology_decision.js.map +1 -1
  304. package/dist/engine/contracts/tool_invocation_contract_registry.d.ts +3 -62
  305. package/dist/engine/contracts/tool_invocation_contract_registry.d.ts.map +1 -1
  306. package/dist/engine/contracts/tool_invocation_contract_registry.js +2 -0
  307. package/dist/engine/contracts/tool_invocation_contract_registry.js.map +1 -1
  308. package/dist/engine/contracts/traceability.d.ts +2 -1
  309. package/dist/engine/contracts/traceability.d.ts.map +1 -1
  310. package/dist/engine/contracts/traceability.js +5 -5
  311. package/dist/engine/contracts/traceability.js.map +1 -1
  312. package/dist/engine/contracts/user_feedback_contract.js +2 -2
  313. package/dist/engine/contracts/user_feedback_contract.js.map +1 -1
  314. package/dist/engine/contracts/workflow_template_pack.js +1 -1
  315. package/dist/engine/contracts/workflow_template_pack.js.map +1 -1
  316. package/dist/engine/core/config_defaults.d.ts +11 -0
  317. package/dist/engine/core/config_defaults.d.ts.map +1 -0
  318. package/dist/engine/core/config_defaults.js +11 -0
  319. package/dist/engine/core/config_defaults.js.map +1 -0
  320. package/dist/engine/core/env.d.ts +12 -0
  321. package/dist/engine/core/env.d.ts.map +1 -0
  322. package/dist/engine/core/env.js +12 -0
  323. package/dist/engine/core/env.js.map +1 -0
  324. package/dist/engine/core/errors.d.ts +21 -0
  325. package/dist/engine/core/errors.d.ts.map +1 -0
  326. package/dist/engine/core/errors.js +35 -0
  327. package/dist/engine/core/errors.js.map +1 -0
  328. package/dist/engine/core/exit_codes.d.ts +14 -0
  329. package/dist/engine/core/exit_codes.d.ts.map +1 -0
  330. package/dist/engine/core/exit_codes.js +14 -0
  331. package/dist/engine/core/exit_codes.js.map +1 -0
  332. package/dist/engine/core/helpers.d.ts +15 -0
  333. package/dist/engine/core/helpers.d.ts.map +1 -1
  334. package/dist/engine/core/helpers.js +31 -0
  335. package/dist/engine/core/helpers.js.map +1 -1
  336. package/dist/engine/core/index.d.ts +15 -0
  337. package/dist/engine/core/index.d.ts.map +1 -0
  338. package/dist/engine/core/index.js +22 -0
  339. package/dist/engine/core/index.js.map +1 -0
  340. package/dist/engine/core/io_controller.d.ts +1 -0
  341. package/dist/engine/core/io_controller.d.ts.map +1 -1
  342. package/dist/engine/core/io_controller.js +18 -2
  343. package/dist/engine/core/io_controller.js.map +1 -1
  344. package/dist/engine/core/llm_gateway.d.ts +20 -3
  345. package/dist/engine/core/llm_gateway.d.ts.map +1 -1
  346. package/dist/engine/core/llm_gateway.js +95 -13
  347. package/dist/engine/core/llm_gateway.js.map +1 -1
  348. package/dist/engine/core/log_governance.d.ts.map +1 -1
  349. package/dist/engine/core/log_governance.js +4 -9
  350. package/dist/engine/core/log_governance.js.map +1 -1
  351. package/dist/engine/core/logger.d.ts.map +1 -1
  352. package/dist/engine/core/logger.js +5 -2
  353. package/dist/engine/core/logger.js.map +1 -1
  354. package/dist/engine/core/path_scope_utils.d.ts +1 -1
  355. package/dist/engine/core/path_scope_utils.d.ts.map +1 -1
  356. package/dist/engine/core/path_scope_utils.js +1 -1
  357. package/dist/engine/core/path_scope_utils.js.map +1 -1
  358. package/dist/engine/core/paths.d.ts +86 -0
  359. package/dist/engine/core/paths.d.ts.map +1 -0
  360. package/dist/engine/core/paths.js +103 -0
  361. package/dist/engine/core/paths.js.map +1 -0
  362. package/dist/engine/core/write_file_atomic.d.ts +25 -0
  363. package/dist/engine/core/write_file_atomic.d.ts.map +1 -0
  364. package/dist/engine/core/write_file_atomic.js +63 -0
  365. package/dist/engine/core/write_file_atomic.js.map +1 -0
  366. package/dist/engine/dependency_scanner.d.ts.map +1 -1
  367. package/dist/engine/dependency_scanner.js +14 -16
  368. package/dist/engine/dependency_scanner.js.map +1 -1
  369. package/dist/engine/exploration.d.ts.map +1 -1
  370. package/dist/engine/exploration.js +9 -8
  371. package/dist/engine/exploration.js.map +1 -1
  372. package/dist/engine/knowledge/chinese_semantic_priority.d.ts.map +1 -1
  373. package/dist/engine/knowledge/chinese_semantic_priority.js.map +1 -1
  374. package/dist/engine/knowledge/drift_classifier.d.ts +26 -0
  375. package/dist/engine/knowledge/drift_classifier.d.ts.map +1 -0
  376. package/dist/engine/knowledge/drift_classifier.js +82 -0
  377. package/dist/engine/knowledge/drift_classifier.js.map +1 -0
  378. package/dist/engine/knowledge/knowledge_asset_audit.d.ts.map +1 -1
  379. package/dist/engine/knowledge/knowledge_asset_audit.js.map +1 -1
  380. package/dist/engine/knowledge/knowledge_asset_consumer.d.ts.map +1 -1
  381. package/dist/engine/knowledge/knowledge_asset_consumer.js +0 -4
  382. package/dist/engine/knowledge/knowledge_asset_consumer.js.map +1 -1
  383. package/dist/engine/knowledge/knowledge_asset_generation_gate.d.ts.map +1 -1
  384. package/dist/engine/knowledge/knowledge_asset_generation_gate.js.map +1 -1
  385. package/dist/engine/knowledge/knowledge_asset_schema.d.ts.map +1 -1
  386. package/dist/engine/knowledge/knowledge_asset_schema.js +0 -3
  387. package/dist/engine/knowledge/knowledge_asset_schema.js.map +1 -1
  388. package/dist/engine/knowledge/knowledge_evolution.d.ts +1 -17
  389. package/dist/engine/knowledge/knowledge_evolution.d.ts.map +1 -1
  390. package/dist/engine/knowledge/knowledge_evolution.js +2 -74
  391. package/dist/engine/knowledge/knowledge_evolution.js.map +1 -1
  392. package/dist/engine/knowledge/knowledge_health.d.ts +44 -0
  393. package/dist/engine/knowledge/knowledge_health.d.ts.map +1 -0
  394. package/dist/engine/knowledge/knowledge_health.js +303 -0
  395. package/dist/engine/knowledge/knowledge_health.js.map +1 -0
  396. package/dist/engine/knowledge/knowledge_injection_boundary.d.ts +1 -1
  397. package/dist/engine/knowledge/knowledge_injection_boundary.d.ts.map +1 -1
  398. package/dist/engine/knowledge/knowledge_injection_boundary.js +21 -5
  399. package/dist/engine/knowledge/knowledge_injection_boundary.js.map +1 -1
  400. package/dist/engine/knowledge/knowledge_lifecycle.d.ts +4 -2
  401. package/dist/engine/knowledge/knowledge_lifecycle.d.ts.map +1 -1
  402. package/dist/engine/knowledge/knowledge_lifecycle.js +37 -27
  403. package/dist/engine/knowledge/knowledge_lifecycle.js.map +1 -1
  404. package/dist/engine/knowledge/knowledge_manager.d.ts +2 -148
  405. package/dist/engine/knowledge/knowledge_manager.d.ts.map +1 -1
  406. package/dist/engine/knowledge/knowledge_manager.js +4 -933
  407. package/dist/engine/knowledge/knowledge_manager.js.map +1 -1
  408. package/dist/engine/knowledge/knowledge_scenario_registry.d.ts +1 -1
  409. package/dist/engine/knowledge/knowledge_scenario_registry.d.ts.map +1 -1
  410. package/dist/engine/knowledge/knowledge_scenario_registry.js +6 -6
  411. package/dist/engine/knowledge/knowledge_scenario_registry.js.map +1 -1
  412. package/dist/engine/knowledge/knowledge_sovereignty.js +2 -2
  413. package/dist/engine/knowledge/knowledge_sovereignty.js.map +1 -1
  414. package/dist/engine/knowledge/knowledge_writer.d.ts +108 -0
  415. package/dist/engine/knowledge/knowledge_writer.d.ts.map +1 -0
  416. package/dist/engine/knowledge/knowledge_writer.js +637 -0
  417. package/dist/engine/knowledge/knowledge_writer.js.map +1 -0
  418. package/dist/engine/knowledge/language_policy.d.ts +1 -1
  419. package/dist/engine/knowledge/language_policy.js +1 -1
  420. package/dist/engine/knowledge/release_compatibility.d.ts.map +1 -1
  421. package/dist/engine/knowledge/release_compatibility.js.map +1 -1
  422. package/dist/engine/migration_guard.js +4 -4
  423. package/dist/engine/migration_guard.js.map +1 -1
  424. package/dist/engine/onboarding.d.ts +1 -1
  425. package/dist/engine/onboarding.d.ts.map +1 -1
  426. package/dist/engine/onboarding.js +4 -1
  427. package/dist/engine/onboarding.js.map +1 -1
  428. package/dist/engine/pipeline/conflict_gate.js +1 -1
  429. package/dist/engine/pipeline/conflict_gate.js.map +1 -1
  430. package/dist/engine/pipeline/diff_ownership.d.ts.map +1 -1
  431. package/dist/engine/pipeline/diff_ownership.js +7 -0
  432. package/dist/engine/pipeline/diff_ownership.js.map +1 -1
  433. package/dist/engine/pipeline/diff_ownership_store.d.ts.map +1 -1
  434. package/dist/engine/pipeline/diff_ownership_store.js +8 -6
  435. package/dist/engine/pipeline/diff_ownership_store.js.map +1 -1
  436. package/dist/engine/pipeline/expand_pipeline.d.ts +2 -1
  437. package/dist/engine/pipeline/expand_pipeline.d.ts.map +1 -1
  438. package/dist/engine/pipeline/expand_pipeline.js.map +1 -1
  439. package/dist/engine/pipeline/input_material_contract_registry.d.ts +1 -1
  440. package/dist/engine/pipeline/input_material_contract_registry.d.ts.map +1 -1
  441. package/dist/engine/pipeline/input_material_contract_registry.js +44 -43
  442. package/dist/engine/pipeline/input_material_contract_registry.js.map +1 -1
  443. package/dist/engine/pipeline/input_material_extractor.js +3 -3
  444. package/dist/engine/pipeline/input_material_extractor.js.map +1 -1
  445. package/dist/engine/pipeline/intent_expander/expand.d.ts +6 -6
  446. package/dist/engine/pipeline/intent_expander/expand.d.ts.map +1 -1
  447. package/dist/engine/pipeline/intent_expander/expand.js +57 -50
  448. package/dist/engine/pipeline/intent_expander/expand.js.map +1 -1
  449. package/dist/engine/pipeline/intent_expander/helpers.d.ts +6 -4
  450. package/dist/engine/pipeline/intent_expander/helpers.d.ts.map +1 -1
  451. package/dist/engine/pipeline/intent_expander/helpers.js +4 -4
  452. package/dist/engine/pipeline/intent_expander/helpers.js.map +1 -1
  453. package/dist/engine/pipeline/intent_expander/index.d.ts +4 -4
  454. package/dist/engine/pipeline/intent_expander/index.js +8 -8
  455. package/dist/engine/pipeline/intent_expander/index.js.map +1 -1
  456. package/dist/engine/pipeline/intent_expander/knowledge.d.ts.map +1 -1
  457. package/dist/engine/pipeline/intent_expander/knowledge.js.map +1 -1
  458. package/dist/engine/pipeline/intent_expander/knowledge_resolution.d.ts +12 -9
  459. package/dist/engine/pipeline/intent_expander/knowledge_resolution.d.ts.map +1 -1
  460. package/dist/engine/pipeline/intent_expander/knowledge_resolution.js +11 -11
  461. package/dist/engine/pipeline/intent_expander/knowledge_resolution.js.map +1 -1
  462. package/dist/engine/pipeline/intent_expander/privacy_gates.d.ts +68 -6
  463. package/dist/engine/pipeline/intent_expander/privacy_gates.d.ts.map +1 -1
  464. package/dist/engine/pipeline/intent_expander/privacy_gates.js +94 -21
  465. package/dist/engine/pipeline/intent_expander/privacy_gates.js.map +1 -1
  466. package/dist/engine/pipeline/intent_expander/scope_acceptance.d.ts +37 -3
  467. package/dist/engine/pipeline/intent_expander/scope_acceptance.d.ts.map +1 -1
  468. package/dist/engine/pipeline/intent_expander/scope_acceptance.js +1 -1
  469. package/dist/engine/pipeline/intent_expander/scope_acceptance.js.map +1 -1
  470. package/dist/engine/pipeline/intent_expander/templates.d.ts +2 -1
  471. package/dist/engine/pipeline/intent_expander/templates.d.ts.map +1 -1
  472. package/dist/engine/pipeline/intent_expander/templates.js.map +1 -1
  473. package/dist/engine/pipeline/intent_expander/types.d.ts +35 -5
  474. package/dist/engine/pipeline/intent_expander/types.d.ts.map +1 -1
  475. package/dist/engine/pipeline/intent_expander/uncertainty_circuit.d.ts +4 -3
  476. package/dist/engine/pipeline/intent_expander/uncertainty_circuit.d.ts.map +1 -1
  477. package/dist/engine/pipeline/intent_expander/uncertainty_circuit.js +1 -1
  478. package/dist/engine/pipeline/intent_expander/uncertainty_circuit.js.map +1 -1
  479. package/dist/engine/pipeline/intent_expander.d.ts +2 -2
  480. package/dist/engine/pipeline/intent_expander.js +6 -6
  481. package/dist/engine/pipeline/intent_expander.js.map +1 -1
  482. package/dist/engine/pipeline/intent_route_scorer.d.ts +2 -2
  483. package/dist/engine/pipeline/intent_route_scorer.d.ts.map +1 -1
  484. package/dist/engine/pipeline/intent_route_scorer.js +3 -3
  485. package/dist/engine/pipeline/intent_route_scorer.js.map +1 -1
  486. package/dist/engine/pipeline/intent_router.d.ts +4 -5
  487. package/dist/engine/pipeline/intent_router.d.ts.map +1 -1
  488. package/dist/engine/pipeline/intent_router.js +64 -112
  489. package/dist/engine/pipeline/intent_router.js.map +1 -1
  490. package/dist/engine/pipeline/intent_signal_extractor.d.ts +18 -0
  491. package/dist/engine/pipeline/intent_signal_extractor.d.ts.map +1 -1
  492. package/dist/engine/pipeline/intent_signal_extractor.js +8 -8
  493. package/dist/engine/pipeline/intent_signal_extractor.js.map +1 -1
  494. package/dist/engine/pipeline/job_manager.d.ts.map +1 -1
  495. package/dist/engine/pipeline/job_manager.js +18 -4
  496. package/dist/engine/pipeline/job_manager.js.map +1 -1
  497. package/dist/engine/pipeline/plan_proposal_gate.d.ts.map +1 -1
  498. package/dist/engine/pipeline/plan_proposal_gate.js +0 -1
  499. package/dist/engine/pipeline/plan_proposal_gate.js.map +1 -1
  500. package/dist/engine/pipeline/route_types.d.ts +10 -0
  501. package/dist/engine/pipeline/route_types.d.ts.map +1 -0
  502. package/dist/engine/pipeline/route_types.js +9 -0
  503. package/dist/engine/pipeline/route_types.js.map +1 -0
  504. package/dist/engine/pipeline/scope_controller.d.ts +1 -1
  505. package/dist/engine/pipeline/scope_controller.d.ts.map +1 -1
  506. package/dist/engine/pipeline/scope_controller.js +18 -17
  507. package/dist/engine/pipeline/scope_controller.js.map +1 -1
  508. package/dist/engine/pipeline/scope_lease.d.ts.map +1 -1
  509. package/dist/engine/pipeline/scope_lease.js +3 -1
  510. package/dist/engine/pipeline/scope_lease.js.map +1 -1
  511. package/dist/engine/pipeline/slice_executor.d.ts +1 -1
  512. package/dist/engine/pipeline/slice_executor.d.ts.map +1 -1
  513. package/dist/engine/pipeline/slice_executor.js +1 -1
  514. package/dist/engine/pipeline/slice_executor.js.map +1 -1
  515. package/dist/engine/pipeline/stage_gate_engine.d.ts +2 -0
  516. package/dist/engine/pipeline/stage_gate_engine.d.ts.map +1 -1
  517. package/dist/engine/pipeline/stage_gate_engine.js +9 -3
  518. package/dist/engine/pipeline/stage_gate_engine.js.map +1 -1
  519. package/dist/engine/pipeline/stale_current_task_detector.d.ts.map +1 -1
  520. package/dist/engine/pipeline/stale_current_task_detector.js +8 -5
  521. package/dist/engine/pipeline/stale_current_task_detector.js.map +1 -1
  522. package/dist/engine/pipeline/task_context/cleanup.d.ts.map +1 -1
  523. package/dist/engine/pipeline/task_context/cleanup.js +4 -1
  524. package/dist/engine/pipeline/task_context/cleanup.js.map +1 -1
  525. package/dist/engine/pipeline/task_context/expansion_privacy.d.ts +1 -3
  526. package/dist/engine/pipeline/task_context/expansion_privacy.d.ts.map +1 -1
  527. package/dist/engine/pipeline/task_context/expansion_privacy.js +1 -1
  528. package/dist/engine/pipeline/task_context/expansion_privacy.js.map +1 -1
  529. package/dist/engine/pipeline/task_context/manager.d.ts +4 -4
  530. package/dist/engine/pipeline/task_context/manager.d.ts.map +1 -1
  531. package/dist/engine/pipeline/task_context/manager.js +25 -13
  532. package/dist/engine/pipeline/task_context/manager.js.map +1 -1
  533. package/dist/engine/pipeline/task_context/manager_setters.d.ts +3 -3
  534. package/dist/engine/pipeline/task_context/manager_setters.d.ts.map +1 -1
  535. package/dist/engine/pipeline/task_context/manager_setters.js.map +1 -1
  536. package/dist/engine/pipeline/task_context/status_transitions.d.ts.map +1 -1
  537. package/dist/engine/pipeline/task_context/status_transitions.js +4 -3
  538. package/dist/engine/pipeline/task_context/status_transitions.js.map +1 -1
  539. package/dist/engine/pipeline/task_planner.js +3 -4
  540. package/dist/engine/pipeline/task_planner.js.map +1 -1
  541. package/dist/engine/pipeline/workspace_lease.d.ts +10 -1
  542. package/dist/engine/pipeline/workspace_lease.d.ts.map +1 -1
  543. package/dist/engine/pipeline/workspace_lease.js +29 -3
  544. package/dist/engine/pipeline/workspace_lease.js.map +1 -1
  545. package/dist/engine/pipeline/workspace_resumer.d.ts.map +1 -1
  546. package/dist/engine/pipeline/workspace_resumer.js +3 -0
  547. package/dist/engine/pipeline/workspace_resumer.js.map +1 -1
  548. package/dist/engine/release/foundation_scenario_registry.d.ts +1 -1
  549. package/dist/engine/release/foundation_scenario_registry.d.ts.map +1 -1
  550. package/dist/engine/release/foundation_scenario_registry.js +3 -2
  551. package/dist/engine/release/foundation_scenario_registry.js.map +1 -1
  552. package/dist/engine/release/foundation_scenario_runners.d.ts.map +1 -1
  553. package/dist/engine/release/foundation_scenario_runners.js +40 -33
  554. package/dist/engine/release/foundation_scenario_runners.js.map +1 -1
  555. package/dist/engine/release/gate_checks/checkControlPlaneTrust.d.ts +2 -2
  556. package/dist/engine/release/gate_checks/checkControlPlaneTrust.d.ts.map +1 -1
  557. package/dist/engine/release/gate_checks/checkControlPlaneTrust.js +3 -2
  558. package/dist/engine/release/gate_checks/checkControlPlaneTrust.js.map +1 -1
  559. package/dist/engine/release/gate_checks/checkCriticalProblemConsumption.d.ts.map +1 -1
  560. package/dist/engine/release/gate_checks/checkCriticalProblemConsumption.js +3 -3
  561. package/dist/engine/release/gate_checks/checkCriticalProblemConsumption.js.map +1 -1
  562. package/dist/engine/release/gate_checks/checkDependencyAudit.d.ts.map +1 -1
  563. package/dist/engine/release/gate_checks/checkDependencyAudit.js +8 -3
  564. package/dist/engine/release/gate_checks/checkDependencyAudit.js.map +1 -1
  565. package/dist/engine/release/gate_checks/checkDistFreshness.d.ts.map +1 -1
  566. package/dist/engine/release/gate_checks/checkDistFreshness.js +4 -2
  567. package/dist/engine/release/gate_checks/checkDistFreshness.js.map +1 -1
  568. package/dist/engine/release/gate_checks/checkKnowledgeAssetSchemaP0.d.ts +1 -1
  569. package/dist/engine/release/gate_checks/checkKnowledgeAssetSchemaP0.d.ts.map +1 -1
  570. package/dist/engine/release/gate_checks/checkKnowledgeAssetSchemaP0.js +1 -1
  571. package/dist/engine/release/gate_checks/checkKnowledgeAssetSchemaP0.js.map +1 -1
  572. package/dist/engine/release/gate_checks/checkMainlineConsumption.js +2 -2
  573. package/dist/engine/release/gate_checks/checkMainlineConsumption.js.map +1 -1
  574. package/dist/engine/release/gate_checks/{check_npm_pack.d.ts → checkNpmPack.d.ts} +1 -1
  575. package/dist/engine/release/gate_checks/checkNpmPack.d.ts.map +1 -0
  576. package/dist/engine/release/gate_checks/{check_npm_pack.js → checkNpmPack.js} +5 -7
  577. package/dist/engine/release/gate_checks/checkNpmPack.js.map +1 -0
  578. package/dist/engine/release/gate_checks/checkTemplateKnowledgeHygiene.d.ts.map +1 -1
  579. package/dist/engine/release/gate_checks/checkTemplateKnowledgeHygiene.js +4 -3
  580. package/dist/engine/release/gate_checks/checkTemplateKnowledgeHygiene.js.map +1 -1
  581. package/dist/engine/release/gate_checks/checkWorkflowNavigation.d.ts.map +1 -1
  582. package/dist/engine/release/gate_checks/checkWorkflowNavigation.js +58 -4
  583. package/dist/engine/release/gate_checks/checkWorkflowNavigation.js.map +1 -1
  584. package/dist/engine/release/gate_checks/helpers.d.ts.map +1 -1
  585. package/dist/engine/release/gate_checks/helpers.js +2 -1
  586. package/dist/engine/release/gate_checks/helpers.js.map +1 -1
  587. package/dist/engine/release/index.d.ts +6 -0
  588. package/dist/engine/release/index.d.ts.map +1 -0
  589. package/dist/engine/release/index.js +6 -0
  590. package/dist/engine/release/index.js.map +1 -0
  591. package/dist/engine/release/release_gate_scenario_registry.d.ts.map +1 -1
  592. package/dist/engine/release/release_gate_scenario_registry.js.map +1 -1
  593. package/dist/engine/release/release_issue_scenario_registry/registry.d.ts.map +1 -1
  594. package/dist/engine/release/release_issue_scenario_registry/registry.js +4 -1
  595. package/dist/engine/release/release_issue_scenario_registry/registry.js.map +1 -1
  596. package/dist/engine/release/release_issue_scenario_registry/scenarios_architecture_workshop.js +38 -19
  597. package/dist/engine/release/release_issue_scenario_registry/scenarios_architecture_workshop.js.map +1 -1
  598. package/dist/engine/release/release_issue_scenario_registry/scenarios_code_observability.d.ts.map +1 -1
  599. package/dist/engine/release/release_issue_scenario_registry/scenarios_code_observability.js +3 -2
  600. package/dist/engine/release/release_issue_scenario_registry/scenarios_code_observability.js.map +1 -1
  601. package/dist/engine/release/release_issue_scenario_registry/scenarios_decision_workshop.d.ts.map +1 -1
  602. package/dist/engine/release/release_issue_scenario_registry/scenarios_decision_workshop.js +50 -26
  603. package/dist/engine/release/release_issue_scenario_registry/scenarios_decision_workshop.js.map +1 -1
  604. package/dist/engine/release/release_issue_scenario_registry/scenarios_design_pack.d.ts.map +1 -1
  605. package/dist/engine/release/release_issue_scenario_registry/scenarios_design_pack.js +12 -6
  606. package/dist/engine/release/release_issue_scenario_registry/scenarios_design_pack.js.map +1 -1
  607. package/dist/engine/release/release_issue_scenario_registry/scenarios_template_contract.d.ts.map +1 -1
  608. package/dist/engine/release/release_issue_scenario_registry/scenarios_template_contract.js +26 -13
  609. package/dist/engine/release/release_issue_scenario_registry/scenarios_template_contract.js.map +1 -1
  610. package/dist/engine/release/release_issue_scenario_registry/scenarios_template_visibility.d.ts.map +1 -1
  611. package/dist/engine/release/release_issue_scenario_registry/scenarios_template_visibility.js +14 -8
  612. package/dist/engine/release/release_issue_scenario_registry/scenarios_template_visibility.js.map +1 -1
  613. package/dist/engine/release/release_issue_scenario_registry/scenarios_workflow_navigation.d.ts +12 -0
  614. package/dist/engine/release/release_issue_scenario_registry/scenarios_workflow_navigation.d.ts.map +1 -0
  615. package/dist/engine/release/release_issue_scenario_registry/scenarios_workflow_navigation.js +147 -0
  616. package/dist/engine/release/release_issue_scenario_registry/scenarios_workflow_navigation.js.map +1 -0
  617. package/dist/engine/release/release_issue_scenario_registry/workshop_helpers.d.ts +24 -40
  618. package/dist/engine/release/release_issue_scenario_registry/workshop_helpers.d.ts.map +1 -1
  619. package/dist/engine/release/release_issue_scenario_registry/workshop_helpers.js +12 -6
  620. package/dist/engine/release/release_issue_scenario_registry/workshop_helpers.js.map +1 -1
  621. package/dist/engine/release/release_readiness_gate.d.ts +3 -1
  622. package/dist/engine/release/release_readiness_gate.d.ts.map +1 -1
  623. package/dist/engine/release/release_readiness_gate.js +47 -4
  624. package/dist/engine/release/release_readiness_gate.js.map +1 -1
  625. package/dist/engine/release/release_tool_harness.d.ts +18 -5
  626. package/dist/engine/release/release_tool_harness.d.ts.map +1 -1
  627. package/dist/engine/release/release_tool_harness.js +15 -7
  628. package/dist/engine/release/release_tool_harness.js.map +1 -1
  629. package/dist/engine/release/types.d.ts +81 -0
  630. package/dist/engine/release/types.d.ts.map +1 -0
  631. package/dist/engine/release/types.js +7 -0
  632. package/dist/engine/release/types.js.map +1 -0
  633. package/dist/engine/release/verifier.d.ts.map +1 -1
  634. package/dist/engine/release/verifier.js +1 -1
  635. package/dist/engine/release/verifier.js.map +1 -1
  636. package/dist/engine/team_awareness.d.ts +1 -1
  637. package/dist/engine/team_awareness.d.ts.map +1 -1
  638. package/dist/engine/team_awareness.js.map +1 -1
  639. package/dist/engine/templates/asset_manifest.d.ts +1 -1
  640. package/dist/engine/templates/asset_manifest.d.ts.map +1 -1
  641. package/dist/engine/templates/asset_manifest.js +1 -2
  642. package/dist/engine/templates/asset_manifest.js.map +1 -1
  643. package/dist/engine/templates/consumption_trace_store.d.ts +2 -1
  644. package/dist/engine/templates/consumption_trace_store.d.ts.map +1 -1
  645. package/dist/engine/templates/consumption_trace_store.js +0 -6
  646. package/dist/engine/templates/consumption_trace_store.js.map +1 -1
  647. package/dist/engine/templates/explicit_asset_registry/index.js +14 -14
  648. package/dist/engine/templates/explicit_asset_registry/index.js.map +1 -1
  649. package/dist/engine/templates/observed_consumption.d.ts.map +1 -1
  650. package/dist/engine/templates/observed_consumption.js +1 -1
  651. package/dist/engine/templates/observed_consumption.js.map +1 -1
  652. package/dist/engine/templates/scaffolder.js +2 -2
  653. package/dist/engine/templates/scaffolder.js.map +1 -1
  654. package/dist/engine/templates/standard_asset_coverage.js +1 -1
  655. package/dist/engine/templates/standard_asset_coverage.js.map +1 -1
  656. package/dist/engine/templates/template_asset_contract_registry.d.ts +1 -1
  657. package/dist/engine/templates/template_asset_contract_registry.d.ts.map +1 -1
  658. package/dist/engine/templates/template_asset_contract_registry.js +1 -2
  659. package/dist/engine/templates/template_asset_contract_registry.js.map +1 -1
  660. package/dist/engine/templates/template_asset_visibility.js +0 -17
  661. package/dist/engine/templates/template_asset_visibility.js.map +1 -1
  662. package/dist/engine/templates/template_init_sync.d.ts.map +1 -1
  663. package/dist/engine/templates/template_init_sync.js +9 -11
  664. package/dist/engine/templates/template_init_sync.js.map +1 -1
  665. package/dist/engine/templates/template_manifest_io.d.ts.map +1 -1
  666. package/dist/engine/templates/template_manifest_io.js +3 -2
  667. package/dist/engine/templates/template_manifest_io.js.map +1 -1
  668. package/dist/engine/templates/template_sync.d.ts.map +1 -1
  669. package/dist/engine/templates/template_sync.js.map +1 -1
  670. package/dist/engine/templates/workflow_rule_generator.d.ts +1 -1
  671. package/dist/engine/templates/workflow_rule_generator.d.ts.map +1 -1
  672. package/dist/engine/templates/workflow_rule_generator.js +1 -1
  673. package/dist/engine/templates/workflow_rule_generator.js.map +1 -1
  674. package/dist/engine/workflow/index.d.ts +10 -0
  675. package/dist/engine/workflow/index.d.ts.map +1 -0
  676. package/dist/engine/workflow/index.js +12 -0
  677. package/dist/engine/workflow/index.js.map +1 -0
  678. package/dist/engine/workflow/legacy_type_migration.d.ts +4 -3
  679. package/dist/engine/workflow/legacy_type_migration.d.ts.map +1 -1
  680. package/dist/engine/workflow/legacy_type_migration.js +6 -5
  681. package/dist/engine/workflow/legacy_type_migration.js.map +1 -1
  682. package/dist/engine/workflow/next_action_planner.d.ts +2 -2
  683. package/dist/engine/workflow/next_action_planner.d.ts.map +1 -1
  684. package/dist/engine/workflow/next_action_planner.js +70 -21
  685. package/dist/engine/workflow/next_action_planner.js.map +1 -1
  686. package/dist/engine/workflow/project_stage_detector.d.ts.map +1 -1
  687. package/dist/engine/workflow/project_stage_detector.js +28 -13
  688. package/dist/engine/workflow/project_stage_detector.js.map +1 -1
  689. package/dist/engine/workflow/workflow_navigation_contract.d.ts +8 -1
  690. package/dist/engine/workflow/workflow_navigation_contract.d.ts.map +1 -1
  691. package/dist/engine/workflow/workflow_navigation_contract.js +0 -1
  692. package/dist/engine/workflow/workflow_navigation_contract.js.map +1 -1
  693. package/dist/{engine/core → git}/git_deps.d.ts +3 -1
  694. package/dist/git/git_deps.d.ts.map +1 -0
  695. package/dist/{engine/core → git}/git_deps.js +2 -2
  696. package/dist/git/git_deps.js.map +1 -0
  697. package/dist/index.js +6 -2
  698. package/dist/index.js.map +1 -1
  699. package/dist/knowledge/conflict_detector.d.ts +14 -0
  700. package/dist/knowledge/conflict_detector.d.ts.map +1 -1
  701. package/dist/knowledge/conflict_detector.js +67 -0
  702. package/dist/knowledge/conflict_detector.js.map +1 -1
  703. package/dist/knowledge/health_checker.d.ts.map +1 -1
  704. package/dist/knowledge/health_checker.js +17 -8
  705. package/dist/knowledge/health_checker.js.map +1 -1
  706. package/dist/knowledge/index_manager.d.ts +3 -0
  707. package/dist/knowledge/index_manager.d.ts.map +1 -1
  708. package/dist/knowledge/index_manager.js +82 -40
  709. package/dist/knowledge/index_manager.js.map +1 -1
  710. package/dist/knowledge/loader.d.ts.map +1 -1
  711. package/dist/knowledge/loader.js +14 -5
  712. package/dist/knowledge/loader.js.map +1 -1
  713. package/dist/knowledge/writer.d.ts.map +1 -1
  714. package/dist/knowledge/writer.js +2 -1
  715. package/dist/knowledge/writer.js.map +1 -1
  716. package/dist/server/index.d.ts +2 -2
  717. package/dist/server/index.d.ts.map +1 -1
  718. package/dist/server/index.js +14 -18
  719. package/dist/server/index.js.map +1 -1
  720. package/dist/server/lifecycle.d.ts +4 -2
  721. package/dist/server/lifecycle.d.ts.map +1 -1
  722. package/dist/server/lifecycle.js +6 -11
  723. package/dist/server/lifecycle.js.map +1 -1
  724. package/dist/server/tools/cep_assessment.d.ts.map +1 -1
  725. package/dist/server/tools/cep_assessment.js +6 -6
  726. package/dist/server/tools/cep_assessment.js.map +1 -1
  727. package/dist/server/tools/gate_checks.d.ts +4 -2
  728. package/dist/server/tools/gate_checks.d.ts.map +1 -1
  729. package/dist/server/tools/gate_checks.js.map +1 -1
  730. package/dist/server/tools/index.d.ts.map +1 -1
  731. package/dist/server/tools/index.js +37 -1
  732. package/dist/server/tools/index.js.map +1 -1
  733. package/dist/server/tools/lazy_loaders.d.ts +1 -1
  734. package/dist/server/tools/lazy_loaders.d.ts.map +1 -1
  735. package/dist/server/tools/lazy_loaders.js +2 -2
  736. package/dist/server/tools/lazy_loaders.js.map +1 -1
  737. package/dist/server/tools/middleware.d.ts +22 -2
  738. package/dist/server/tools/middleware.d.ts.map +1 -1
  739. package/dist/server/tools/middleware.js +55 -22
  740. package/dist/server/tools/middleware.js.map +1 -1
  741. package/dist/server/tools/schemas.d.ts +2 -2
  742. package/dist/server/tools/tool_groups/admin.d.ts.map +1 -1
  743. package/dist/server/tools/tool_groups/admin.js +5 -4
  744. package/dist/server/tools/tool_groups/admin.js.map +1 -1
  745. package/dist/server/tools/tool_groups/auxiliary.js +4 -4
  746. package/dist/server/tools/tool_groups/auxiliary.js.map +1 -1
  747. package/dist/server/tools/tool_groups/classify_expand.d.ts.map +1 -1
  748. package/dist/server/tools/tool_groups/classify_expand.js +4 -869
  749. package/dist/server/tools/tool_groups/classify_expand.js.map +1 -1
  750. package/dist/server/tools/tool_groups/classify_handler.d.ts +3 -0
  751. package/dist/server/tools/tool_groups/classify_handler.d.ts.map +1 -0
  752. package/dist/server/tools/tool_groups/classify_handler.js +65 -0
  753. package/dist/server/tools/tool_groups/classify_handler.js.map +1 -0
  754. package/dist/server/tools/tool_groups/expand_handler.d.ts +3 -0
  755. package/dist/server/tools/tool_groups/expand_handler.d.ts.map +1 -0
  756. package/dist/server/tools/tool_groups/expand_handler.js +819 -0
  757. package/dist/server/tools/tool_groups/expand_handler.js.map +1 -0
  758. package/dist/server/tools/tool_groups/knowledge.js +2 -2
  759. package/dist/server/tools/tool_groups/knowledge.js.map +1 -1
  760. package/dist/server/tools/tool_groups/scaffold_accept_deliver.js +1 -1
  761. package/dist/server/tools/tool_groups/scaffold_accept_deliver.js.map +1 -1
  762. package/dist/server/tools/tool_groups/status_plan_analyze_review.js +5 -5
  763. package/dist/server/tools/tool_groups/status_plan_analyze_review.js.map +1 -1
  764. package/dist/server/tools/tool_groups/verify_learn.d.ts.map +1 -1
  765. package/dist/server/tools/tool_groups/verify_learn.js +6 -11
  766. package/dist/server/tools/tool_groups/verify_learn.js.map +1 -1
  767. package/dist/server/tools/tool_names.d.ts +55 -0
  768. package/dist/server/tools/tool_names.d.ts.map +1 -0
  769. package/dist/server/tools/tool_names.js +62 -0
  770. package/dist/server/tools/tool_names.js.map +1 -0
  771. package/dist/server/tools/utils.d.ts.map +1 -1
  772. package/dist/server/tools/utils.js +5 -11
  773. package/dist/server/tools/utils.js.map +1 -1
  774. package/dist/types/base.d.ts +2 -0
  775. package/dist/types/base.d.ts.map +1 -1
  776. package/dist/types/config.d.ts +2 -0
  777. package/dist/types/config.d.ts.map +1 -1
  778. package/dist/types/delivery.d.ts +44 -1
  779. package/dist/types/delivery.d.ts.map +1 -1
  780. package/dist/types/knowledge.d.ts +3 -1
  781. package/dist/types/knowledge.d.ts.map +1 -1
  782. package/dist/types/knowledge.js.map +1 -1
  783. package/dist/types/pipeline.d.ts +151 -14
  784. package/dist/types/pipeline.d.ts.map +1 -1
  785. package/dist/types/task.d.ts +103 -38
  786. package/dist/types/task.d.ts.map +1 -1
  787. package/package.json +7 -3
  788. package/templates/internal/rules//351/205/215/347/275/256/344/274/230/345/205/210/347/272/247/350/247/204/345/210/231.md +11 -1
  789. package/dist/engine/audit/audit_verifier.d.ts +0 -52
  790. package/dist/engine/audit/audit_verifier.d.ts.map +0 -1
  791. package/dist/engine/audit/audit_verifier.js +0 -101
  792. package/dist/engine/audit/audit_verifier.js.map +0 -1
  793. package/dist/engine/contracts/policy_drift_detector.d.ts +0 -72
  794. package/dist/engine/contracts/policy_drift_detector.d.ts.map +0 -1
  795. package/dist/engine/contracts/policy_drift_detector.js +0 -277
  796. package/dist/engine/contracts/policy_drift_detector.js.map +0 -1
  797. package/dist/engine/core/git_deps.d.ts.map +0 -1
  798. package/dist/engine/core/git_deps.js.map +0 -1
  799. package/dist/engine/release/gate_checks/check_npm_pack.d.ts.map +0 -1
  800. package/dist/engine/release/gate_checks/check_npm_pack.js.map +0 -1
  801. package/dist/engine/state_update_bypass.d.ts +0 -19
  802. package/dist/engine/state_update_bypass.d.ts.map +0 -1
  803. package/dist/engine/state_update_bypass.js +0 -17
  804. package/dist/engine/state_update_bypass.js.map +0 -1
@@ -1,934 +1,5 @@
1
- import fs from "node:fs/promises";
2
- import fss from "node:fs";
3
- import path from "node:path";
4
- import matter from "gray-matter";
5
- import { KnowledgeWriter } from "../../knowledge/writer.js";
6
- import { debug } from "../core/logger.js";
7
- /**
8
- * 审计知识库健康度。
9
- * 检查五个维度: 陈旧条目、重复触发词、格式规范、类型覆盖、内容完整度。
10
- * @param knowledgeIndex - 知识索引管理器
11
- * @param config - 项目配置
12
- * @returns 审计结果,包含发现项和统计摘要
13
- */
14
- export async function auditKnowledge(knowledgeIndex, config) {
15
- debug("知识审计", "开始审计知识库健康度");
16
- const { global: globalEntries, project: projectEntries } = knowledgeIndex.getAllEntries();
17
- const all = [...globalEntries, ...projectEntries];
18
- const findings = [];
19
- const now = Date.now();
20
- let findingId = 0;
21
- // 1. 陈旧条目: 超过 90 天未使用或从未被匹配
22
- for (const entry of all) {
23
- if (entry.status === "deprecated")
24
- continue;
25
- if (entry.usage_count === 0) {
26
- findings.push({
27
- id: `AUD-${String(++findingId).padStart(3, "0")}`,
28
- severity: "info",
29
- category: "stale",
30
- entry_name: entry.name,
31
- message: `从未被匹配使用: ${entry.name}`,
32
- suggestion: "检查 when 触发词是否覆盖实际场景,或标记为 deprecated",
33
- });
34
- }
35
- else if (entry.last_used_at) {
36
- const daysSinceUse = (now - new Date(entry.last_used_at).getTime()) / (1000 * 60 * 60 * 24);
37
- if (daysSinceUse > 90) {
38
- findings.push({
39
- id: `AUD-${String(++findingId).padStart(3, "0")}`,
40
- severity: "warning",
41
- category: "stale",
42
- entry_name: entry.name,
43
- message: `超过 ${Math.floor(daysSinceUse)} 天未被使用: ${entry.name}`,
44
- suggestion: "评估是否仍需要,考虑更新触发词或标记为 deprecated",
45
- });
46
- }
47
- }
48
- }
49
- // 2. 重复检查: 相似触发词
50
- for (let i = 0; i < all.length; i++) {
51
- for (let j = i + 1; j < all.length; j++) {
52
- if (all[i].type !== all[j].type)
53
- continue;
54
- const overlap = keywordOverlap(all[i].when, all[j].when);
55
- if (overlap >= 0.6) {
56
- findings.push({
57
- id: `AUD-${String(++findingId).padStart(3, "0")}`,
58
- severity: "info",
59
- category: "duplicate",
60
- entry_name: `${all[i].name} / ${all[j].name}`,
61
- message: `触发词高度重叠 (${Math.round(overlap * 100)}%): "${all[i].name}" 和 "${all[j].name}"`,
62
- suggestion: "考虑合并或区分触发词",
63
- });
64
- }
65
- }
66
- }
67
- // 3. 格式检查: 缺失必需的 frontmatter 字段 + Schema 验证
68
- for (const entry of all) {
69
- if (entry.status === "deprecated")
70
- continue;
71
- const issues = [];
72
- if (!entry.when || entry.when.trim().length === 0)
73
- issues.push("when");
74
- if (!entry.scope || entry.scope.length === 0)
75
- issues.push("scope");
76
- if (!entry.products || entry.products.length === 0)
77
- issues.push("products");
78
- if (issues.length > 0) {
79
- findings.push({
80
- id: `AUD-${String(++findingId).padStart(3, "0")}`,
81
- severity: "warning",
82
- category: "format",
83
- entry_name: entry.name,
84
- message: `缺少必需字段: ${issues.join(", ")}`,
85
- suggestion: `补充 ${issues.join("、")} 字段`,
86
- });
87
- }
88
- // 3b. Schema 验证: 读取原始文件进行深度检查
89
- const schemaIssues = await validateFormatSchema(entry);
90
- for (const issue of schemaIssues) {
91
- findings.push({
92
- id: `AUD-${String(++findingId).padStart(3, "0")}`,
93
- severity: "info",
94
- category: "format",
95
- entry_name: entry.name,
96
- message: issue.message,
97
- suggestion: issue.suggestion,
98
- });
99
- }
100
- }
101
- // 4. 覆盖度检查: 确保各知识类型都有条目
102
- const requiredTypes = ["pattern", "procedure", "domain", "review_rule"];
103
- for (const type of requiredTypes) {
104
- const count = all.filter((e) => e.type === type && e.status !== "deprecated").length;
105
- if (count === 0) {
106
- findings.push({
107
- id: `AUD-${String(++findingId).padStart(3, "0")}`,
108
- severity: "warning",
109
- category: "coverage",
110
- entry_name: `type=${type}`,
111
- message: `缺少 ${type} 类型的知识条目`,
112
- suggestion: `新增至少一个 ${type} 条目`,
113
- });
114
- }
115
- }
116
- // 5. 完整度检查: 检查规则/验收项数量是否达到类型阈值
117
- for (const entry of all) {
118
- if (entry.status === "deprecated")
119
- continue;
120
- if (!entry.file_path || !fss.existsSync(entry.file_path))
121
- continue;
122
- const thresholds = COMPLETENESS_THRESHOLDS[entry.type];
123
- if (!thresholds)
124
- continue;
125
- let raw;
126
- try {
127
- raw = await fs.readFile(entry.file_path, "utf-8");
128
- }
129
- catch {
130
- continue;
131
- }
132
- const { content: body } = matter(raw);
133
- for (const check of thresholds) {
134
- const count = countPattern(body, check.pattern);
135
- if (count < check.minimum) {
136
- findings.push({
137
- id: `AUD-${String(++findingId).padStart(3, "0")}`,
138
- severity: "info",
139
- category: "completeness",
140
- entry_name: entry.name,
141
- message: `${entry.type} 条目"${entry.name}"的 ${check.field} 不足:实际 ${count} 条,要求 ≥ ${check.minimum} 条`,
142
- suggestion: `运行 sf_knowledge_update 补充 ${check.field},或调用 sf_knowledge_add 的 auto_enrich 机制自动探索行业最佳实践`,
143
- });
144
- }
145
- }
146
- }
147
- const summary = {
148
- stale: findings.filter((f) => f.category === "stale").length,
149
- duplicate: findings.filter((f) => f.category === "duplicate").length,
150
- format: findings.filter((f) => f.category === "format").length,
151
- coverage: findings.filter((f) => f.category === "coverage").length,
152
- completeness: findings.filter((f) => f.category === "completeness").length,
153
- design_drift: 0,
154
- };
155
- debug("知识审计", `完成,共 ${findings.length} 项发现`);
156
- return {
157
- total_entries: all.filter((e) => e.status !== "deprecated").length,
158
- findings,
159
- summary,
160
- audited_at: new Date().toISOString(),
161
- };
162
- }
163
- /**
164
- * 新增知识条目。
165
- * 根据类型生成对应的模板内容,保存到草稿目录或正式目录。
166
- * @param input - 新增知识条目输入
167
- * @param config - 项目配置
168
- * @returns 新增结果,包含文件路径和消息
169
- */
170
- export async function addKnowledge(input, config) {
171
- debug("知识管理", `新增知识条目「${input.title}」[${input.type}]`);
172
- const knowledgeDir = getProjectKnowledgeDir(config);
173
- const fileName = `${path.basename(input.title)}.md`; // basename 防止路径穿越
174
- // 确定保存位置
175
- const typeDir = getTypeDirectory(input.type);
176
- const draftsDir = path.join(knowledgeDir, "drafts");
177
- const targetDir = input.save_to_drafts !== false
178
- ? draftsDir
179
- : path.join(knowledgeDir, typeDir);
180
- // 确保目录存在
181
- await fs.mkdir(targetDir, { recursive: true });
182
- const filePath = path.join(targetDir, fileName);
183
- // 检查文件是否已存在
184
- if (fss.existsSync(filePath)) {
185
- return {
186
- success: false,
187
- file_path: filePath,
188
- is_draft: input.save_to_drafts !== false,
189
- message: `文件已存在: ${filePath},请使用 sf_knowledge_update 更新`,
190
- };
191
- }
192
- // 生成内容
193
- const content = generateKnowledgeContent(input);
194
- await fs.writeFile(filePath, content, "utf-8");
195
- const enrichment_guide = input.auto_enrich !== false
196
- ? buildEnrichmentGuide(input)
197
- : undefined;
198
- debug("知识管理", `知识条目已保存到 ${filePath}`);
199
- return {
200
- success: true,
201
- file_path: filePath,
202
- is_draft: input.save_to_drafts !== false,
203
- message: input.save_to_drafts !== false
204
- ? `知识条目草稿已保存到: ${filePath}\n人工 review 后可移至正式目录: ${path.join(knowledgeDir, typeDir, fileName)}`
205
- : `知识条目已保存到: ${filePath}`,
206
- enrichment_guide,
207
- };
208
- }
209
- /**
210
- * 更新已有的知识条目。
211
- * 更新前自动创建备份,支持修改触发条件、状态、决策规则和验收标准。
212
- * @param input - 更新输入参数
213
- * @param knowledgeIndex - 知识索引管理器
214
- * @param config - 项目配置
215
- * @returns 更新结果,包含文件路径和备份路径
216
- */
217
- export async function updateKnowledge(input, knowledgeIndex, config) {
218
- debug("知识管理", `更新知识条目「${input.entry_name}」`);
219
- const entry = knowledgeIndex.getEntry(input.entry_name)
220
- ?? knowledgeIndex.getAllEntries().global.find((e) => e.name === input.entry_name)
221
- ?? knowledgeIndex.getAllEntries().project.find((e) => e.name === input.entry_name);
222
- if (!entry) {
223
- debug("知识管理", `未找到知识条目「${input.entry_name}」`);
224
- return {
225
- success: false,
226
- file_path: "",
227
- backup_path: "",
228
- message: `未找到知识条目: ${input.entry_name}`,
229
- };
230
- }
231
- const filePath = entry.file_path;
232
- // 维度6: 知识目录隔离 — 禁止更新 core/ 只读目录中的条目
233
- if (KnowledgeWriter.isCorePath(filePath)) {
234
- debug("知识管理", `「${input.entry_name}」位于 core/ 只读目录,禁止自动更新`);
235
- return {
236
- success: false,
237
- file_path: filePath,
238
- backup_path: "",
239
- message: `知识隔离: "${entry.name}" 位于 core/ 只读目录,禁止自动更新。需人工手动维护`,
240
- };
241
- }
242
- if (!fss.existsSync(filePath)) {
243
- return {
244
- success: false,
245
- file_path: filePath,
246
- backup_path: "",
247
- message: `文件不存在: ${filePath}`,
248
- };
249
- }
250
- // 读取并解析文件
251
- const raw = await fs.readFile(filePath, "utf-8");
252
- const { data: frontmatter, content: body } = matter(raw);
253
- // 创建备份
254
- const backupDir = path.join(path.dirname(filePath), ".backups");
255
- await fs.mkdir(backupDir, { recursive: true });
256
- const backupPath = path.join(backupDir, `${entry.name}-${Date.now()}.md`);
257
- await fs.writeFile(backupPath, raw, "utf-8");
258
- // 应用更新
259
- let updated = false;
260
- if (input.updates.when_triggers) {
261
- frontmatter.when = input.updates.when_triggers;
262
- updated = true;
263
- }
264
- if (input.updates.status) {
265
- frontmatter.status = input.updates.status;
266
- updated = true;
267
- }
268
- let newBody = body;
269
- if (input.updates.add_decision_rules?.length) {
270
- const rulesSection = input.updates.add_decision_rules
271
- .map((r) => `- ${r}`)
272
- .join("\n");
273
- if (newBody.includes("## 决策规则")) {
274
- newBody = newBody.replace(/## 决策规则\n/, `## 决策规则\n${rulesSection}\n`);
275
- }
276
- else {
277
- newBody += `\n\n## 决策规则\n${rulesSection}\n`;
278
- }
279
- updated = true;
280
- }
281
- if (input.updates.add_acceptance_criteria?.length) {
282
- const acSection = input.updates.add_acceptance_criteria
283
- .map((ac, i) => `- [AC-${String(i + 1).padStart(2, "0")}] ${ac}`)
284
- .join("\n");
285
- if (newBody.includes("## 验收项")) {
286
- newBody = newBody.replace(/## 验收项\n/, `## 验收项\n${acSection}\n`);
287
- }
288
- else {
289
- newBody += `\n\n## 验收项\n${acSection}\n`;
290
- }
291
- updated = true;
292
- }
293
- if (!updated) {
294
- return {
295
- success: false,
296
- file_path: filePath,
297
- backup_path: backupPath,
298
- message: "未提供任何更新内容",
299
- };
300
- }
301
- // 写入更新后的文件
302
- const output = matter.stringify(newBody, frontmatter);
303
- await fs.writeFile(filePath, output, "utf-8");
304
- debug("知识管理", `知识条目「${input.entry_name}」已更新,备份: ${backupPath}`);
305
- return {
306
- success: true,
307
- file_path: filePath,
308
- backup_path: backupPath,
309
- message: `知识条目已更新: ${filePath}\n备份: ${backupPath}`,
310
- };
311
- }
312
- // ── 格式 Schema ──
313
- /** 规范的 frontmatter 字段顺序 */
314
- const CANONICAL_FM_ORDER = ["name", "type", "when", "scope", "products"];
315
- /** 各知识类型的格式规范定义 */
316
- const FORMAT_SCHEMA = {
317
- pattern: {
318
- required_headings: ["## 决策规则", "## 验收项"],
319
- },
320
- domain: {
321
- required_headings: ["## 业务规则", "## 约束条件", "## 例外情况", "## 关联模式"],
322
- },
323
- procedure: {
324
- required_headings: ["## 适用场景", "## 步骤", "## 检查点", "## 注意事项"],
325
- },
326
- pipeline_procedure: {
327
- required_headings: [],
328
- partial_match_headings: ["### 第"],
329
- },
330
- review_rule: {
331
- required_headings: [],
332
- partial_match_headings: ["pattern:", "severity:", "description:"],
333
- },
334
- acceptance_template: {
335
- required_headings: [],
336
- },
337
- };
338
- /** 各知识类型的完整度阈值(字段名、匹配正则、最小数量) */
339
- const COMPLETENESS_THRESHOLDS = {
340
- pattern: [
341
- { field: "决策规则", pattern: /^- /gm, minimum: 5 },
342
- { field: "验收项", pattern: /^- \[AC-/gm, minimum: 3 },
343
- ],
344
- domain: [
345
- { field: "业务规则", pattern: /^(?:- |\d+\.)/gm, minimum: 6 },
346
- ],
347
- procedure: [
348
- { field: "步骤", pattern: /^\d+\.\s/gm, minimum: 5 },
349
- { field: "检查点", pattern: /^- \[ \]/gm, minimum: 3 },
350
- ],
351
- pipeline_procedure: [
352
- { field: "阶段", pattern: /^### 第\d+步/gm, minimum: 3 },
353
- ],
354
- review_rule: [
355
- { field: "规则", pattern: /^## [A-Z]+-\d+/gm, minimum: 5 },
356
- ],
357
- };
358
- /**
359
- * 统计正则匹配数量。
360
- * @param body - 文本内容
361
- * @param pattern - 正则表达式
362
- * @returns 匹配数量
363
- */
364
- function countPattern(body, pattern) {
365
- return (body.match(pattern) ?? []).length;
366
- }
367
- /**
368
- * 验证知识条目的格式 Schema 规范。
369
- * 检查 frontmatter 字段顺序、when 字段风格、body 必需标题。
370
- * @param entry - 知识条目
371
- * @returns 格式问题列表
372
- */
373
- async function validateFormatSchema(entry) {
374
- const results = [];
375
- if (!entry.file_path || !fss.existsSync(entry.file_path))
376
- return results;
377
- let raw;
378
- try {
379
- raw = await fs.readFile(entry.file_path, "utf-8");
380
- }
381
- catch {
382
- return results;
383
- }
384
- const { data: fm, content: body } = matter(raw);
385
- // 检查 frontmatter 字段顺序
386
- const fmKeys = Object.keys(fm);
387
- const orderIssues = [];
388
- for (let i = 0; i < CANONICAL_FM_ORDER.length; i++) {
389
- const expected = CANONICAL_FM_ORDER[i];
390
- if (i < fmKeys.length && fmKeys[i] !== expected) {
391
- orderIssues.push(`期望第 ${i + 1} 个字段为 ${expected},实际为 ${fmKeys[i]}`);
392
- break;
393
- }
394
- }
395
- if (orderIssues.length > 0) {
396
- results.push({
397
- message: `frontmatter 字段顺序不规范: ${orderIssues[0]}`,
398
- suggestion: `标准顺序: ${CANONICAL_FM_ORDER.join(" → ")}`,
399
- });
400
- }
401
- // 检查 when 字段风格: 第一个逗号分隔段应 ≤ 10 个中文字符
402
- const whenStr = fm.when ?? "";
403
- const firstSegment = whenStr.split(/[,\s,]/)[0] ?? "";
404
- const chineseCharCount = (firstSegment.match(/[一-鿿]/g) ?? []).length;
405
- if (chineseCharCount > 10 && firstSegment.length > 12) {
406
- results.push({
407
- message: `when 字段首个触发词过长(${chineseCharCount} 个中文字符),疑似描述性短语: "${firstSegment}"`,
408
- suggestion: "when 应为纯关键词逗号分隔,如: 数据导出, CSV, Excel, 批量导出",
409
- });
410
- }
411
- // 检查 body 标题
412
- const schema = FORMAT_SCHEMA[entry.type];
413
- if (schema) {
414
- for (const heading of schema.required_headings) {
415
- if (!body.includes(heading)) {
416
- results.push({
417
- message: `body 缺少必需标题: ${heading}(type=${entry.type})`,
418
- suggestion: `按格式规约补充 ${heading} 部分`,
419
- });
420
- }
421
- }
422
- if (schema.partial_match_headings) {
423
- for (const partial of schema.partial_match_headings) {
424
- if (!body.includes(partial)) {
425
- results.push({
426
- message: `body 缺少必需内容: "${partial}"(type=${entry.type})`,
427
- suggestion: `按格式规约补充包含 "${partial}" 的内容`,
428
- });
429
- }
430
- }
431
- }
432
- }
433
- return results;
434
- }
435
- // ── 辅助函数 ──
436
- /**
437
- * 计算两个关键词字符串的重叠度。
438
- * @param a - 第一个关键词字符串
439
- * @param b - 第二个关键词字符串
440
- * @returns 重叠度(0-1),1 表示完全重叠
441
- */
442
- function keywordOverlap(a, b) {
443
- const wordsA = new Set(a.toLowerCase().split(/[,\s,]+/).filter(Boolean));
444
- const wordsB = new Set(b.toLowerCase().split(/[,\s,]+/).filter(Boolean));
445
- if (wordsA.size === 0 || wordsB.size === 0)
446
- return 0;
447
- let overlap = 0;
448
- for (const w of wordsA) {
449
- if (wordsB.has(w))
450
- overlap++;
451
- }
452
- return overlap / Math.min(wordsA.size, wordsB.size);
453
- }
454
- /**
455
- * 根据知识类型获取存储目录名。
456
- * @param type - 知识条目类型
457
- * @returns 目录名
458
- */
459
- function getTypeDirectory(type) {
460
- const map = {
461
- pattern: "patterns/temp",
462
- procedure: "procedures",
463
- pipeline_procedure: "procedures",
464
- domain: "domain",
465
- acceptance_template: "acceptance_templates",
466
- review_rule: "review_rules",
467
- };
468
- return map[type] ?? "procedures";
469
- }
470
- /**
471
- * 生成知识条目的 frontmatter 文本。
472
- * @param input - 新增知识条目输入
473
- * @returns frontmatter 文本
474
- */
475
- function generateFrontmatter(input) {
476
- return `---
477
- name: ${input.title}
478
- type: ${input.type}
479
- when: "${input.when_triggers}"
480
- scope: [${input.scope.join(", ")}]
481
- products: ["*"]
482
- ---`;
483
- }
484
- /**
485
- * 生成知识条目的完整内容(frontmatter + body)。
486
- * 根据类型选择对应的 body 生成器。
487
- * @param input - 新增知识条目输入
488
- * @returns 完整的 Markdown 文件内容
489
- */
490
- function generateKnowledgeContent(input) {
491
- const fm = generateFrontmatter(input);
492
- const generators = {
493
- pattern: () => generatePatternBody(input),
494
- domain: () => generateDomainBody(input),
495
- procedure: () => generateProcedureBody(input),
496
- pipeline_procedure: () => generatePipelineBody(input),
497
- review_rule: () => generateReviewRuleBody(input),
498
- acceptance_template: () => generateAcceptanceBody(input),
499
- };
500
- const gen = generators[input.type] ?? generators.pattern;
501
- return `${fm}\n\n${gen()}\n`;
502
- }
503
- /**
504
- * 生成 pattern 类型知识条目的 body 内容。
505
- * @param input - 新增知识条目输入
506
- * @returns body 文本
507
- */
508
- function generatePatternBody(input) {
509
- const rules = input.decision_rules
510
- ? input.decision_rules.split("\n").filter(Boolean).map((r) => `- ${r}`).join("\n")
511
- : "- (待补充决策规则)";
512
- return `## 决策规则
513
- ${rules}
514
-
515
- ## 验收项
516
- - [AC-01] (待补充验收标准)`;
517
- }
518
- /**
519
- * 生成 domain 类型知识条目的 body 内容。
520
- * @param input - 新增知识条目输入
521
- * @returns body 文本
522
- */
523
- function generateDomainBody(input) {
524
- const rules = input.decision_rules
525
- ? input.decision_rules.split("\n").filter(Boolean).map((r) => `${r}`).join("\n\n")
526
- : "(待补充业务规则)";
527
- return `## 业务规则
528
- ${rules}
529
-
530
- ## 约束条件
531
- - (待补充约束条件)
532
-
533
- ## 例外情况
534
- - (待补充例外情况)
535
-
536
- ## 关联模式
537
- - (待补充关联模式)`;
538
- }
539
- /**
540
- * 生成 procedure 类型知识条目的 body 内容。
541
- * @param input - 新增知识条目输入
542
- * @returns body 文本
543
- */
544
- function generateProcedureBody(input) {
545
- return `## 适用场景
546
- (待补充适用场景描述)
547
-
548
- ## 步骤
549
- 1. (待补充步骤)
550
-
551
- ## 检查点
552
- - [ ] (待补充检查点)
553
-
554
- ## 注意事项
555
- - (待补充注意事项)`;
556
- }
557
- /**
558
- * 生成 pipeline_procedure 类型知识条目的 body 内容。
559
- * @param input - 新增知识条目输入
560
- * @returns body 文本
561
- */
562
- function generatePipelineBody(input) {
563
- return `# ${input.title}
564
-
565
- ### 第1步:定义阶段
566
- (待补充阶段描述)
567
- 产出保存到:.soloforge/output/01-产出.md
568
- 工具:sf_classify, sf_expand
569
-
570
- ### 第2步:执行阶段
571
- (待补充阶段描述)
572
- 工具:sf_verify`;
573
- }
574
- /**
575
- * 生成 review_rule 类型知识条目的 body 内容。
576
- * @param input - 新增知识条目输入
577
- * @returns body 文本
578
- */
579
- function generateReviewRuleBody(input) {
580
- const code = input.title.toUpperCase().replace(/-/g, "").slice(0, 3);
581
- return `## ${code}-01: (待补充规则标题)
582
- pattern: /(待补充正则)/
583
- severity: warning
584
- scope: ${input.scope.join(", ")}
585
- description: (待补充规则描述)`;
586
- }
587
- /**
588
- * 生成 acceptance_template 类型知识条目的 body 内容。
589
- * @param input - 新增知识条目输入
590
- * @returns body 文本
591
- */
592
- function generateAcceptanceBody(input) {
593
- return `# ${input.title}
594
-
595
- ## 1. (待补充章节标题)
596
- (待补充内容)
597
-
598
- ## 2. (待补充章节标题)
599
- (待补充内容)`;
600
- }
601
- // ── 自动丰富指南 ──
602
- /**
603
- * 从标题中提取可读的主题名称。
604
- * @param title - 知识条目标题(含连字符/下划线)
605
- * @returns 格式化后的主题名称
606
- */
607
- function extractTopicFromTitle(title) {
608
- return title.split(/[-_]/).map((w) => w.charAt(0).toUpperCase() + w.slice(1)).join(" ");
609
- }
610
- /**
611
- * 根据知识类型构建对应的自动丰富指南。
612
- * @param input - 新增知识条目输入
613
- * @returns 自动丰富指南
614
- */
615
- function buildEnrichmentGuide(input) {
616
- const builders = {
617
- pattern: () => buildPatternGuide(input),
618
- domain: () => buildDomainGuide(input),
619
- procedure: () => buildProcedureGuide(input),
620
- pipeline_procedure: () => buildPipelineGuide(input),
621
- review_rule: () => buildReviewRuleGuide(input),
622
- acceptance_template: () => buildAcceptanceGuide(input),
623
- };
624
- return builders[input.type]();
625
- }
626
- /**
627
- * 构建 pattern 类型的自动丰富指南。
628
- * @param input - 新增知识条目输入
629
- * @returns 丰富指南
630
- */
631
- function buildPatternGuide(input) {
632
- const topic = extractTopicFromTitle(input.title);
633
- return {
634
- entry_name: input.title,
635
- type: "pattern",
636
- overview: `从行业最佳实践中提取"${topic}"领域的决策规则和验收标准。规则应具体、可操作、可验证,覆盖安全、性能、可维护性等维度。`,
637
- steps: [
638
- {
639
- step_number: 1,
640
- action: `搜索"${topic}"的最佳实践、常见陷阱和反模式`,
641
- search_queries: [`${topic} best practices software development`, `${topic} common mistakes anti-patterns`, `${topic} production checklist enterprise`],
642
- focus_areas: ["常见错误", "性能陷阱", "安全风险", "可维护性"],
643
- },
644
- {
645
- step_number: 2,
646
- action: `从搜索结果中提取至少 5 条决策规则`,
647
- search_queries: [`${topic} coding guidelines ${input.scope.join(" ")}`, `${topic} design patterns enterprise java`],
648
- focus_areas: ["规则具体性", "可操作性", "互斥性"],
649
- },
650
- {
651
- step_number: 3,
652
- action: "为每条规则设计可验证的验收标准(AC)",
653
- focus_areas: ["可自动化检查", "明确的通过/失败标准"],
654
- },
655
- {
656
- step_number: 4,
657
- action: `调用 sf_knowledge_update 将探索到的规则和验收项写入文件`,
658
- focus_areas: ["使用 add_decision_rules 和 add_acceptance_criteria 参数"],
659
- },
660
- ],
661
- authoritative_sources: [
662
- "OWASP Cheat Sheet Series — 安全相关模式",
663
- "Google Engineering Practices (google.github.io/eng-practices) — 代码评审实践",
664
- "Alibaba Java Development Manual — Java 开发最佳实践",
665
- "Martin Fowler's Patterns Catalog — 设计模式",
666
- "Microsoft API Guidelines — API 设计模式",
667
- ],
668
- completeness_thresholds: [
669
- { field: "decision_rules", minimum: 5 },
670
- { field: "acceptance_criteria", minimum: 3 },
671
- ],
672
- update_call_template: `sf_knowledge_update(entry_name="${input.title}", add_decision_rules=[规则1, 规则2, ...], add_acceptance_criteria=[标准1, 标准2, ...])`,
673
- };
674
- }
675
- /**
676
- * 构建 domain 类型的自动丰富指南。
677
- * @param input - 新增知识条目输入
678
- * @returns 丰富指南
679
- */
680
- function buildDomainGuide(input) {
681
- const topic = extractTopicFromTitle(input.title);
682
- return {
683
- entry_name: input.title,
684
- type: "domain",
685
- overview: `研究"${topic}"领域的行业标准和监管要求,提取业务规则、约束条件、例外情况和关联模式。`,
686
- steps: [
687
- {
688
- step_number: 1,
689
- action: `搜索"${topic}"领域的行业标准和法规要求`,
690
- search_queries: [`${topic} business rules industry standard`, `${topic} compliance regulatory requirements`, `${topic} domain driven design`],
691
- focus_areas: ["行业法规", "合规要求", "业务约束"],
692
- },
693
- {
694
- step_number: 2,
695
- action: "提取核心业务规则(什么必须为真、什么不能发生)",
696
- focus_areas: ["业务规则", "状态约束", "数据完整性"],
697
- },
698
- {
699
- step_number: 3,
700
- action: "识别技术约束和操作约束",
701
- focus_areas: ["性能约束", "安全约束", "容量约束"],
702
- },
703
- {
704
- step_number: 4,
705
- action: "列举例外场景和边界条件",
706
- focus_areas: ["边缘场景", "特殊条件", "豁免情况"],
707
- },
708
- {
709
- step_number: 5,
710
- action: `调用 sf_knowledge_update 将探索到的内容写入文件`,
711
- focus_areas: ["使用 add_decision_rules 写入业务规则"],
712
- },
713
- ],
714
- authoritative_sources: [
715
- "OWASP — 安全相关领域",
716
- "PCI-DSS — 支付相关领域",
717
- "GDPR / 个人信息保护法 — 数据隐私领域",
718
- "Domain-Driven Design (Eric Evans) — 领域建模",
719
- "行业特定标准(HIPAA/SOX/ISO 27001)",
720
- ],
721
- completeness_thresholds: [
722
- { field: "business_rules", minimum: 6 },
723
- { field: "constraints", minimum: 4 },
724
- { field: "exceptions", minimum: 2 },
725
- { field: "related_patterns", minimum: 1 },
726
- ],
727
- update_call_template: `sf_knowledge_update(entry_name="${input.title}", add_decision_rules=[业务规则1, 业务规则2, ...])`,
728
- };
729
- }
730
- /**
731
- * 构建 procedure 类型的自动丰富指南。
732
- * @param input - 新增知识条目输入
733
- * @returns 丰富指南
734
- */
735
- function buildProcedureGuide(input) {
736
- const topic = extractTopicFromTitle(input.title);
737
- return {
738
- entry_name: input.title,
739
- type: "procedure",
740
- overview: `研究"${topic}"的标准操作流程,拆分为有序步骤、检查点和注意事项。`,
741
- steps: [
742
- {
743
- step_number: 1,
744
- action: `搜索"${topic}"的标准流程和行业实践`,
745
- search_queries: [`${topic} standard procedure workflow`, `${topic} step by step guide`, `${topic} operational best practices`],
746
- focus_areas: ["标准流程", "关键步骤", "验证节点"],
747
- },
748
- {
749
- step_number: 2,
750
- action: "将流程拆分为有序的原子步骤",
751
- focus_areas: ["步骤顺序", "步骤原子性", "输入输出明确"],
752
- },
753
- {
754
- step_number: 3,
755
- action: "在关键节点设计检查点(验证门禁)",
756
- focus_areas: ["质量门禁", "可验证条件"],
757
- },
758
- {
759
- step_number: 4,
760
- action: "识别常见陷阱和注意事项",
761
- focus_areas: ["常见错误", "风险点", "最佳实践"],
762
- },
763
- {
764
- step_number: 5,
765
- action: `调用 sf_knowledge_update 将步骤内容写入文件`,
766
- focus_areas: ["使用 add_decision_rules 写入步骤和注意事项"],
767
- },
768
- ],
769
- authoritative_sources: [
770
- "Google SRE Book — 运维流程实践",
771
- "CI/CD Pipeline Best Practices — 部署发布流程",
772
- "Git Workflow Guides — 代码管理流程",
773
- "OWASP Secure Development Lifecycle — 安全开发流程",
774
- ],
775
- completeness_thresholds: [
776
- { field: "steps", minimum: 5 },
777
- { field: "checkpoints", minimum: 3 },
778
- { field: "notes", minimum: 3 },
779
- ],
780
- update_call_template: `sf_knowledge_update(entry_name="${input.title}", add_decision_rules=[步骤内容, 注意事项, ...])`,
781
- };
782
- }
783
- /**
784
- * 构建 pipeline_procedure 类型的自动丰富指南。
785
- * @param input - 新增知识条目输入
786
- * @returns 丰富指南
787
- */
788
- function buildPipelineGuide(input) {
789
- const topic = extractTopicFromTitle(input.title);
790
- return {
791
- entry_name: input.title,
792
- type: "pipeline_procedure",
793
- overview: `设计"${topic}"的多阶段流水线,明确每个阶段的工具、产出和检查点。`,
794
- steps: [
795
- {
796
- step_number: 1,
797
- action: `搜索"${topic}"相关的流水线或工作流设计`,
798
- search_queries: [`${topic} pipeline workflow design`, `${topic} multi-phase process`],
799
- focus_areas: ["阶段划分", "阶段边界", "入口/出口条件"],
800
- },
801
- {
802
- step_number: 2,
803
- action: "为每个阶段映射具体的 SoloForge 工具(sf_classify, sf_expand, sf_verify 等)",
804
- focus_areas: ["工具选择", "工具参数"],
805
- },
806
- {
807
- step_number: 3,
808
- action: "定义每个阶段的产出物和保存路径",
809
- focus_areas: ["产出格式", "路径规范"],
810
- },
811
- {
812
- step_number: 4,
813
- action: `调用 sf_knowledge_update 将阶段内容写入文件`,
814
- focus_areas: ["使用 add_decision_rules 写入阶段定义"],
815
- },
816
- ],
817
- authoritative_sources: [
818
- "CI/CD Pipeline Best Practices",
819
- "Google SRE Release Engineering",
820
- "GitHub Actions Workflow Patterns",
821
- ],
822
- completeness_thresholds: [
823
- { field: "phases", minimum: 3 },
824
- { field: "tools_per_phase", minimum: 1 },
825
- ],
826
- update_call_template: `sf_knowledge_update(entry_name="${input.title}", add_decision_rules=[阶段定义1, 阶段定义2, ...])`,
827
- };
828
- }
829
- /**
830
- * 构建 review_rule 类型的自动丰富指南。
831
- * @param input - 新增知识条目输入
832
- * @returns 丰富指南
833
- */
834
- function buildReviewRuleGuide(input) {
835
- const topic = extractTopicFromTitle(input.title);
836
- return {
837
- entry_name: input.title,
838
- type: "review_rule",
839
- overview: `研究"${topic}"相关的代码质量问题,定义正则匹配规则、严重级别和描述。规则需覆盖安全、性能、质量维度。`,
840
- steps: [
841
- {
842
- step_number: 1,
843
- action: `搜索"${topic}"相关的常见代码质量问题和安全漏洞`,
844
- search_queries: [`${topic} code review checklist`, `${topic} static analysis rules`, `${topic} common vulnerabilities patterns`],
845
- focus_areas: ["代码异味", "安全漏洞模式", "性能反模式"],
846
- },
847
- {
848
- step_number: 2,
849
- action: "为每个问题定义可匹配的正则表达式(pattern)",
850
- focus_areas: ["正则精确性", "误报率控制", "覆盖变体"],
851
- },
852
- {
853
- step_number: 3,
854
- action: "分配严重级别(critical/warning/info)并编写描述",
855
- focus_areas: ["严重度合理性", "描述清晰性", "修复建议"],
856
- },
857
- {
858
- step_number: 4,
859
- action: `调用 sf_knowledge_update 将规则写入文件`,
860
- focus_areas: ["使用 add_decision_rules 写入规则定义"],
861
- },
862
- ],
863
- authoritative_sources: [
864
- "OWASP Code Review Guide — 安全审查规则",
865
- "ESLint / PMD / Checkstyle Rule Catalogs — 静态分析规则",
866
- "Google Style Guides — 代码风格规则",
867
- "Alibaba Java Development Manual — Java 规则",
868
- "SonarQube Rule Definitions — 质量规则",
869
- ],
870
- completeness_thresholds: [
871
- { field: "rules", minimum: 5 },
872
- { field: "critical_rules", minimum: 1 },
873
- ],
874
- update_call_template: `sf_knowledge_update(entry_name="${input.title}", add_decision_rules=[规则定义1, 规则定义2, ...])`,
875
- };
876
- }
877
- /**
878
- * 构建 acceptance_template 类型的自动丰富指南。
879
- * @param input - 新增知识条目输入
880
- * @returns 丰富指南
881
- */
882
- function buildAcceptanceGuide(input) {
883
- const topic = extractTopicFromTitle(input.title);
884
- return {
885
- entry_name: input.title,
886
- type: "acceptance_template",
887
- overview: `研究"${topic}"的行业标准验收门禁,设计覆盖安全、性能、质量维度的验收清单,每个验收项需包含可执行的检查命令。`,
888
- steps: [
889
- {
890
- step_number: 1,
891
- action: `搜索"${topic}"的质量门禁和验收标准`,
892
- search_queries: [`${topic} acceptance criteria checklist`, `${topic} quality gate verification`, `${topic} production readiness review`],
893
- focus_areas: ["安全验收", "性能验收", "功能验收", "合规验收"],
894
- },
895
- {
896
- step_number: 2,
897
- action: "为每个验收项设计可执行的检查命令(grep/find/test 命令)",
898
- focus_areas: ["命令可执行性", "结果可判定性"],
899
- },
900
- {
901
- step_number: 3,
902
- action: "确保验收项覆盖安全(≥2项)和质量(≥2项)维度",
903
- focus_areas: ["安全覆盖", "质量覆盖", "独立性"],
904
- },
905
- {
906
- step_number: 4,
907
- action: `调用 sf_knowledge_update 将验收项写入文件`,
908
- focus_areas: ["使用 add_acceptance_criteria 写入验收项"],
909
- },
910
- ],
911
- authoritative_sources: [
912
- "OWASP ASVS (Application Security Verification Standard) — 安全验收",
913
- "Microsoft Security Development Lifecycle — 安全开发验收",
914
- "Google Engineering Practices — 代码质量验收",
915
- "IEEE Software Quality Standards — 软件质量标准",
916
- ],
917
- completeness_thresholds: [
918
- { field: "acceptance_criteria", minimum: 10 },
919
- { field: "security_acs", minimum: 2 },
920
- { field: "check_commands", minimum: 10 },
921
- ],
922
- update_call_template: `sf_knowledge_update(entry_name="${input.title}", add_acceptance_criteria=[验收项1, 验收项2, ...])`,
923
- };
924
- }
925
- /**
926
- * 获取项目知识库目录路径。
927
- * @param config - 项目配置
928
- * @returns 知识库目录的绝对路径
929
- */
930
- function getProjectKnowledgeDir(config) {
931
- const projectDir = config._projectPath ?? process.cwd();
932
- return path.join(projectDir, ".soloforge", "knowledge");
933
- }
1
+ // 健康检查(审计)
2
+ export { auditKnowledge } from "./knowledge_health.js";
3
+ // 写入(新增/更新)
4
+ export { addKnowledge, updateKnowledge } from "./knowledge_writer.js";
934
5
  //# sourceMappingURL=knowledge_manager.js.map