soloforge 1.2.7 → 1.2.9

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 (406) hide show
  1. package/README.md +105 -321
  2. package/dist/adapters/claude_code/claude_md.d.ts +5 -0
  3. package/dist/adapters/claude_code/claude_md.d.ts.map +1 -1
  4. package/dist/adapters/claude_code/claude_md.js +6 -0
  5. package/dist/adapters/claude_code/claude_md.js.map +1 -1
  6. package/dist/adapters/claude_code/hooks.d.ts +4 -0
  7. package/dist/adapters/claude_code/hooks.d.ts.map +1 -1
  8. package/dist/adapters/claude_code/hooks.js +5 -0
  9. package/dist/adapters/claude_code/hooks.js.map +1 -1
  10. package/dist/adapters/claude_code/server.d.ts.map +1 -1
  11. package/dist/adapters/claude_code/server.js +9 -21
  12. package/dist/adapters/claude_code/server.js.map +1 -1
  13. package/dist/adapters/claude_code/tools.d.ts +5 -0
  14. package/dist/adapters/claude_code/tools.d.ts.map +1 -1
  15. package/dist/adapters/claude_code/tools.js +619 -205
  16. package/dist/adapters/claude_code/tools.js.map +1 -1
  17. package/dist/adapters/codex/codex_config.d.ts +9 -0
  18. package/dist/adapters/codex/codex_config.d.ts.map +1 -1
  19. package/dist/adapters/codex/codex_config.js +11 -3
  20. package/dist/adapters/codex/codex_config.js.map +1 -1
  21. package/dist/adapters/codex/codex_rules.d.ts +5 -0
  22. package/dist/adapters/codex/codex_rules.d.ts.map +1 -1
  23. package/dist/adapters/codex/codex_rules.js +8 -1
  24. package/dist/adapters/codex/codex_rules.js.map +1 -1
  25. package/dist/adapters/shared/workflow_template.d.ts +5 -0
  26. package/dist/adapters/shared/workflow_template.d.ts.map +1 -1
  27. package/dist/adapters/shared/workflow_template.js +32 -79
  28. package/dist/adapters/shared/workflow_template.js.map +1 -1
  29. package/dist/adapters/trae/trae_config.d.ts +4 -0
  30. package/dist/adapters/trae/trae_config.d.ts.map +1 -1
  31. package/dist/adapters/trae/trae_config.js +5 -7
  32. package/dist/adapters/trae/trae_config.js.map +1 -1
  33. package/dist/adapters/trae/trae_rules.d.ts +5 -0
  34. package/dist/adapters/trae/trae_rules.d.ts.map +1 -1
  35. package/dist/adapters/trae/trae_rules.js +7 -1
  36. package/dist/adapters/trae/trae_rules.js.map +1 -1
  37. package/dist/bin/config_commands.d.ts +33 -0
  38. package/dist/bin/config_commands.d.ts.map +1 -0
  39. package/dist/bin/config_commands.js +222 -0
  40. package/dist/bin/config_commands.js.map +1 -0
  41. package/dist/bin/soloforge.js +609 -119
  42. package/dist/bin/soloforge.js.map +1 -1
  43. package/dist/engine/artifact_contract_registry.d.ts +138 -0
  44. package/dist/engine/artifact_contract_registry.d.ts.map +1 -0
  45. package/dist/engine/artifact_contract_registry.js +427 -0
  46. package/dist/engine/artifact_contract_registry.js.map +1 -0
  47. package/dist/engine/audit_pool.d.ts +40 -0
  48. package/dist/engine/audit_pool.d.ts.map +1 -1
  49. package/dist/engine/audit_pool.js +37 -1
  50. package/dist/engine/audit_pool.js.map +1 -1
  51. package/dist/engine/audit_sampler.d.ts +5 -0
  52. package/dist/engine/audit_sampler.d.ts.map +1 -1
  53. package/dist/engine/audit_sampler.js +6 -0
  54. package/dist/engine/audit_sampler.js.map +1 -1
  55. package/dist/engine/audit_verifier.d.ts.map +1 -1
  56. package/dist/engine/audit_verifier.js +5 -1
  57. package/dist/engine/audit_verifier.js.map +1 -1
  58. package/dist/engine/batch1_manifest.d.ts +61 -0
  59. package/dist/engine/batch1_manifest.d.ts.map +1 -0
  60. package/dist/engine/batch1_manifest.js +220 -0
  61. package/dist/engine/batch1_manifest.js.map +1 -0
  62. package/dist/engine/batch1_reality_gate.d.ts +40 -0
  63. package/dist/engine/batch1_reality_gate.d.ts.map +1 -0
  64. package/dist/engine/batch1_reality_gate.js +290 -0
  65. package/dist/engine/batch1_reality_gate.js.map +1 -0
  66. package/dist/engine/batch1_scenario_registry.d.ts +62 -0
  67. package/dist/engine/batch1_scenario_registry.d.ts.map +1 -0
  68. package/dist/engine/batch1_scenario_registry.js +392 -0
  69. package/dist/engine/batch1_scenario_registry.js.map +1 -0
  70. package/dist/engine/batch1_scenario_runners.d.ts +42 -0
  71. package/dist/engine/batch1_scenario_runners.d.ts.map +1 -0
  72. package/dist/engine/batch1_scenario_runners.js +292 -0
  73. package/dist/engine/batch1_scenario_runners.js.map +1 -0
  74. package/dist/engine/capability_action_advisor.d.ts +3 -0
  75. package/dist/engine/capability_action_advisor.d.ts.map +1 -1
  76. package/dist/engine/capability_action_advisor.js +10 -0
  77. package/dist/engine/capability_action_advisor.js.map +1 -1
  78. package/dist/engine/capability_registry.d.ts +21 -0
  79. package/dist/engine/capability_registry.d.ts.map +1 -1
  80. package/dist/engine/capability_registry.js +113 -0
  81. package/dist/engine/capability_registry.js.map +1 -1
  82. package/dist/engine/capability_state_store.d.ts +63 -0
  83. package/dist/engine/capability_state_store.d.ts.map +1 -1
  84. package/dist/engine/capability_state_store.js +49 -1
  85. package/dist/engine/capability_state_store.js.map +1 -1
  86. package/dist/engine/change_coordinator.d.ts.map +1 -1
  87. package/dist/engine/change_coordinator.js +5 -4
  88. package/dist/engine/change_coordinator.js.map +1 -1
  89. package/dist/engine/classifier.d.ts +15 -5
  90. package/dist/engine/classifier.d.ts.map +1 -1
  91. package/dist/engine/classifier.js +70 -69
  92. package/dist/engine/classifier.js.map +1 -1
  93. package/dist/engine/code_reviewer.d.ts +14 -0
  94. package/dist/engine/code_reviewer.d.ts.map +1 -1
  95. package/dist/engine/code_reviewer.js +109 -10
  96. package/dist/engine/code_reviewer.js.map +1 -1
  97. package/dist/engine/cognitive_anchor.d.ts +14 -0
  98. package/dist/engine/cognitive_anchor.d.ts.map +1 -1
  99. package/dist/engine/cognitive_anchor.js +26 -2
  100. package/dist/engine/cognitive_anchor.js.map +1 -1
  101. package/dist/engine/command_execution_contract.d.ts +226 -0
  102. package/dist/engine/command_execution_contract.d.ts.map +1 -0
  103. package/dist/engine/command_execution_contract.js +571 -0
  104. package/dist/engine/command_execution_contract.js.map +1 -0
  105. package/dist/engine/confidence_scorer.d.ts.map +1 -1
  106. package/dist/engine/confidence_scorer.js +1 -0
  107. package/dist/engine/confidence_scorer.js.map +1 -1
  108. package/dist/engine/config_precedence_contract.d.ts +269 -0
  109. package/dist/engine/config_precedence_contract.d.ts.map +1 -0
  110. package/dist/engine/config_precedence_contract.js +948 -0
  111. package/dist/engine/config_precedence_contract.js.map +1 -0
  112. package/dist/engine/conflict_gate.d.ts +13 -0
  113. package/dist/engine/conflict_gate.d.ts.map +1 -1
  114. package/dist/engine/conflict_gate.js +20 -2
  115. package/dist/engine/conflict_gate.js.map +1 -1
  116. package/dist/engine/consumable_asset_registry.d.ts +46 -0
  117. package/dist/engine/consumable_asset_registry.d.ts.map +1 -0
  118. package/dist/engine/consumable_asset_registry.js +758 -0
  119. package/dist/engine/consumable_asset_registry.js.map +1 -0
  120. package/dist/engine/contract_guard.d.ts +4 -0
  121. package/dist/engine/contract_guard.d.ts.map +1 -1
  122. package/dist/engine/contract_guard.js +15 -7
  123. package/dist/engine/contract_guard.js.map +1 -1
  124. package/dist/engine/convention_detector.d.ts.map +1 -1
  125. package/dist/engine/convention_detector.js +5 -2
  126. package/dist/engine/convention_detector.js.map +1 -1
  127. package/dist/engine/core_engineering_principles.d.ts +155 -0
  128. package/dist/engine/core_engineering_principles.d.ts.map +1 -0
  129. package/dist/engine/core_engineering_principles.js +426 -0
  130. package/dist/engine/core_engineering_principles.js.map +1 -0
  131. package/dist/engine/debt_reporter.d.ts.map +1 -1
  132. package/dist/engine/debt_reporter.js +3 -1
  133. package/dist/engine/debt_reporter.js.map +1 -1
  134. package/dist/engine/debt_tracker.d.ts.map +1 -1
  135. package/dist/engine/debt_tracker.js +9 -3
  136. package/dist/engine/debt_tracker.js.map +1 -1
  137. package/dist/engine/debugger.d.ts.map +1 -1
  138. package/dist/engine/debugger.js +2 -0
  139. package/dist/engine/debugger.js.map +1 -1
  140. package/dist/engine/decision_contract.d.ts +11 -2
  141. package/dist/engine/decision_contract.d.ts.map +1 -1
  142. package/dist/engine/decision_contract.js +17 -2
  143. package/dist/engine/decision_contract.js.map +1 -1
  144. package/dist/engine/delivery.d.ts +7 -0
  145. package/dist/engine/delivery.d.ts.map +1 -1
  146. package/dist/engine/delivery.js +89 -36
  147. package/dist/engine/delivery.js.map +1 -1
  148. package/dist/engine/dependency_scanner.d.ts.map +1 -1
  149. package/dist/engine/dependency_scanner.js +14 -9
  150. package/dist/engine/dependency_scanner.js.map +1 -1
  151. package/dist/engine/developer_sovereignty.d.ts.map +1 -1
  152. package/dist/engine/developer_sovereignty.js +8 -2
  153. package/dist/engine/developer_sovereignty.js.map +1 -1
  154. package/dist/engine/diff_ownership.d.ts.map +1 -1
  155. package/dist/engine/diff_ownership.js +8 -0
  156. package/dist/engine/diff_ownership.js.map +1 -1
  157. package/dist/engine/diff_ownership_store.d.ts +26 -10
  158. package/dist/engine/diff_ownership_store.d.ts.map +1 -1
  159. package/dist/engine/diff_ownership_store.js +47 -20
  160. package/dist/engine/diff_ownership_store.js.map +1 -1
  161. package/dist/engine/dual_layer_mechanism_registry.d.ts +66 -0
  162. package/dist/engine/dual_layer_mechanism_registry.d.ts.map +1 -0
  163. package/dist/engine/dual_layer_mechanism_registry.js +1077 -0
  164. package/dist/engine/dual_layer_mechanism_registry.js.map +1 -0
  165. package/dist/engine/escape_report.d.ts +50 -0
  166. package/dist/engine/escape_report.d.ts.map +1 -1
  167. package/dist/engine/escape_report.js +38 -0
  168. package/dist/engine/escape_report.js.map +1 -1
  169. package/dist/engine/evolver.d.ts.map +1 -1
  170. package/dist/engine/evolver.js +12 -2
  171. package/dist/engine/evolver.js.map +1 -1
  172. package/dist/engine/exploration.d.ts.map +1 -1
  173. package/dist/engine/exploration.js +87 -0
  174. package/dist/engine/exploration.js.map +1 -1
  175. package/dist/engine/failure_classifier.d.ts.map +1 -1
  176. package/dist/engine/failure_classifier.js +8 -0
  177. package/dist/engine/failure_classifier.js.map +1 -1
  178. package/dist/engine/feasibility_checker.d.ts +8 -0
  179. package/dist/engine/feasibility_checker.d.ts.map +1 -1
  180. package/dist/engine/feasibility_checker.js +12 -0
  181. package/dist/engine/feasibility_checker.js.map +1 -1
  182. package/dist/engine/git_deps.d.ts +4 -1
  183. package/dist/engine/git_deps.d.ts.map +1 -1
  184. package/dist/engine/git_deps.js +5 -1
  185. package/dist/engine/git_deps.js.map +1 -1
  186. package/dist/engine/governance_report.d.ts +57 -1
  187. package/dist/engine/governance_report.d.ts.map +1 -1
  188. package/dist/engine/governance_report.js +91 -1
  189. package/dist/engine/governance_report.js.map +1 -1
  190. package/dist/engine/impact_analyzer.d.ts.map +1 -1
  191. package/dist/engine/impact_analyzer.js +5 -1
  192. package/dist/engine/impact_analyzer.js.map +1 -1
  193. package/dist/engine/implementation_roadmap_registry.d.ts +105 -0
  194. package/dist/engine/implementation_roadmap_registry.d.ts.map +1 -0
  195. package/dist/engine/implementation_roadmap_registry.js +813 -0
  196. package/dist/engine/implementation_roadmap_registry.js.map +1 -0
  197. package/dist/engine/input_material_contract_registry.d.ts +185 -0
  198. package/dist/engine/input_material_contract_registry.d.ts.map +1 -0
  199. package/dist/engine/input_material_contract_registry.js +563 -0
  200. package/dist/engine/input_material_contract_registry.js.map +1 -0
  201. package/dist/engine/intent_expander.d.ts +8 -27
  202. package/dist/engine/intent_expander.d.ts.map +1 -1
  203. package/dist/engine/intent_expander.js +1170 -139
  204. package/dist/engine/intent_expander.js.map +1 -1
  205. package/dist/engine/intent_router.d.ts +82 -0
  206. package/dist/engine/intent_router.d.ts.map +1 -0
  207. package/dist/engine/intent_router.js +458 -0
  208. package/dist/engine/intent_router.js.map +1 -0
  209. package/dist/engine/io_controller.d.ts.map +1 -1
  210. package/dist/engine/io_controller.js +25 -13
  211. package/dist/engine/io_controller.js.map +1 -1
  212. package/dist/engine/java_quality_guard.d.ts.map +1 -1
  213. package/dist/engine/java_quality_guard.js +8 -4
  214. package/dist/engine/java_quality_guard.js.map +1 -1
  215. package/dist/engine/job_manager.d.ts +35 -0
  216. package/dist/engine/job_manager.d.ts.map +1 -1
  217. package/dist/engine/job_manager.js +53 -9
  218. package/dist/engine/job_manager.js.map +1 -1
  219. package/dist/engine/knowledge_config_loader.d.ts +12 -1
  220. package/dist/engine/knowledge_config_loader.d.ts.map +1 -1
  221. package/dist/engine/knowledge_config_loader.js +50 -10
  222. package/dist/engine/knowledge_config_loader.js.map +1 -1
  223. package/dist/engine/knowledge_injection_boundary.d.ts +56 -0
  224. package/dist/engine/knowledge_injection_boundary.d.ts.map +1 -0
  225. package/dist/engine/knowledge_injection_boundary.js +561 -0
  226. package/dist/engine/knowledge_injection_boundary.js.map +1 -0
  227. package/dist/engine/knowledge_manager.d.ts +73 -0
  228. package/dist/engine/knowledge_manager.d.ts.map +1 -1
  229. package/dist/engine/knowledge_manager.js +163 -21
  230. package/dist/engine/knowledge_manager.js.map +1 -1
  231. package/dist/engine/knowledge_sovereignty.d.ts +1 -0
  232. package/dist/engine/knowledge_sovereignty.d.ts.map +1 -1
  233. package/dist/engine/knowledge_sovereignty.js +8 -3
  234. package/dist/engine/knowledge_sovereignty.js.map +1 -1
  235. package/dist/engine/llm_gateway.d.ts +74 -3
  236. package/dist/engine/llm_gateway.d.ts.map +1 -1
  237. package/dist/engine/llm_gateway.js +75 -4
  238. package/dist/engine/llm_gateway.js.map +1 -1
  239. package/dist/engine/main_path_integration_contract.d.ts +383 -0
  240. package/dist/engine/main_path_integration_contract.d.ts.map +1 -0
  241. package/dist/engine/main_path_integration_contract.js +1581 -0
  242. package/dist/engine/main_path_integration_contract.js.map +1 -0
  243. package/dist/engine/mechanism_contract_registry.d.ts +59 -0
  244. package/dist/engine/mechanism_contract_registry.d.ts.map +1 -0
  245. package/dist/engine/mechanism_contract_registry.js +484 -0
  246. package/dist/engine/mechanism_contract_registry.js.map +1 -0
  247. package/dist/engine/migration_guard.d.ts.map +1 -1
  248. package/dist/engine/migration_guard.js +24 -15
  249. package/dist/engine/migration_guard.js.map +1 -1
  250. package/dist/engine/mutation_audit.d.ts +10 -0
  251. package/dist/engine/mutation_audit.d.ts.map +1 -1
  252. package/dist/engine/mutation_audit.js +19 -2
  253. package/dist/engine/mutation_audit.js.map +1 -1
  254. package/dist/engine/observability.d.ts.map +1 -1
  255. package/dist/engine/observability.js +17 -6
  256. package/dist/engine/observability.js.map +1 -1
  257. package/dist/engine/onboarding.d.ts.map +1 -1
  258. package/dist/engine/onboarding.js +20 -4
  259. package/dist/engine/onboarding.js.map +1 -1
  260. package/dist/engine/policy_drift_detector.d.ts +6 -0
  261. package/dist/engine/policy_drift_detector.d.ts.map +1 -1
  262. package/dist/engine/policy_drift_detector.js +16 -0
  263. package/dist/engine/policy_drift_detector.js.map +1 -1
  264. package/dist/engine/privacy_secret_contract.d.ts +320 -0
  265. package/dist/engine/privacy_secret_contract.d.ts.map +1 -0
  266. package/dist/engine/privacy_secret_contract.js +874 -0
  267. package/dist/engine/privacy_secret_contract.js.map +1 -0
  268. package/dist/engine/regression_matrix.d.ts +21 -8
  269. package/dist/engine/regression_matrix.d.ts.map +1 -1
  270. package/dist/engine/regression_matrix.js +37 -8
  271. package/dist/engine/regression_matrix.js.map +1 -1
  272. package/dist/engine/risk_sampler.d.ts +6 -0
  273. package/dist/engine/risk_sampler.d.ts.map +1 -1
  274. package/dist/engine/risk_sampler.js +9 -0
  275. package/dist/engine/risk_sampler.js.map +1 -1
  276. package/dist/engine/runtime_safety.d.ts.map +1 -1
  277. package/dist/engine/runtime_safety.js +7 -3
  278. package/dist/engine/runtime_safety.js.map +1 -1
  279. package/dist/engine/scaffolder.d.ts.map +1 -1
  280. package/dist/engine/scaffolder.js +7 -1
  281. package/dist/engine/scaffolder.js.map +1 -1
  282. package/dist/engine/scope_controller.d.ts.map +1 -1
  283. package/dist/engine/scope_controller.js +12 -1
  284. package/dist/engine/scope_controller.js.map +1 -1
  285. package/dist/engine/scope_lease.d.ts +43 -0
  286. package/dist/engine/scope_lease.d.ts.map +1 -1
  287. package/dist/engine/scope_lease.js +44 -0
  288. package/dist/engine/scope_lease.js.map +1 -1
  289. package/dist/engine/semantic_evidence.d.ts +6 -0
  290. package/dist/engine/semantic_evidence.d.ts.map +1 -1
  291. package/dist/engine/semantic_evidence.js +9 -0
  292. package/dist/engine/semantic_evidence.js.map +1 -1
  293. package/dist/engine/task_context.d.ts +36 -1
  294. package/dist/engine/task_context.d.ts.map +1 -1
  295. package/dist/engine/task_context.js +252 -13
  296. package/dist/engine/task_context.js.map +1 -1
  297. package/dist/engine/task_planner.d.ts.map +1 -1
  298. package/dist/engine/task_planner.js +13 -3
  299. package/dist/engine/task_planner.js.map +1 -1
  300. package/dist/engine/team_awareness.d.ts.map +1 -1
  301. package/dist/engine/team_awareness.js +8 -7
  302. package/dist/engine/team_awareness.js.map +1 -1
  303. package/dist/engine/template_mechanism_auditor.d.ts +93 -0
  304. package/dist/engine/template_mechanism_auditor.d.ts.map +1 -0
  305. package/dist/engine/template_mechanism_auditor.js +622 -0
  306. package/dist/engine/template_mechanism_auditor.js.map +1 -0
  307. package/dist/engine/test_generator.d.ts.map +1 -1
  308. package/dist/engine/test_generator.js +6 -0
  309. package/dist/engine/test_generator.js.map +1 -1
  310. package/dist/engine/test_quality.d.ts +6 -0
  311. package/dist/engine/test_quality.d.ts.map +1 -1
  312. package/dist/engine/test_quality.js +26 -10
  313. package/dist/engine/test_quality.js.map +1 -1
  314. package/dist/engine/tool_invocation_contract_registry.d.ts +136 -0
  315. package/dist/engine/tool_invocation_contract_registry.d.ts.map +1 -0
  316. package/dist/engine/tool_invocation_contract_registry.js +731 -0
  317. package/dist/engine/tool_invocation_contract_registry.js.map +1 -0
  318. package/dist/engine/traceability.d.ts +3 -0
  319. package/dist/engine/traceability.d.ts.map +1 -1
  320. package/dist/engine/traceability.js +12 -4
  321. package/dist/engine/traceability.js.map +1 -1
  322. package/dist/engine/user_feedback_contract.d.ts +162 -0
  323. package/dist/engine/user_feedback_contract.d.ts.map +1 -0
  324. package/dist/engine/user_feedback_contract.js +356 -0
  325. package/dist/engine/user_feedback_contract.js.map +1 -0
  326. package/dist/engine/verifier.d.ts +6 -1
  327. package/dist/engine/verifier.d.ts.map +1 -1
  328. package/dist/engine/verifier.js +114 -1
  329. package/dist/engine/verifier.js.map +1 -1
  330. package/dist/engine/workflow_contract_registry.d.ts +70 -0
  331. package/dist/engine/workflow_contract_registry.d.ts.map +1 -0
  332. package/dist/engine/workflow_contract_registry.js +501 -0
  333. package/dist/engine/workflow_contract_registry.js.map +1 -0
  334. package/dist/engine/workspace_resumer.d.ts.map +1 -1
  335. package/dist/engine/workspace_resumer.js +8 -0
  336. package/dist/engine/workspace_resumer.js.map +1 -1
  337. package/dist/engine/zero_config_init.d.ts +67 -2
  338. package/dist/engine/zero_config_init.d.ts.map +1 -1
  339. package/dist/engine/zero_config_init.js +410 -28
  340. package/dist/engine/zero_config_init.js.map +1 -1
  341. package/dist/git/operations.d.ts +101 -0
  342. package/dist/git/operations.d.ts.map +1 -1
  343. package/dist/git/operations.js +125 -9
  344. package/dist/git/operations.js.map +1 -1
  345. package/dist/index.d.ts +1 -1
  346. package/dist/index.js +16 -5
  347. package/dist/index.js.map +1 -1
  348. package/dist/knowledge/conflict_detector.d.ts +6 -0
  349. package/dist/knowledge/conflict_detector.d.ts.map +1 -1
  350. package/dist/knowledge/conflict_detector.js +7 -0
  351. package/dist/knowledge/conflict_detector.js.map +1 -1
  352. package/dist/knowledge/health_checker.d.ts +16 -0
  353. package/dist/knowledge/health_checker.d.ts.map +1 -1
  354. package/dist/knowledge/health_checker.js +24 -1
  355. package/dist/knowledge/health_checker.js.map +1 -1
  356. package/dist/knowledge/index_manager.d.ts +140 -2
  357. package/dist/knowledge/index_manager.d.ts.map +1 -1
  358. package/dist/knowledge/index_manager.js +186 -26
  359. package/dist/knowledge/index_manager.js.map +1 -1
  360. package/dist/knowledge/loader.d.ts +8 -1
  361. package/dist/knowledge/loader.d.ts.map +1 -1
  362. package/dist/knowledge/loader.js +56 -2
  363. package/dist/knowledge/loader.js.map +1 -1
  364. package/dist/knowledge/writer.d.ts +49 -1
  365. package/dist/knowledge/writer.d.ts.map +1 -1
  366. package/dist/knowledge/writer.js +55 -1
  367. package/dist/knowledge/writer.js.map +1 -1
  368. package/dist/types.d.ts +255 -1
  369. package/dist/types.d.ts.map +1 -1
  370. package/dist/utils/logger.d.ts +3 -0
  371. package/dist/utils/logger.d.ts.map +1 -0
  372. package/dist/utils/logger.js +29 -0
  373. package/dist/utils/logger.js.map +1 -0
  374. package/package.json +7 -7
  375. package/templates/knowledge/acceptance_templates//345/216/237/345/236/213/350/257/264/346/230/216/346/250/241/347/211/210.md +30 -2
  376. package/templates/knowledge/checklists//344/270/273/351/223/276/350/267/257/346/216/245/345/205/245/351/252/214/346/224/266/346/270/205/345/215/225.md +16 -0
  377. package/templates/knowledge/checklists//345/267/245/344/275/234/346/265/201/351/252/214/346/224/266/346/270/205/345/215/225.md +17 -0
  378. package/templates/knowledge/checklists//346/240/270/345/277/203/345/267/245/347/250/213/346/211/247/350/241/214/351/252/214/346/224/266/346/270/205/345/215/225.md +43 -0
  379. package/templates/knowledge/checklists//347/237/245/350/257/206/346/263/250/345/205/245/351/252/214/346/224/266/346/270/205/345/215/225.md +17 -0
  380. package/templates/knowledge/checklists//351/232/220/347/247/201/345/256/241/346/237/245/346/270/205/345/215/225.md +15 -0
  381. package/templates/knowledge/checklists//351/252/214/350/257/201/351/252/214/346/224/266/346/270/205/345/215/225.md +16 -0
  382. package/templates/knowledge/patterns/core//345/206/263/347/255/226/347/275/221/345/205/263.md +1 -0
  383. package/templates/knowledge/procedures//344/270/273/351/223/276/350/267/257/346/216/245/345/205/245/351/252/214/350/257/201/346/265/201/347/250/213.md +23 -0
  384. package/templates/knowledge/procedures//345/221/275/344/273/244/346/211/247/350/241/214/346/265/201/347/250/213.md +19 -0
  385. package/templates/knowledge/procedures//345/267/245/345/205/267/350/260/203/347/224/250/346/265/201/347/250/213.md +15 -0
  386. package/templates/knowledge/procedures//346/204/217/345/233/276/350/267/257/347/224/261/346/265/201/347/250/213.md +15 -0
  387. package/templates/knowledge/procedures/{Figma → /346/272/220/347/240/201/345/216/237/345/236/213}/344/272/244/344/273/230/346/265/201/347/250/213.md +5 -5
  388. package/templates/knowledge/procedures//347/274/226/347/240/201/345/211/215/346/276/204/346/270/205/346/265/201/347/250/213.md +53 -0
  389. package/templates/knowledge/rules//344/272/247/347/211/251/345/245/221/347/272/246/350/247/204/345/210/231.md +21 -0
  390. package/templates/knowledge/rules//345/221/275/344/273/244/346/211/247/350/241/214/350/247/204/345/210/231.md +25 -0
  391. package/templates/knowledge/rules//345/267/245/344/275/234/346/265/201/345/245/221/347/272/246/350/247/204/345/210/231.md +20 -0
  392. package/templates/knowledge/rules//345/267/245/345/205/267/350/260/203/347/224/250/350/247/204/345/210/231.md +25 -0
  393. package/templates/knowledge/rules//346/204/217/345/233/276/350/267/257/347/224/261/350/247/204/345/210/231.md +26 -0
  394. package/templates/knowledge/rules//346/211/247/350/241/214/345/256/210/345/215/253/350/257/204/344/274/260/350/247/204/345/210/231.md +24 -0
  395. package/templates/knowledge/rules//346/225/217/346/204/237/344/277/241/346/201/257/345/244/204/347/220/206/350/247/204/345/210/231.md +20 -0
  396. package/templates/knowledge/rules//346/240/270/345/277/203/345/267/245/347/250/213/346/211/247/350/241/214/345/216/237/345/210/231.md +125 -0
  397. package/templates/knowledge/rules//346/263/250/345/206/214/350/241/250/345/237/272/347/241/200/350/256/276/346/226/275/350/247/204/345/210/231.md +26 -0
  398. 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 +22 -0
  399. package/templates/knowledge/rules//347/237/245/350/257/206/346/263/250/345/205/245/350/276/271/347/225/214/350/247/204/345/210/231.md +25 -0
  400. package/templates/knowledge/rules//350/276/223/345/205/245/346/235/220/346/226/231/345/245/221/347/272/246/350/247/204/345/210/231.md +27 -0
  401. package/templates/knowledge/rules//351/205/215/347/275/256/344/274/230/345/205/210/347/272/247/350/247/204/345/210/231.md +22 -0
  402. package/templates/knowledge/rules//351/230/262/345/255/244/345/262/233/345/256/236/347/216/260/350/247/204/345/210/231.md +24 -0
  403. package/templates/knowledge/rules//351/233/266/351/205/215/347/275/256/345/210/235/345/247/213/345/214/226/350/247/204/345/210/231.md +28 -0
  404. package/templates/knowledge/rules//351/252/214/350/257/201/345/245/221/347/272/246/350/247/204/345/210/231.md +25 -0
  405. package/templates/knowledge/templates/{review_summary.md → /345/256/241/346/237/245/346/221/230/350/246/201.md} +1 -1
  406. package/templates/config.yaml +0 -53
@@ -0,0 +1,622 @@
1
+ /**
2
+ * Template Mechanism Auditor
3
+ *
4
+ * 扫描所有模板目录,与 Consumable Asset Registry 和 Dual-Layer Mechanism Registry
5
+ * 交叉校验,发现未映射、未消费、漂移、过度承诺等问题。
6
+ */
7
+ import fs from "node:fs";
8
+ import path from "node:path";
9
+ import { listBuiltinConsumableAssets } from "./consumable_asset_registry.js";
10
+ import { listMechanismLayerMaps, checkDualLayerCompleteness, } from "./dual_layer_mechanism_registry.js";
11
+ import { WORKFLOW_TEMPLATE_HARD_RULES } from "./batch1_manifest.js";
12
+ // ── 模板扫描目录 ──
13
+ const TEMPLATE_SCAN_DIRS = [
14
+ "templates/knowledge/procedures",
15
+ "templates/knowledge/rules",
16
+ "templates/knowledge/checklists",
17
+ "templates/knowledge/acceptance_templates",
18
+ "templates/knowledge/review_rules",
19
+ "templates/knowledge/patterns/core",
20
+ "templates/knowledge/domain",
21
+ "templates/knowledge/templates",
22
+ "templates/knowledge/product_profiles",
23
+ "templates/patterns",
24
+ "templates/scaffolds",
25
+ "templates/adapters",
26
+ ];
27
+ // ── 适配器承诺关键字模式 ──
28
+ const ENFORCED_PROMISE_PATTERNS = [
29
+ { pattern: /必须阻断|硬性阻断|hard.?block|hard.?fail/i, keywords: ["必须阻断", "hard_block"] },
30
+ { pattern: /强制执行|enforced|enforce/i, keywords: ["enforced"] },
31
+ { pattern: /自动验证|自动校验|auto.?verif/i, keywords: ["自动验证"] },
32
+ { pattern: /不允许|禁止|forbidden|blocked/i, keywords: ["blocked"] },
33
+ ];
34
+ // ── 主审计函数 ──
35
+ /**
36
+ * 执行模板-机制交叉审计。
37
+ * 扫描所有模板目录,与 Consumable Asset Registry 和 Dual-Layer Mechanism Registry 交叉校验。
38
+ * @param rootDir - 项目根目录
39
+ * @returns 完整的审计报告
40
+ */
41
+ export function auditTemplateMechanisms(rootDir) {
42
+ console.error("[soloForge] TemplateMechanismAuditor: 开始模板机制审计");
43
+ const assets = listBuiltinConsumableAssets();
44
+ const maps = listMechanismLayerMaps();
45
+ const assetPathMap = new Map();
46
+ for (const a of assets)
47
+ assetPathMap.set(a.path, a);
48
+ const mechanismMap = new Map();
49
+ for (const m of maps)
50
+ mechanismMap.set(m.mechanism_id, m);
51
+ // 1. 扫描磁盘上的模板文件
52
+ const diskTemplatePaths = scanTemplateFiles(rootDir);
53
+ // 2. 未映射模板(磁盘上存在但未在注册表中)
54
+ const unmappedTemplateAssets = [];
55
+ for (const tp of diskTemplatePaths) {
56
+ if (!assetPathMap.has(tp)) {
57
+ unmappedTemplateAssets.push({
58
+ path: tp,
59
+ registered: false,
60
+ issue: "unmapped",
61
+ });
62
+ }
63
+ }
64
+ // 3. 未消费的已注册资产(无消费者或无触发器)
65
+ const unconsumedTemplateAssets = [];
66
+ for (const a of assets) {
67
+ if (a.consumers.length === 0 || !a.trigger || a.trigger.trim() === "") {
68
+ unconsumedTemplateAssets.push({
69
+ path: a.path,
70
+ registered: true,
71
+ owner_mechanism_id: a.owner_mechanism_id,
72
+ consumption_mode: a.consumption_mode,
73
+ consumers: a.consumers,
74
+ trigger: a.trigger,
75
+ issue: "unconsumed",
76
+ });
77
+ }
78
+ }
79
+ // 4. 仅模板的机制
80
+ const templateOnlyMechanisms = [];
81
+ // 5. 仅代码的机制
82
+ const codeOnlyMechanisms = [];
83
+ for (const m of maps) {
84
+ const completeness = checkDualLayerCompleteness(m);
85
+ if (!completeness.has_template_layer && completeness.has_code_layer) {
86
+ codeOnlyMechanisms.push({
87
+ mechanism_id: m.mechanism_id,
88
+ priority: m.priority,
89
+ status: m.status,
90
+ has_template_assets: false,
91
+ has_code_enforcers: true,
92
+ completeness,
93
+ issue: "code_only",
94
+ });
95
+ }
96
+ else if (completeness.has_template_layer && !completeness.has_code_layer) {
97
+ templateOnlyMechanisms.push({
98
+ mechanism_id: m.mechanism_id,
99
+ priority: m.priority,
100
+ status: m.status,
101
+ has_template_assets: true,
102
+ has_code_enforcers: false,
103
+ completeness,
104
+ issue: "template_only",
105
+ });
106
+ }
107
+ }
108
+ // 6. 可能被注入的已弃用资产
109
+ const deprecatedInjected = [];
110
+ for (const a of assets) {
111
+ if (a.consumption_mode === "deprecated") {
112
+ const mechId = a.owner_mechanism_id;
113
+ if (mechId) {
114
+ const map = mechanismMap.get(mechId);
115
+ if (map && map.status !== "deprecated") {
116
+ deprecatedInjected.push({
117
+ path: a.path,
118
+ registered: true,
119
+ owner_mechanism_id: mechId,
120
+ consumption_mode: a.consumption_mode,
121
+ issue: "deprecated_injected",
122
+ });
123
+ }
124
+ }
125
+ }
126
+ }
127
+ // 7. required 资产无执行器
128
+ const requiredWithoutEnforcer = [];
129
+ for (const a of assets) {
130
+ if (a.consumption_mode === "required" && a.owner_mechanism_id) {
131
+ const map = mechanismMap.get(a.owner_mechanism_id);
132
+ if (map && map.code_enforcers.length === 0) {
133
+ requiredWithoutEnforcer.push({
134
+ path: a.path,
135
+ registered: true,
136
+ owner_mechanism_id: a.owner_mechanism_id,
137
+ consumption_mode: a.consumption_mode,
138
+ consumers: a.consumers,
139
+ trigger: a.trigger,
140
+ issue: "no_owner_mechanism",
141
+ });
142
+ }
143
+ }
144
+ }
145
+ // 8. 漂移发现
146
+ const driftFindings = computeDriftFindings(maps, assets, rootDir);
147
+ // 9. 适配器过度承诺检查
148
+ const overpromised = auditAdapterPromises(rootDir, mechanismMap);
149
+ // 10. 空机制(既无模板资产也无代码执行器)
150
+ const emptyMechanisms = [];
151
+ for (const m of maps) {
152
+ const completeness = checkDualLayerCompleteness(m);
153
+ if (!completeness.has_template_layer && !completeness.has_code_layer) {
154
+ emptyMechanisms.push({
155
+ mechanism_id: m.mechanism_id,
156
+ priority: m.priority,
157
+ status: m.status,
158
+ has_template_assets: false,
159
+ has_code_enforcers: false,
160
+ completeness,
161
+ issue: "template_only",
162
+ });
163
+ }
164
+ }
165
+ // 11. 薄模板发现(厚重内容、过大模板)
166
+ const thinTemplateFindings = computeThinTemplateFindings(rootDir);
167
+ // 12. 工作流硬性规则发现
168
+ const workflowHardRuleFindings = computeWorkflowHardRuleFindings(rootDir, mechanismMap);
169
+ // 计算统计数量
170
+ const allFindings = [
171
+ ...driftFindings,
172
+ ...unmappedTemplateAssets.map((u) => ({
173
+ severity: "advisory",
174
+ mechanism_id: "template_audit",
175
+ finding_type: "asset_unconsumed",
176
+ message: `未注册模板: ${u.path}`,
177
+ })),
178
+ ];
179
+ for (const m of codeOnlyMechanisms) {
180
+ if (m.priority === "P0" || m.priority === "P1") {
181
+ allFindings.push({
182
+ severity: "hard_fail",
183
+ mechanism_id: m.mechanism_id,
184
+ finding_type: "template_gap",
185
+ message: `P0/P1 机制 ${m.mechanism_id} 为 code_only,必须补充模板层`,
186
+ });
187
+ }
188
+ }
189
+ for (const m of templateOnlyMechanisms) {
190
+ if (m.priority === "P0" || m.priority === "P1") {
191
+ allFindings.push({
192
+ severity: "hard_fail",
193
+ mechanism_id: m.mechanism_id,
194
+ finding_type: "code_gap",
195
+ message: `P0/P1 机制 ${m.mechanism_id} 为 template_only,必须补充代码层`,
196
+ });
197
+ }
198
+ }
199
+ for (const o of overpromised) {
200
+ allFindings.push({
201
+ severity: "hard_fail",
202
+ mechanism_id: o.promised_mechanism_id,
203
+ finding_type: "template_mechanism_drift",
204
+ message: `适配器模板 ${o.source_file} 承诺 ${o.promise_keywords.join(",")} 但机制 ${o.promised_mechanism_id} 无 enforcer 支持`,
205
+ });
206
+ }
207
+ for (const r of requiredWithoutEnforcer) {
208
+ allFindings.push({
209
+ severity: "hard_fail",
210
+ mechanism_id: r.owner_mechanism_id ?? "unknown",
211
+ finding_type: "template_mechanism_drift",
212
+ message: `required 资产 ${r.path} 的机制 ${r.owner_mechanism_id} 无代码 enforcer`,
213
+ });
214
+ }
215
+ // 将工作流硬性规则发现计入 hard_fail 数量
216
+ for (const wf of workflowHardRuleFindings) {
217
+ if (wf.severity === "hard_fail") {
218
+ allFindings.push(wf);
219
+ }
220
+ }
221
+ const hardFailCount = allFindings.filter((f) => f.severity === "hard_fail").length;
222
+ const advisoryCount = allFindings.filter((f) => f.severity === "advisory").length;
223
+ console.error("[soloForge] TemplateMechanismAuditor: 审计完成", "hard_fail:", hardFailCount, "advisory:", advisoryCount);
224
+ return {
225
+ generated_at: new Date().toISOString(),
226
+ root_dir: rootDir,
227
+ total_template_files: diskTemplatePaths.length,
228
+ total_registered_assets: assets.length,
229
+ total_mechanisms: maps.length,
230
+ unmapped_template_assets: unmappedTemplateAssets,
231
+ unconsumed_template_assets: unconsumedTemplateAssets,
232
+ template_only_mechanisms: templateOnlyMechanisms,
233
+ code_only_mechanisms: codeOnlyMechanisms,
234
+ overpromised_adapter_rules: overpromised,
235
+ template_mechanism_drift: driftFindings,
236
+ deprecated_assets_injected: deprecatedInjected,
237
+ required_assets_without_enforcer: requiredWithoutEnforcer,
238
+ empty_mechanisms: emptyMechanisms,
239
+ thin_template_findings: thinTemplateFindings,
240
+ workflow_hard_rule_findings: workflowHardRuleFindings,
241
+ hard_fail_count: hardFailCount,
242
+ advisory_count: advisoryCount,
243
+ };
244
+ }
245
+ // ── 模板文件扫描器 ──
246
+ /** 扫描指定根目录下的模板文件 */
247
+ function scanTemplateFiles(rootDir) {
248
+ const paths = [];
249
+ for (const dir of TEMPLATE_SCAN_DIRS) {
250
+ const fullDir = path.join(rootDir, dir);
251
+ if (!fs.existsSync(fullDir))
252
+ continue;
253
+ walkDir(fullDir, rootDir, paths);
254
+ }
255
+ return paths.sort();
256
+ }
257
+ /** 递归遍历目录,收集模板文件路径 */
258
+ function walkDir(dir, rootDir, accumulator) {
259
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
260
+ const full = path.join(dir, entry.name);
261
+ if (entry.isDirectory()) {
262
+ walkDir(full, rootDir, accumulator);
263
+ }
264
+ else if (entry.isFile() && /\.(md|yaml|yml|hbs|ts|js|tsx|jsx)$/.test(entry.name)) {
265
+ accumulator.push(path.relative(rootDir, full).replace(/\\/g, "/"));
266
+ }
267
+ }
268
+ }
269
+ // ── 漂移发现计算 ──
270
+ /**
271
+ * 计算模板-机制漂移发现。
272
+ * 检查 P0/P1 机制是否为 dual_layer_enforced、模板资产是否注册、文件是否存在等。
273
+ */
274
+ function computeDriftFindings(maps, assets, rootDir) {
275
+ const findings = [];
276
+ const assetPathSet = new Set(assets.map((a) => a.path));
277
+ for (const m of maps) {
278
+ if ((m.priority === "P0" || m.priority === "P1") && m.status !== "dual_layer_enforced") {
279
+ findings.push({
280
+ severity: "hard_fail",
281
+ mechanism_id: m.mechanism_id,
282
+ finding_type: "p0_not_dual_layer",
283
+ message: `P0/P1 机制 ${m.mechanism_id} 必须为 dual_layer_enforced,当前: ${m.status}`,
284
+ });
285
+ }
286
+ for (const ta of m.template_assets) {
287
+ if (!assetPathSet.has(ta.path)) {
288
+ findings.push({
289
+ severity: "hard_fail",
290
+ mechanism_id: m.mechanism_id,
291
+ finding_type: "asset_unconsumed",
292
+ message: `模板资产 ${ta.path} 未在 Consumable Asset Registry 注册`,
293
+ });
294
+ }
295
+ if ((m.priority === "P0" || m.priority === "P1") && !fs.existsSync(path.join(rootDir, ta.path))) {
296
+ findings.push({
297
+ severity: "hard_fail",
298
+ mechanism_id: m.mechanism_id,
299
+ finding_type: "asset_unconsumed",
300
+ message: `模板文件不存在: ${ta.path}`,
301
+ });
302
+ }
303
+ }
304
+ if (m.status === "template_only_advisory" && m.code_enforcers.length > 0) {
305
+ findings.push({
306
+ severity: "hard_fail",
307
+ mechanism_id: m.mechanism_id,
308
+ finding_type: "template_mechanism_drift",
309
+ message: `template_only_advisory 不应有代码 enforcer`,
310
+ });
311
+ }
312
+ if (m.status === "code_only_enforced" && m.template_assets.length > 0) {
313
+ findings.push({
314
+ severity: "advisory",
315
+ mechanism_id: m.mechanism_id,
316
+ finding_type: "template_mechanism_drift",
317
+ message: `code_only_enforced 已有模板资产,建议升级为 dual_layer_enforced`,
318
+ });
319
+ }
320
+ }
321
+ return findings;
322
+ }
323
+ // ── 适配器过度承诺检查 ──
324
+ /**
325
+ * 检查适配器文件是否存在过度承诺(承诺强制行为但无机制支持)。
326
+ */
327
+ function auditAdapterPromises(rootDir, maps) {
328
+ const results = [];
329
+ const adapterFiles = [
330
+ "src/adapters/claude_code/hooks.ts",
331
+ "src/adapters/claude_code/claude_md.ts",
332
+ "src/adapters/shared/workflow_template.ts",
333
+ "src/adapters/trae/trae_rules.ts",
334
+ "src/adapters/codex/codex_rules.ts",
335
+ ];
336
+ const keywordToMechanism = [
337
+ { keywords: ["意图路由", "intent-router"], mechanism_id: "mc-intent-router" },
338
+ { keywords: ["工作流契约", "workflow"], mechanism_id: "mc-workflow-contract" },
339
+ { keywords: ["知识注入", "knowledge-injection"], mechanism_id: "mc-knowledge-injection-boundary" },
340
+ { keywords: ["工具调用", "tool-invocation"], mechanism_id: "mc-tool-invocation-contract" },
341
+ { keywords: ["验证契约", "verify", "verifier"], mechanism_id: "mc-verifier" },
342
+ { keywords: ["防孤岛", "main-path"], mechanism_id: "mc-main-path-integration" },
343
+ { keywords: ["隐私", "敏感信息", "privacy"], mechanism_id: "mc-privacy-boundary" },
344
+ { keywords: ["命令执行", "command-execution"], mechanism_id: "mc-command-execution" },
345
+ { keywords: ["核心工程", "core-engineering"], mechanism_id: "mc-core-engineering-principles" },
346
+ { keywords: ["交付门禁", "delivery"], mechanism_id: "mc-delivery-gate" },
347
+ { keywords: ["任务上下文", "task-context"], mechanism_id: "mc-task-context-lifecycle" },
348
+ ];
349
+ for (const file of adapterFiles) {
350
+ const fullPath = path.join(rootDir, file);
351
+ if (!fs.existsSync(fullPath))
352
+ continue;
353
+ let content;
354
+ try {
355
+ content = fs.readFileSync(fullPath, "utf-8");
356
+ }
357
+ catch {
358
+ console.error("[soloForge] TemplateMechanismAuditor: 读取适配器文件失败", fullPath);
359
+ continue;
360
+ }
361
+ for (const { keywords, mechanism_id } of keywordToMechanism) {
362
+ for (const kw of keywords) {
363
+ const lines = content.split("\n");
364
+ for (const line of lines) {
365
+ if (!line.toLowerCase().includes(kw.toLowerCase()))
366
+ continue;
367
+ for (const { pattern, keywords: promiseKws } of ENFORCED_PROMISE_PATTERNS) {
368
+ if (pattern.test(line)) {
369
+ const map = maps.get(mechanism_id);
370
+ const backed = !!map && map.status === "dual_layer_enforced" && map.code_enforcers.length > 0;
371
+ const hasEnforcer = !!map && map.code_enforcers.length > 0;
372
+ if (!backed) {
373
+ const already = results.some((r) => r.source_file === file && r.promised_mechanism_id === mechanism_id);
374
+ if (!already) {
375
+ results.push({
376
+ source_file: file,
377
+ promised_mechanism_id: mechanism_id,
378
+ promise_keywords: promiseKws,
379
+ backed_by_mechanism: backed,
380
+ mechanism_status: map?.status,
381
+ has_enforcer: hasEnforcer,
382
+ issue: !map ? "drift" : "overpromised",
383
+ });
384
+ }
385
+ }
386
+ }
387
+ }
388
+ }
389
+ }
390
+ }
391
+ }
392
+ return results;
393
+ }
394
+ // ── 注入守卫 ──
395
+ /**
396
+ * 检查资产是否允许注入到当前上下文。
397
+ * 基于资产消费模式、所属机制状态、当前路由和工作流进行多重校验。
398
+ * @param asset - 可消费资产引用
399
+ * @param currentRoute - 当前路由(可选)
400
+ * @param currentWorkflow - 当前工作流(可选)
401
+ * @returns 注入是否允许及原因
402
+ */
403
+ export function isInjectionAllowed(asset, currentRoute, currentWorkflow) {
404
+ const mode = asset.consumption_mode;
405
+ if (mode === "deprecated") {
406
+ return { allowed: false, reason: "deprecated asset must not be injected" };
407
+ }
408
+ if (mode === "manual_reference") {
409
+ return { allowed: false, reason: "manual_reference asset requires explicit request" };
410
+ }
411
+ if (mode === "copy_only") {
412
+ return { allowed: false, reason: "copy_only asset is only copied on init, not injected into prompt" };
413
+ }
414
+ if (!asset.owner_mechanism_id) {
415
+ return { allowed: false, reason: `asset ${asset.id} has no owner_mechanism_id` };
416
+ }
417
+ const maps = listMechanismLayerMaps();
418
+ const map = maps.find((m) => m.mechanism_id === asset.owner_mechanism_id);
419
+ if (!map) {
420
+ return { allowed: false, reason: `owner_mechanism_id ${asset.owner_mechanism_id} not found in registry` };
421
+ }
422
+ if (map.status === "template_only_advisory" && mode === "required") {
423
+ return { allowed: false, reason: `template_only_advisory mechanism ${map.mechanism_id} assets cannot be required-injected` };
424
+ }
425
+ if (map.status === "deprecated") {
426
+ return { allowed: false, reason: `mechanism ${map.mechanism_id} is deprecated` };
427
+ }
428
+ if (map.status === "dual_layer_enforced" && currentRoute && map.injected_routes && map.injected_routes.length > 0) {
429
+ if (!map.injected_routes.includes(currentRoute)) {
430
+ return { allowed: false, reason: `route ${currentRoute} not in mechanism ${map.mechanism_id} injected_routes` };
431
+ }
432
+ }
433
+ if (map.status === "dual_layer_enforced" && currentWorkflow && map.injected_workflows && map.injected_workflows.length > 0) {
434
+ if (!map.injected_workflows.includes(currentWorkflow)) {
435
+ return { allowed: false, reason: `workflow ${currentWorkflow} not in mechanism ${map.mechanism_id} injected_workflows` };
436
+ }
437
+ }
438
+ if ((mode === "required" || mode === "supporting") &&
439
+ map.status !== "dual_layer_enforced" && map.status !== "experimental_dual_layer") {
440
+ return { allowed: false, reason: `mechanism ${map.mechanism_id} status ${map.status} does not support required/supporting injection` };
441
+ }
442
+ return { allowed: true };
443
+ }
444
+ // ── 薄模板发现 ──
445
+ /**
446
+ * 检查 workflow_template.ts 中的厚重内容(工具说明/流程细节/治理闭环等)。
447
+ */
448
+ function computeThinTemplateFindings(rootDir) {
449
+ const findings = [];
450
+ const wfPath = path.join(rootDir, "src/adapters/shared/workflow_template.ts");
451
+ if (!fs.existsSync(wfPath))
452
+ return findings;
453
+ const content = fs.readFileSync(wfPath, "utf-8");
454
+ const lines = content.split("\n");
455
+ // 检查厚重清单内容(共享模板中的复选框列表)
456
+ const thickPatterns = [
457
+ /- \[x\].{10,}/,
458
+ /##\s+编码规范/,
459
+ /##\s+工程执行/,
460
+ /步骤\s+5\.[5-8]/,
461
+ /任务完成后,可执行治理闭环检查/,
462
+ /四个工具按以下时机调用/,
463
+ /sf_status\s+action=/,
464
+ /sf_audit_sample.*时机/,
465
+ /sf_capability_update.*confirm/,
466
+ ];
467
+ const hasThickContent = thickPatterns.some((p) => p.test(content));
468
+ if (hasThickContent) {
469
+ findings.push({
470
+ severity: "hard_fail",
471
+ mechanism_id: "template_audit",
472
+ finding_type: "thick_knowledge_in_shared_template",
473
+ message: "workflow_template.ts 包含厚重知识内容(工具说明/流程细节/治理闭环),应拆分为独立知识资产",
474
+ });
475
+ }
476
+ // 逐段密度检查:任何 ### 步骤 段落超过 8 行即为厚重
477
+ const sectionRegex = /^###\s+步骤/gm;
478
+ let match;
479
+ while ((match = sectionRegex.exec(content)) !== null) {
480
+ const startIdx = match.index;
481
+ const afterSection = content.slice(startIdx);
482
+ const sectionLines = afterSection.split("\n");
483
+ let bodyLen = 0;
484
+ for (let i = 1; i < sectionLines.length; i++) {
485
+ if (/^###\s+步骤|^##\s+/.test(sectionLines[i]))
486
+ break;
487
+ bodyLen++;
488
+ }
489
+ if (bodyLen > 8) {
490
+ findings.push({
491
+ severity: "hard_fail",
492
+ mechanism_id: "template_audit",
493
+ finding_type: "thick_knowledge_in_shared_template",
494
+ message: "workflow_template.ts 步骤段落超过 8 行,属于厚重内容",
495
+ });
496
+ break;
497
+ }
498
+ }
499
+ // 检查过大模板(薄化后超过 100 行)
500
+ if (lines.length > 100) {
501
+ findings.push({
502
+ severity: "hard_fail",
503
+ mechanism_id: "template_audit",
504
+ finding_type: "template_too_thick",
505
+ message: "workflow_template.ts 有 " + lines.length + " 行,超过 100 行上限",
506
+ });
507
+ }
508
+ // 检查 ## 任务管理 section(工具 API 文档)
509
+ if (/##\s+任务管理/.test(content)) {
510
+ findings.push({
511
+ severity: "hard_fail",
512
+ mechanism_id: "template_audit",
513
+ finding_type: "thick_knowledge_in_shared_template",
514
+ message: "workflow_template.ts 包含 任务管理 section,属于工具文档,应迁移至知识库",
515
+ });
516
+ }
517
+ return findings;
518
+ }
519
+ // ── 工作流硬性规则发现 ──
520
+ /**
521
+ * 检查工作流模板硬性规则的一致性。
522
+ * 校验 marker 与 manifest 的对应关系、source_ref 有效性和机制状态。
523
+ */
524
+ function computeWorkflowHardRuleFindings(rootDir, mechanismMap) {
525
+ const findings = [];
526
+ const registeredRules = new Map(WORKFLOW_TEMPLATE_HARD_RULES.map(r => [r.rule_id, r]));
527
+ const wfPath = path.join(rootDir, "src/adapters/shared/workflow_template.ts");
528
+ // 收集模板文件中所有 marker
529
+ const markerIds = new Set();
530
+ const markerMechanisms = new Map();
531
+ if (fs.existsSync(wfPath)) {
532
+ const content = fs.readFileSync(wfPath, "utf-8");
533
+ const markerRegex = /@sf-hard-rule\s+id=(\S+)\s+mechanism=(\S+)/g;
534
+ let match;
535
+ while ((match = markerRegex.exec(content)) !== null) {
536
+ markerIds.add(match[1]);
537
+ markerMechanisms.set(match[1], match[2]);
538
+ }
539
+ // 检查 1: marker → manifest(marker 存在但未在 manifest 中注册)
540
+ for (const markerId of markerIds) {
541
+ if (!registeredRules.has(markerId)) {
542
+ findings.push({
543
+ severity: "hard_fail",
544
+ mechanism_id: "workflow_hard_rule",
545
+ finding_type: "unregistered_hard_rule",
546
+ message: `@sf-hard-rule id=${markerId} 未在 WORKFLOW_TEMPLATE_HARD_RULES 中注册`,
547
+ });
548
+ }
549
+ }
550
+ }
551
+ // 检查 2: manifest → marker(manifest 规则在模板中无对应 marker)
552
+ for (const rule of WORKFLOW_TEMPLATE_HARD_RULES) {
553
+ if (!markerIds.has(rule.rule_id)) {
554
+ findings.push({
555
+ severity: "hard_fail",
556
+ mechanism_id: rule.mechanism_id,
557
+ finding_type: "unregistered_hard_rule",
558
+ message: `manifest rule ${rule.rule_id} 在 workflow_template.ts 中无对应 @sf-hard-rule marker`,
559
+ });
560
+ }
561
+ }
562
+ // 检查 3: source_ref 文件是否存在
563
+ for (const rule of WORKFLOW_TEMPLATE_HARD_RULES) {
564
+ const anchorSep = rule.source_ref.indexOf("#");
565
+ const sourceFile = anchorSep >= 0 ? rule.source_ref.substring(0, anchorSep) : rule.source_ref;
566
+ if (!fs.existsSync(path.join(rootDir, sourceFile))) {
567
+ findings.push({
568
+ severity: "hard_fail",
569
+ mechanism_id: rule.mechanism_id,
570
+ finding_type: "unregistered_hard_rule",
571
+ message: `manifest rule ${rule.rule_id} source_ref 文件不存在: ${sourceFile}`,
572
+ });
573
+ }
574
+ }
575
+ // 检查 4: source_ref anchor 是否与 rule_id 一致
576
+ for (const rule of WORKFLOW_TEMPLATE_HARD_RULES) {
577
+ const anchorSep = rule.source_ref.indexOf("#");
578
+ const anchorId = anchorSep >= 0 ? rule.source_ref.substring(anchorSep + 1) : undefined;
579
+ if (anchorId && anchorId !== rule.rule_id) {
580
+ findings.push({
581
+ severity: "hard_fail",
582
+ mechanism_id: rule.mechanism_id,
583
+ finding_type: "unregistered_hard_rule",
584
+ message: `manifest rule ${rule.rule_id} source_ref anchor=${anchorId} 与 rule_id 不一致`,
585
+ });
586
+ }
587
+ }
588
+ // 检查 5: marker mechanism 是否与 manifest mechanism_id 一致
589
+ for (const rule of WORKFLOW_TEMPLATE_HARD_RULES) {
590
+ const markerMech = markerMechanisms.get(rule.rule_id);
591
+ if (markerMech && markerMech !== rule.mechanism_id) {
592
+ findings.push({
593
+ severity: "hard_fail",
594
+ mechanism_id: rule.mechanism_id,
595
+ finding_type: "unregistered_hard_rule",
596
+ message: `rule ${rule.rule_id} marker mechanism=${markerMech} vs manifest mechanism_id=${rule.mechanism_id}`,
597
+ });
598
+ }
599
+ }
600
+ // 检查 6: manifest mechanism_id 是否存在且为 dual_layer_enforced
601
+ for (const rule of WORKFLOW_TEMPLATE_HARD_RULES) {
602
+ const mech = mechanismMap.get(rule.mechanism_id);
603
+ if (!mech) {
604
+ findings.push({
605
+ severity: "hard_fail",
606
+ mechanism_id: rule.mechanism_id,
607
+ finding_type: "unregistered_hard_rule",
608
+ message: `manifest rule ${rule.rule_id} mechanism_id=${rule.mechanism_id} 未在机制注册表中找到`,
609
+ });
610
+ }
611
+ else if (mech.status !== "dual_layer_enforced") {
612
+ findings.push({
613
+ severity: "hard_fail",
614
+ mechanism_id: rule.mechanism_id,
615
+ finding_type: "unregistered_hard_rule",
616
+ message: `manifest rule ${rule.rule_id} mechanism_id=${rule.mechanism_id} status=${mech.status}, 应为 dual_layer_enforced`,
617
+ });
618
+ }
619
+ }
620
+ return findings;
621
+ }
622
+ //# sourceMappingURL=template_mechanism_auditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template_mechanism_auditor.js","sourceRoot":"","sources":["../../src/engine/template_mechanism_auditor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"test_generator.d.ts","sourceRoot":"","sources":["../../src/engine/test_generator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAgB,aAAa,EAAE,MAAM,aAAa,CAAC;AAoM7E;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EAAE,EACtB,iBAAiB,EAAE,MAAM,EAAE,EAC3B,OAAO,EAAE,aAAa,GACrB,YAAY,EAAE,CA+BhB"}
1
+ {"version":3,"file":"test_generator.d.ts","sourceRoot":"","sources":["../../src/engine/test_generator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAgB,aAAa,EAAE,MAAM,aAAa,CAAC;AAoM7E;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EAAE,EACtB,iBAAiB,EAAE,MAAM,EAAE,EAC3B,OAAO,EAAE,aAAa,GACrB,YAAY,EAAE,CAqChB"}