soloforge 1.5.0 → 2.0.0

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 (2551) hide show
  1. package/CHANGELOG.md +279 -0
  2. package/README.md +93 -54
  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 +6 -6
  6. package/dist/adapters/claude_code/claude_md.js.map +1 -1
  7. package/dist/adapters/claude_code/hooks.d.ts.map +1 -1
  8. package/dist/adapters/claude_code/hooks.js +2 -2
  9. package/dist/adapters/claude_code/hooks.js.map +1 -1
  10. package/dist/adapters/claude_code/tools.d.ts +9 -327
  11. package/dist/adapters/claude_code/tools.d.ts.map +1 -1
  12. package/dist/adapters/claude_code/tools.js +7 -4221
  13. package/dist/adapters/claude_code/tools.js.map +1 -1
  14. package/dist/adapters/codex/codex_config.d.ts.map +1 -1
  15. package/dist/adapters/codex/codex_config.js +2 -2
  16. package/dist/adapters/codex/codex_config.js.map +1 -1
  17. package/dist/adapters/codex/codex_rules.d.ts +2 -1
  18. package/dist/adapters/codex/codex_rules.d.ts.map +1 -1
  19. package/dist/adapters/codex/codex_rules.js +25 -2
  20. package/dist/adapters/codex/codex_rules.js.map +1 -1
  21. package/dist/adapters/shared/hook_command.d.ts +20 -0
  22. package/dist/adapters/shared/hook_command.d.ts.map +1 -0
  23. package/dist/adapters/shared/hook_command.js +80 -0
  24. package/dist/adapters/shared/hook_command.js.map +1 -0
  25. package/dist/adapters/shared/workflow_template.d.ts +1 -1
  26. package/dist/adapters/shared/workflow_template.d.ts.map +1 -1
  27. package/dist/adapters/shared/workflow_template.js +4 -5
  28. package/dist/adapters/shared/workflow_template.js.map +1 -1
  29. package/dist/adapters/trae/trae_config.d.ts +17 -1
  30. package/dist/adapters/trae/trae_config.d.ts.map +1 -1
  31. package/dist/adapters/trae/trae_config.js +3 -3
  32. package/dist/adapters/trae/trae_config.js.map +1 -1
  33. package/dist/adapters/trae/trae_rules.d.ts +2 -1
  34. package/dist/adapters/trae/trae_rules.d.ts.map +1 -1
  35. package/dist/adapters/trae/trae_rules.js +25 -2
  36. package/dist/adapters/trae/trae_rules.js.map +1 -1
  37. package/dist/bin/args.d.ts +13 -0
  38. package/dist/bin/args.d.ts.map +1 -0
  39. package/dist/bin/args.js +52 -0
  40. package/dist/bin/args.js.map +1 -0
  41. package/dist/bin/commands/analyze.d.ts +7 -0
  42. package/dist/bin/commands/analyze.d.ts.map +1 -0
  43. package/dist/bin/commands/analyze.js +52 -0
  44. package/dist/bin/commands/analyze.js.map +1 -0
  45. package/dist/bin/commands/audit.d.ts +11 -0
  46. package/dist/bin/commands/audit.d.ts.map +1 -0
  47. package/dist/bin/commands/audit.js +468 -0
  48. package/dist/bin/commands/audit.js.map +1 -0
  49. package/dist/bin/commands/check_bash.d.ts +15 -0
  50. package/dist/bin/commands/check_bash.d.ts.map +1 -0
  51. package/dist/bin/commands/check_bash.js +264 -0
  52. package/dist/bin/commands/check_bash.js.map +1 -0
  53. package/dist/bin/commands/check_write.d.ts +41 -0
  54. package/dist/bin/commands/check_write.d.ts.map +1 -0
  55. package/dist/bin/commands/check_write.js +437 -0
  56. package/dist/bin/commands/check_write.js.map +1 -0
  57. package/dist/bin/commands/hooks.d.ts +8 -0
  58. package/dist/bin/commands/hooks.d.ts.map +1 -0
  59. package/dist/bin/commands/hooks.js +83 -0
  60. package/dist/bin/commands/hooks.js.map +1 -0
  61. package/dist/bin/commands/init.d.ts +38 -0
  62. package/dist/bin/commands/init.d.ts.map +1 -0
  63. package/dist/bin/commands/init.js +406 -0
  64. package/dist/bin/commands/init.js.map +1 -0
  65. package/dist/bin/commands/modify.d.ts +7 -0
  66. package/dist/bin/commands/modify.d.ts.map +1 -0
  67. package/dist/bin/commands/modify.js +74 -0
  68. package/dist/bin/commands/modify.js.map +1 -0
  69. package/dist/bin/commands/reasoning.d.ts +14 -0
  70. package/dist/bin/commands/reasoning.d.ts.map +1 -0
  71. package/dist/bin/commands/reasoning.js +158 -0
  72. package/dist/bin/commands/reasoning.js.map +1 -0
  73. package/dist/bin/commands/review.d.ts +7 -0
  74. package/dist/bin/commands/review.d.ts.map +1 -0
  75. package/dist/bin/commands/review.js +79 -0
  76. package/dist/bin/commands/review.js.map +1 -0
  77. package/dist/bin/commands/status.d.ts +12 -0
  78. package/dist/bin/commands/status.d.ts.map +1 -0
  79. package/dist/bin/commands/status.js +614 -0
  80. package/dist/bin/commands/status.js.map +1 -0
  81. package/dist/bin/commands/sync.d.ts +11 -0
  82. package/dist/bin/commands/sync.d.ts.map +1 -0
  83. package/dist/bin/commands/sync.js +517 -0
  84. package/dist/bin/commands/sync.js.map +1 -0
  85. package/dist/bin/commands/validate.d.ts +10 -0
  86. package/dist/bin/commands/validate.d.ts.map +1 -0
  87. package/dist/bin/commands/validate.js +504 -0
  88. package/dist/bin/commands/validate.js.map +1 -0
  89. package/dist/bin/config_commands.d.ts +21 -20
  90. package/dist/bin/config_commands.d.ts.map +1 -1
  91. package/dist/bin/config_commands.js +214 -227
  92. package/dist/bin/config_commands.js.map +1 -1
  93. package/dist/bin/soloforge.d.ts +1 -1
  94. package/dist/bin/soloforge.d.ts.map +1 -1
  95. package/dist/bin/soloforge.js +100 -2786
  96. package/dist/bin/soloforge.js.map +1 -1
  97. package/dist/engine/adapter_prompt_contract.d.ts +2 -2
  98. package/dist/engine/adapter_prompt_contract.d.ts.map +1 -1
  99. package/dist/engine/adapter_prompt_contract.js +1 -1
  100. package/dist/engine/adapter_prompt_contract.js.map +1 -1
  101. package/dist/engine/audit/audit_pool.d.ts.map +1 -0
  102. package/dist/engine/audit/audit_pool.js +121 -0
  103. package/dist/engine/audit/audit_pool.js.map +1 -0
  104. package/dist/engine/audit/audit_sampler.d.ts +22 -0
  105. package/dist/engine/audit/audit_sampler.d.ts.map +1 -0
  106. package/dist/engine/audit/audit_sampler.js +29 -0
  107. package/dist/engine/audit/audit_sampler.js.map +1 -0
  108. package/dist/engine/audit/code_reviewer.d.ts +73 -0
  109. package/dist/engine/audit/code_reviewer.d.ts.map +1 -0
  110. package/dist/engine/audit/code_reviewer.js +632 -0
  111. package/dist/engine/audit/code_reviewer.js.map +1 -0
  112. package/dist/engine/audit/confidence_scorer.d.ts +48 -0
  113. package/dist/engine/audit/confidence_scorer.d.ts.map +1 -0
  114. package/dist/engine/audit/confidence_scorer.js +64 -0
  115. package/dist/engine/audit/confidence_scorer.js.map +1 -0
  116. package/dist/engine/audit/core_engineering_principles.d.ts +155 -0
  117. package/dist/engine/audit/core_engineering_principles.d.ts.map +1 -0
  118. package/dist/engine/audit/core_engineering_principles.js +414 -0
  119. package/dist/engine/audit/core_engineering_principles.js.map +1 -0
  120. package/dist/engine/audit/core_experience_principle.d.ts.map +1 -0
  121. package/dist/engine/audit/core_experience_principle.js +349 -0
  122. package/dist/engine/audit/core_experience_principle.js.map +1 -0
  123. package/dist/engine/audit/debt_reporter.d.ts +12 -0
  124. package/dist/engine/audit/debt_reporter.d.ts.map +1 -0
  125. package/dist/engine/audit/debt_reporter.js +94 -0
  126. package/dist/engine/audit/debt_reporter.js.map +1 -0
  127. package/dist/engine/audit/debt_tracker.d.ts +72 -0
  128. package/dist/engine/audit/debt_tracker.d.ts.map +1 -0
  129. package/dist/engine/audit/debt_tracker.js +231 -0
  130. package/dist/engine/audit/debt_tracker.js.map +1 -0
  131. package/dist/engine/audit/debugger.d.ts +15 -0
  132. package/dist/engine/audit/debugger.d.ts.map +1 -0
  133. package/dist/engine/audit/debugger.js +415 -0
  134. package/dist/engine/audit/debugger.js.map +1 -0
  135. package/dist/engine/audit/degradation.d.ts.map +1 -0
  136. package/dist/engine/audit/degradation.js.map +1 -0
  137. package/dist/engine/audit/delivery.d.ts +49 -0
  138. package/dist/engine/audit/delivery.d.ts.map +1 -0
  139. package/dist/engine/audit/delivery.js +405 -0
  140. package/dist/engine/audit/delivery.js.map +1 -0
  141. package/dist/engine/audit/delivery_readiness.d.ts +72 -0
  142. package/dist/engine/audit/delivery_readiness.d.ts.map +1 -0
  143. package/dist/engine/audit/delivery_readiness.js +200 -0
  144. package/dist/engine/audit/delivery_readiness.js.map +1 -0
  145. package/dist/engine/audit/developer_sovereignty.d.ts +24 -0
  146. package/dist/engine/audit/developer_sovereignty.d.ts.map +1 -0
  147. package/dist/engine/audit/developer_sovereignty.js +137 -0
  148. package/dist/engine/audit/developer_sovereignty.js.map +1 -0
  149. package/dist/engine/audit/diagnostic_registry.d.ts.map +1 -0
  150. package/dist/engine/audit/diagnostic_registry.js +288 -0
  151. package/dist/engine/audit/diagnostic_registry.js.map +1 -0
  152. package/dist/engine/audit/evolver.d.ts +78 -0
  153. package/dist/engine/audit/evolver.d.ts.map +1 -0
  154. package/dist/engine/audit/evolver.js +402 -0
  155. package/dist/engine/audit/evolver.js.map +1 -0
  156. package/dist/engine/audit/failure_classifier.d.ts +39 -0
  157. package/dist/engine/audit/failure_classifier.d.ts.map +1 -0
  158. package/dist/engine/audit/failure_classifier.js +175 -0
  159. package/dist/engine/audit/failure_classifier.js.map +1 -0
  160. package/dist/engine/audit/failure_report.d.ts.map +1 -0
  161. package/dist/engine/audit/failure_report.js.map +1 -0
  162. package/dist/engine/audit/governance_report.d.ts +101 -0
  163. package/dist/engine/audit/governance_report.d.ts.map +1 -0
  164. package/dist/engine/audit/governance_report.js +185 -0
  165. package/dist/engine/audit/governance_report.js.map +1 -0
  166. package/dist/engine/audit/java_quality_guard.d.ts.map +1 -0
  167. package/dist/engine/audit/java_quality_guard.js +228 -0
  168. package/dist/engine/audit/java_quality_guard.js.map +1 -0
  169. package/dist/engine/audit/main_path_integration_contract/constants.d.ts +27 -0
  170. package/dist/engine/audit/main_path_integration_contract/constants.d.ts.map +1 -0
  171. package/dist/engine/audit/main_path_integration_contract/constants.js +71 -0
  172. package/dist/engine/audit/main_path_integration_contract/constants.js.map +1 -0
  173. package/dist/engine/audit/main_path_integration_contract/factories.d.ts +35 -0
  174. package/dist/engine/audit/main_path_integration_contract/factories.d.ts.map +1 -0
  175. package/dist/engine/audit/main_path_integration_contract/factories.js +62 -0
  176. package/dist/engine/audit/main_path_integration_contract/factories.js.map +1 -0
  177. package/dist/engine/audit/main_path_integration_contract/gates.d.ts +25 -0
  178. package/dist/engine/audit/main_path_integration_contract/gates.d.ts.map +1 -0
  179. package/dist/engine/audit/main_path_integration_contract/gates.js +307 -0
  180. package/dist/engine/audit/main_path_integration_contract/gates.js.map +1 -0
  181. package/dist/engine/audit/main_path_integration_contract/index.d.ts +17 -0
  182. package/dist/engine/audit/main_path_integration_contract/index.d.ts.map +1 -0
  183. package/dist/engine/audit/main_path_integration_contract/index.js +21 -0
  184. package/dist/engine/audit/main_path_integration_contract/index.js.map +1 -0
  185. package/dist/engine/audit/main_path_integration_contract/queries.d.ts +46 -0
  186. package/dist/engine/audit/main_path_integration_contract/queries.d.ts.map +1 -0
  187. package/dist/engine/audit/main_path_integration_contract/queries.js +91 -0
  188. package/dist/engine/audit/main_path_integration_contract/queries.js.map +1 -0
  189. package/dist/engine/audit/main_path_integration_contract/scanning.d.ts +13 -0
  190. package/dist/engine/audit/main_path_integration_contract/scanning.d.ts.map +1 -0
  191. package/dist/engine/audit/main_path_integration_contract/scanning.js +476 -0
  192. package/dist/engine/audit/main_path_integration_contract/scanning.js.map +1 -0
  193. package/dist/engine/audit/main_path_integration_contract/scanning_infra.d.ts +35 -0
  194. package/dist/engine/audit/main_path_integration_contract/scanning_infra.d.ts.map +1 -0
  195. package/dist/engine/audit/main_path_integration_contract/scanning_infra.js +343 -0
  196. package/dist/engine/audit/main_path_integration_contract/scanning_infra.js.map +1 -0
  197. package/dist/engine/audit/main_path_integration_contract/types.d.ts +87 -0
  198. package/dist/engine/audit/main_path_integration_contract/types.d.ts.map +1 -0
  199. package/dist/engine/audit/main_path_integration_contract/types.js +5 -0
  200. package/dist/engine/audit/main_path_integration_contract/types.js.map +1 -0
  201. package/dist/engine/audit/main_path_integration_contract.d.ts +13 -0
  202. package/dist/engine/audit/main_path_integration_contract.d.ts.map +1 -0
  203. package/dist/engine/audit/main_path_integration_contract.js +17 -0
  204. package/dist/engine/audit/main_path_integration_contract.js.map +1 -0
  205. package/dist/engine/audit/mutation_audit.d.ts +39 -0
  206. package/dist/engine/audit/mutation_audit.d.ts.map +1 -0
  207. package/dist/engine/audit/mutation_audit.js +153 -0
  208. package/dist/engine/audit/mutation_audit.js.map +1 -0
  209. package/dist/engine/audit/observability.d.ts +68 -0
  210. package/dist/engine/audit/observability.d.ts.map +1 -0
  211. package/dist/engine/audit/observability.js +437 -0
  212. package/dist/engine/audit/observability.js.map +1 -0
  213. package/dist/engine/audit/privacy_grants.d.ts +108 -0
  214. package/dist/engine/audit/privacy_grants.d.ts.map +1 -0
  215. package/dist/engine/audit/privacy_grants.js +171 -0
  216. package/dist/engine/audit/privacy_grants.js.map +1 -0
  217. package/dist/engine/audit/privacy_patterns.d.ts +24 -0
  218. package/dist/engine/audit/privacy_patterns.d.ts.map +1 -0
  219. package/dist/engine/audit/privacy_patterns.js +143 -0
  220. package/dist/engine/audit/privacy_patterns.js.map +1 -0
  221. package/dist/engine/audit/privacy_scanning.d.ts +153 -0
  222. package/dist/engine/audit/privacy_scanning.d.ts.map +1 -0
  223. package/dist/engine/audit/privacy_scanning.js +567 -0
  224. package/dist/engine/audit/privacy_scanning.js.map +1 -0
  225. package/dist/engine/audit/privacy_secret_contract.d.ts +12 -0
  226. package/dist/engine/audit/privacy_secret_contract.d.ts.map +1 -0
  227. package/dist/engine/audit/privacy_secret_contract.js +14 -0
  228. package/dist/engine/audit/privacy_secret_contract.js.map +1 -0
  229. package/dist/engine/audit/privacy_types.d.ts +48 -0
  230. package/dist/engine/audit/privacy_types.d.ts.map +1 -0
  231. package/dist/engine/audit/privacy_types.js +14 -0
  232. package/dist/engine/audit/privacy_types.js.map +1 -0
  233. package/dist/engine/audit/risk_sampler.d.ts +45 -0
  234. package/dist/engine/audit/risk_sampler.d.ts.map +1 -0
  235. package/dist/engine/audit/risk_sampler.js +81 -0
  236. package/dist/engine/audit/risk_sampler.js.map +1 -0
  237. package/dist/engine/audit/runtime_safety.d.ts.map +1 -0
  238. package/dist/engine/audit/runtime_safety.js +200 -0
  239. package/dist/engine/audit/runtime_safety.js.map +1 -0
  240. package/dist/engine/audit/semantic_evidence.d.ts +33 -0
  241. package/dist/engine/audit/semantic_evidence.d.ts.map +1 -0
  242. package/dist/engine/audit/semantic_evidence.js +93 -0
  243. package/dist/engine/audit/semantic_evidence.js.map +1 -0
  244. package/dist/engine/audit/test_generator.d.ts +10 -0
  245. package/dist/engine/audit/test_generator.d.ts.map +1 -0
  246. package/dist/engine/audit/test_generator.js +268 -0
  247. package/dist/engine/audit/test_generator.js.map +1 -0
  248. package/dist/engine/audit/test_quality.d.ts +39 -0
  249. package/dist/engine/audit/test_quality.d.ts.map +1 -0
  250. package/dist/engine/audit/test_quality.js +642 -0
  251. package/dist/engine/audit/test_quality.js.map +1 -0
  252. package/dist/engine/audit/test_strategy.d.ts.map +1 -0
  253. package/dist/engine/audit/test_strategy.js.map +1 -0
  254. package/dist/engine/change_coordinator.d.ts +1 -1
  255. package/dist/engine/change_coordinator.d.ts.map +1 -1
  256. package/dist/engine/change_coordinator.js +33 -33
  257. package/dist/engine/change_coordinator.js.map +1 -1
  258. package/dist/engine/cognitive_anchor.d.ts.map +1 -1
  259. package/dist/engine/cognitive_anchor.js +7 -8
  260. package/dist/engine/cognitive_anchor.js.map +1 -1
  261. package/dist/engine/config/config_write_boundary.d.ts.map +1 -0
  262. package/dist/engine/config/config_write_boundary.js +85 -0
  263. package/dist/engine/config/config_write_boundary.js.map +1 -0
  264. package/dist/engine/config/conflicts.d.ts +39 -0
  265. package/dist/engine/config/conflicts.d.ts.map +1 -0
  266. package/dist/engine/config/conflicts.js +79 -0
  267. package/dist/engine/config/conflicts.js.map +1 -0
  268. package/dist/engine/config/detector/blueprint.d.ts +25 -0
  269. package/dist/engine/config/detector/blueprint.d.ts.map +1 -0
  270. package/dist/engine/config/detector/blueprint.js +47 -0
  271. package/dist/engine/config/detector/blueprint.js.map +1 -0
  272. package/dist/engine/config/detector/fingerprint.d.ts +67 -0
  273. package/dist/engine/config/detector/fingerprint.d.ts.map +1 -0
  274. package/dist/engine/config/detector/fingerprint.js +160 -0
  275. package/dist/engine/config/detector/fingerprint.js.map +1 -0
  276. package/dist/engine/config/detector/framework_map.d.ts +89 -0
  277. package/dist/engine/config/detector/framework_map.d.ts.map +1 -0
  278. package/dist/engine/config/detector/framework_map.js +406 -0
  279. package/dist/engine/config/detector/framework_map.js.map +1 -0
  280. package/dist/engine/config/detector/index.d.ts +12 -0
  281. package/dist/engine/config/detector/index.d.ts.map +1 -0
  282. package/dist/engine/config/detector/index.js +12 -0
  283. package/dist/engine/config/detector/index.js.map +1 -0
  284. package/dist/engine/config/detector/verify.d.ts +32 -0
  285. package/dist/engine/config/detector/verify.d.ts.map +1 -0
  286. package/dist/engine/config/detector/verify.js +107 -0
  287. package/dist/engine/config/detector/verify.js.map +1 -0
  288. package/dist/engine/config/intent.d.ts +26 -0
  289. package/dist/engine/config/intent.d.ts.map +1 -0
  290. package/dist/engine/config/intent.js +81 -0
  291. package/dist/engine/config/intent.js.map +1 -0
  292. package/dist/engine/config/intent_schema.d.ts +873 -0
  293. package/dist/engine/config/intent_schema.d.ts.map +1 -0
  294. package/dist/engine/config/intent_schema.js +98 -0
  295. package/dist/engine/config/intent_schema.js.map +1 -0
  296. package/dist/engine/config/regression_matrix.d.ts.map +1 -0
  297. package/dist/engine/config/regression_matrix.js +389 -0
  298. package/dist/engine/config/regression_matrix.js.map +1 -0
  299. package/dist/engine/config/resolver.d.ts +136 -0
  300. package/dist/engine/config/resolver.d.ts.map +1 -0
  301. package/dist/engine/config/resolver.js +251 -0
  302. package/dist/engine/config/resolver.js.map +1 -0
  303. package/dist/engine/context_engine/bootstrap.d.ts +12 -0
  304. package/dist/engine/context_engine/bootstrap.d.ts.map +1 -0
  305. package/dist/engine/context_engine/bootstrap.js +28 -0
  306. package/dist/engine/context_engine/bootstrap.js.map +1 -0
  307. package/dist/engine/context_engine/companion_injector.d.ts +49 -0
  308. package/dist/engine/context_engine/companion_injector.d.ts.map +1 -0
  309. package/dist/engine/context_engine/companion_injector.js +157 -0
  310. package/dist/engine/context_engine/companion_injector.js.map +1 -0
  311. package/dist/engine/context_engine/context_resolver.d.ts +46 -0
  312. package/dist/engine/context_engine/context_resolver.d.ts.map +1 -0
  313. package/dist/engine/context_engine/context_resolver.js +139 -0
  314. package/dist/engine/context_engine/context_resolver.js.map +1 -0
  315. package/dist/engine/context_engine/index.d.ts +25 -0
  316. package/dist/engine/context_engine/index.d.ts.map +1 -0
  317. package/dist/engine/context_engine/index.js +25 -0
  318. package/dist/engine/context_engine/index.js.map +1 -0
  319. package/dist/engine/context_engine/view_registry.d.ts +45 -0
  320. package/dist/engine/context_engine/view_registry.d.ts.map +1 -0
  321. package/dist/engine/context_engine/view_registry.js +36 -0
  322. package/dist/engine/context_engine/view_registry.js.map +1 -0
  323. package/dist/engine/context_engine/views/change_impact.d.ts +34 -0
  324. package/dist/engine/context_engine/views/change_impact.d.ts.map +1 -0
  325. package/dist/engine/context_engine/views/change_impact.js +288 -0
  326. package/dist/engine/context_engine/views/change_impact.js.map +1 -0
  327. package/dist/engine/context_engine/views/coverage_gap.d.ts +45 -0
  328. package/dist/engine/context_engine/views/coverage_gap.d.ts.map +1 -0
  329. package/dist/engine/context_engine/views/coverage_gap.js +238 -0
  330. package/dist/engine/context_engine/views/coverage_gap.js.map +1 -0
  331. package/dist/engine/context_engine/views/dependency_graph.d.ts +45 -0
  332. package/dist/engine/context_engine/views/dependency_graph.d.ts.map +1 -0
  333. package/dist/engine/context_engine/views/dependency_graph.js +358 -0
  334. package/dist/engine/context_engine/views/dependency_graph.js.map +1 -0
  335. package/dist/engine/context_engine/views/file_impact.d.ts +46 -0
  336. package/dist/engine/context_engine/views/file_impact.d.ts.map +1 -0
  337. package/dist/engine/context_engine/views/file_impact.js +181 -0
  338. package/dist/engine/context_engine/views/file_impact.js.map +1 -0
  339. package/dist/engine/context_engine/views/knowledge_ref.d.ts +37 -0
  340. package/dist/engine/context_engine/views/knowledge_ref.d.ts.map +1 -0
  341. package/dist/engine/context_engine/views/knowledge_ref.js +264 -0
  342. package/dist/engine/context_engine/views/knowledge_ref.js.map +1 -0
  343. package/dist/engine/context_engine/views/reference_trace.d.ts +49 -0
  344. package/dist/engine/context_engine/views/reference_trace.d.ts.map +1 -0
  345. package/dist/engine/context_engine/views/reference_trace.js +227 -0
  346. package/dist/engine/context_engine/views/reference_trace.js.map +1 -0
  347. package/dist/engine/contracts/architecture_decision_workshop.d.ts +63 -0
  348. package/dist/engine/contracts/architecture_decision_workshop.d.ts.map +1 -0
  349. package/dist/engine/contracts/architecture_decision_workshop.js +122 -0
  350. package/dist/engine/contracts/architecture_decision_workshop.js.map +1 -0
  351. package/dist/engine/contracts/architecture_design_contract.d.ts.map +1 -0
  352. package/dist/engine/contracts/architecture_design_contract.js.map +1 -0
  353. package/dist/engine/contracts/artifact_contract_registry.d.ts +138 -0
  354. package/dist/engine/contracts/artifact_contract_registry.d.ts.map +1 -0
  355. package/dist/engine/contracts/artifact_contract_registry.js +420 -0
  356. package/dist/engine/contracts/artifact_contract_registry.js.map +1 -0
  357. package/dist/engine/contracts/artifact_process_rules.d.ts +46 -0
  358. package/dist/engine/contracts/artifact_process_rules.d.ts.map +1 -0
  359. package/dist/engine/contracts/artifact_process_rules.js +396 -0
  360. package/dist/engine/contracts/artifact_process_rules.js.map +1 -0
  361. package/dist/engine/contracts/artifact_schema_registry.d.ts +139 -0
  362. package/dist/engine/contracts/artifact_schema_registry.d.ts.map +1 -0
  363. package/dist/engine/contracts/artifact_schema_registry.js +803 -0
  364. package/dist/engine/contracts/artifact_schema_registry.js.map +1 -0
  365. package/dist/engine/contracts/backend_implementation_contract.d.ts.map +1 -0
  366. package/dist/engine/contracts/backend_implementation_contract.js +164 -0
  367. package/dist/engine/contracts/backend_implementation_contract.js.map +1 -0
  368. package/dist/engine/contracts/behavior_coverage_verifier.d.ts +35 -0
  369. package/dist/engine/contracts/behavior_coverage_verifier.d.ts.map +1 -0
  370. package/dist/engine/contracts/behavior_coverage_verifier.js +220 -0
  371. package/dist/engine/contracts/behavior_coverage_verifier.js.map +1 -0
  372. package/dist/engine/contracts/brainstorm_contract.d.ts +48 -0
  373. package/dist/engine/contracts/brainstorm_contract.d.ts.map +1 -0
  374. package/dist/engine/contracts/brainstorm_contract.js +146 -0
  375. package/dist/engine/contracts/brainstorm_contract.js.map +1 -0
  376. package/dist/engine/contracts/capability_action_advisor.d.ts.map +1 -0
  377. package/dist/engine/contracts/capability_action_advisor.js +158 -0
  378. package/dist/engine/contracts/capability_action_advisor.js.map +1 -0
  379. package/dist/engine/contracts/capability_registry.d.ts.map +1 -0
  380. package/dist/engine/contracts/capability_registry.js +778 -0
  381. package/dist/engine/contracts/capability_registry.js.map +1 -0
  382. package/dist/engine/contracts/capability_state_store.d.ts +115 -0
  383. package/dist/engine/contracts/capability_state_store.d.ts.map +1 -0
  384. package/dist/engine/contracts/capability_state_store.js +182 -0
  385. package/dist/engine/contracts/capability_state_store.js.map +1 -0
  386. package/dist/engine/contracts/code_maintainability_observability_contract.d.ts.map +1 -0
  387. package/dist/engine/contracts/code_maintainability_observability_contract.js +711 -0
  388. package/dist/engine/contracts/code_maintainability_observability_contract.js.map +1 -0
  389. package/dist/engine/contracts/coding_readiness_gate.d.ts +46 -0
  390. package/dist/engine/contracts/coding_readiness_gate.d.ts.map +1 -0
  391. package/dist/engine/contracts/coding_readiness_gate.js +175 -0
  392. package/dist/engine/contracts/coding_readiness_gate.js.map +1 -0
  393. package/dist/engine/contracts/command_execution_contract.d.ts +216 -0
  394. package/dist/engine/contracts/command_execution_contract.d.ts.map +1 -0
  395. package/dist/engine/contracts/command_execution_contract.js +562 -0
  396. package/dist/engine/contracts/command_execution_contract.js.map +1 -0
  397. package/dist/engine/contracts/contract_guard.d.ts +37 -0
  398. package/dist/engine/contracts/contract_guard.d.ts.map +1 -0
  399. package/dist/engine/contracts/contract_guard.js +598 -0
  400. package/dist/engine/contracts/contract_guard.js.map +1 -0
  401. package/dist/engine/contracts/contract_registry/builtin_contracts_core.d.ts +10 -0
  402. package/dist/engine/contracts/contract_registry/builtin_contracts_core.d.ts.map +1 -0
  403. package/dist/engine/contracts/contract_registry/builtin_contracts_core.js +300 -0
  404. package/dist/engine/contracts/contract_registry/builtin_contracts_core.js.map +1 -0
  405. package/dist/engine/contracts/contract_registry/builtin_contracts_core_2.d.ts +10 -0
  406. package/dist/engine/contracts/contract_registry/builtin_contracts_core_2.d.ts.map +1 -0
  407. package/dist/engine/contracts/contract_registry/builtin_contracts_core_2.js +298 -0
  408. package/dist/engine/contracts/contract_registry/builtin_contracts_core_2.js.map +1 -0
  409. package/dist/engine/contracts/contract_registry/builtin_contracts_extended.d.ts +13 -0
  410. package/dist/engine/contracts/contract_registry/builtin_contracts_extended.d.ts.map +1 -0
  411. package/dist/engine/contracts/contract_registry/builtin_contracts_extended.js +494 -0
  412. package/dist/engine/contracts/contract_registry/builtin_contracts_extended.js.map +1 -0
  413. package/dist/engine/contracts/contract_registry/index.d.ts +8 -0
  414. package/dist/engine/contracts/contract_registry/index.d.ts.map +1 -0
  415. package/dist/engine/contracts/contract_registry/index.js +7 -0
  416. package/dist/engine/contracts/contract_registry/index.js.map +1 -0
  417. package/dist/engine/contracts/contract_registry/registry.d.ts +61 -0
  418. package/dist/engine/contracts/contract_registry/registry.d.ts.map +1 -0
  419. package/dist/engine/contracts/contract_registry/registry.js +191 -0
  420. package/dist/engine/contracts/contract_registry/registry.js.map +1 -0
  421. package/dist/engine/contracts/contract_registry/registry_internal.d.ts +12 -0
  422. package/dist/engine/contracts/contract_registry/registry_internal.d.ts.map +1 -0
  423. package/dist/engine/contracts/contract_registry/registry_internal.js +47 -0
  424. package/dist/engine/contracts/contract_registry/registry_internal.js.map +1 -0
  425. package/dist/engine/contracts/contract_registry/types.d.ts +47 -0
  426. package/dist/engine/contracts/contract_registry/types.d.ts.map +1 -0
  427. package/dist/engine/contracts/contract_registry/types.js +5 -0
  428. package/dist/engine/contracts/contract_registry/types.js.map +1 -0
  429. package/dist/engine/contracts/contract_registry/validation.d.ts +18 -0
  430. package/dist/engine/contracts/contract_registry/validation.d.ts.map +1 -0
  431. package/dist/engine/contracts/contract_registry/validation.js +339 -0
  432. package/dist/engine/contracts/contract_registry/validation.js.map +1 -0
  433. package/dist/engine/contracts/contract_registry.d.ts +9 -0
  434. package/dist/engine/contracts/contract_registry.d.ts.map +1 -0
  435. package/dist/engine/contracts/contract_registry.js +8 -0
  436. package/dist/engine/contracts/contract_registry.js.map +1 -0
  437. package/dist/engine/contracts/contract_state_store.d.ts +69 -0
  438. package/dist/engine/contracts/contract_state_store.d.ts.map +1 -0
  439. package/dist/engine/contracts/contract_state_store.js +170 -0
  440. package/dist/engine/contracts/contract_state_store.js.map +1 -0
  441. package/dist/engine/contracts/control_plane_contract.d.ts.map +1 -0
  442. package/dist/engine/contracts/control_plane_contract.js +266 -0
  443. package/dist/engine/contracts/control_plane_contract.js.map +1 -0
  444. package/dist/engine/contracts/decision_contract.d.ts +38 -0
  445. package/dist/engine/contracts/decision_contract.d.ts.map +1 -0
  446. package/dist/engine/contracts/decision_contract.js +57 -0
  447. package/dist/engine/contracts/decision_contract.js.map +1 -0
  448. package/dist/engine/contracts/decision_workshop.d.ts +166 -0
  449. package/dist/engine/contracts/decision_workshop.d.ts.map +1 -0
  450. package/dist/engine/contracts/decision_workshop.js.map +1 -0
  451. package/dist/engine/contracts/design_artifact_pack.d.ts +13 -0
  452. package/dist/engine/contracts/design_artifact_pack.d.ts.map +1 -0
  453. package/dist/engine/contracts/design_artifact_pack.js.map +1 -0
  454. package/dist/engine/contracts/design_lifecycle_contract.d.ts +60 -0
  455. package/dist/engine/contracts/design_lifecycle_contract.d.ts.map +1 -0
  456. package/dist/engine/contracts/design_lifecycle_contract.js +505 -0
  457. package/dist/engine/contracts/design_lifecycle_contract.js.map +1 -0
  458. package/dist/engine/contracts/detail_discipline.d.ts.map +1 -0
  459. package/dist/engine/contracts/detail_discipline.js.map +1 -0
  460. package/dist/engine/contracts/dual_layer_mechanism_registry/index.d.ts +9 -0
  461. package/dist/engine/contracts/dual_layer_mechanism_registry/index.d.ts.map +1 -0
  462. package/dist/engine/contracts/dual_layer_mechanism_registry/index.js +8 -0
  463. package/dist/engine/contracts/dual_layer_mechanism_registry/index.js.map +1 -0
  464. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_audit.d.ts +7 -0
  465. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_audit.d.ts.map +1 -0
  466. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_audit.js +414 -0
  467. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_audit.js.map +1 -0
  468. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_audit_tail.d.ts +7 -0
  469. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_audit_tail.d.ts.map +1 -0
  470. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_audit_tail.js +81 -0
  471. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_audit_tail.js.map +1 -0
  472. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_core.d.ts +7 -0
  473. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_core.d.ts.map +1 -0
  474. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_core.js +448 -0
  475. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_core.js.map +1 -0
  476. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_extension.d.ts +7 -0
  477. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_extension.d.ts.map +1 -0
  478. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_extension.js +445 -0
  479. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_extension.js.map +1 -0
  480. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_governance.d.ts +7 -0
  481. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_governance.d.ts.map +1 -0
  482. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_governance.js +274 -0
  483. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_governance.js.map +1 -0
  484. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_infra.d.ts +7 -0
  485. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_infra.d.ts.map +1 -0
  486. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_infra.js +247 -0
  487. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_infra.js.map +1 -0
  488. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_platform.d.ts +7 -0
  489. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_platform.d.ts.map +1 -0
  490. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_platform.js +470 -0
  491. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_platform.js.map +1 -0
  492. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_release.d.ts +7 -0
  493. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_release.d.ts.map +1 -0
  494. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_release.js +320 -0
  495. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_release.js.map +1 -0
  496. package/dist/engine/contracts/dual_layer_mechanism_registry/shared.d.ts +8 -0
  497. package/dist/engine/contracts/dual_layer_mechanism_registry/shared.d.ts.map +1 -0
  498. package/dist/engine/contracts/dual_layer_mechanism_registry/shared.js +60 -0
  499. package/dist/engine/contracts/dual_layer_mechanism_registry/shared.js.map +1 -0
  500. package/dist/engine/contracts/dual_layer_mechanism_registry/validation.d.ts +68 -0
  501. package/dist/engine/contracts/dual_layer_mechanism_registry/validation.d.ts.map +1 -0
  502. package/dist/engine/contracts/dual_layer_mechanism_registry/validation.js +354 -0
  503. package/dist/engine/contracts/dual_layer_mechanism_registry/validation.js.map +1 -0
  504. package/dist/engine/contracts/dual_layer_mechanism_registry.d.ts +9 -0
  505. package/dist/engine/contracts/dual_layer_mechanism_registry.d.ts.map +1 -0
  506. package/dist/engine/contracts/dual_layer_mechanism_registry.js +8 -0
  507. package/dist/engine/contracts/dual_layer_mechanism_registry.js.map +1 -0
  508. package/dist/engine/contracts/enforcement_guard.d.ts +110 -0
  509. package/dist/engine/contracts/enforcement_guard.d.ts.map +1 -0
  510. package/dist/engine/contracts/enforcement_guard.js +473 -0
  511. package/dist/engine/contracts/enforcement_guard.js.map +1 -0
  512. package/dist/engine/contracts/error_path_verifier.d.ts +36 -0
  513. package/dist/engine/contracts/error_path_verifier.d.ts.map +1 -0
  514. package/dist/engine/contracts/error_path_verifier.js +131 -0
  515. package/dist/engine/contracts/error_path_verifier.js.map +1 -0
  516. package/dist/engine/contracts/escape_report.d.ts.map +1 -0
  517. package/dist/engine/contracts/escape_report.js +137 -0
  518. package/dist/engine/contracts/escape_report.js.map +1 -0
  519. package/dist/engine/contracts/evidence_grounding_contract.d.ts +135 -0
  520. package/dist/engine/contracts/evidence_grounding_contract.d.ts.map +1 -0
  521. package/dist/engine/contracts/evidence_grounding_contract.js +404 -0
  522. package/dist/engine/contracts/evidence_grounding_contract.js.map +1 -0
  523. package/dist/engine/contracts/evolution_regression_gate.d.ts +44 -0
  524. package/dist/engine/contracts/evolution_regression_gate.d.ts.map +1 -0
  525. package/dist/engine/contracts/evolution_regression_gate.js +161 -0
  526. package/dist/engine/contracts/evolution_regression_gate.js.map +1 -0
  527. package/dist/engine/contracts/existing_system_analysis.d.ts.map +1 -0
  528. package/dist/engine/contracts/existing_system_analysis.js.map +1 -0
  529. package/dist/engine/contracts/existing_system_analyzer.d.ts +153 -0
  530. package/dist/engine/contracts/existing_system_analyzer.d.ts.map +1 -0
  531. package/dist/engine/contracts/existing_system_analyzer.js +615 -0
  532. package/dist/engine/contracts/existing_system_analyzer.js.map +1 -0
  533. package/dist/engine/contracts/extension_contract.d.ts +50 -0
  534. package/dist/engine/contracts/extension_contract.d.ts.map +1 -0
  535. package/dist/engine/contracts/extension_contract.js +158 -0
  536. package/dist/engine/contracts/extension_contract.js.map +1 -0
  537. package/dist/engine/contracts/extension_platform_contracts.d.ts.map +1 -0
  538. package/dist/engine/contracts/extension_platform_contracts.js.map +1 -0
  539. package/dist/engine/contracts/extension_scenario_definitions.d.ts +10 -0
  540. package/dist/engine/contracts/extension_scenario_definitions.d.ts.map +1 -0
  541. package/dist/engine/contracts/extension_scenario_definitions.js +112 -0
  542. package/dist/engine/contracts/extension_scenario_definitions.js.map +1 -0
  543. package/dist/engine/contracts/extension_scenario_registry.d.ts +24 -0
  544. package/dist/engine/contracts/extension_scenario_registry.d.ts.map +1 -0
  545. package/dist/engine/contracts/extension_scenario_registry.js +711 -0
  546. package/dist/engine/contracts/extension_scenario_registry.js.map +1 -0
  547. package/dist/engine/contracts/first_principles.d.ts +84 -0
  548. package/dist/engine/contracts/first_principles.d.ts.map +1 -0
  549. package/dist/engine/contracts/first_principles.js +197 -0
  550. package/dist/engine/contracts/first_principles.js.map +1 -0
  551. package/dist/engine/contracts/instruction_contract.d.ts.map +1 -0
  552. package/dist/engine/contracts/instruction_contract.js +178 -0
  553. package/dist/engine/contracts/instruction_contract.js.map +1 -0
  554. package/dist/engine/contracts/lazy_pattern_detector.d.ts +43 -0
  555. package/dist/engine/contracts/lazy_pattern_detector.d.ts.map +1 -0
  556. package/dist/engine/contracts/lazy_pattern_detector.js +164 -0
  557. package/dist/engine/contracts/lazy_pattern_detector.js.map +1 -0
  558. package/dist/engine/contracts/lifecycle_knowledge_contract.d.ts +59 -0
  559. package/dist/engine/contracts/lifecycle_knowledge_contract.d.ts.map +1 -0
  560. package/dist/engine/contracts/lifecycle_knowledge_contract.js +203 -0
  561. package/dist/engine/contracts/lifecycle_knowledge_contract.js.map +1 -0
  562. package/dist/engine/contracts/local_docker_acceptance.d.ts +94 -0
  563. package/dist/engine/contracts/local_docker_acceptance.d.ts.map +1 -0
  564. package/dist/engine/contracts/local_docker_acceptance.js +312 -0
  565. package/dist/engine/contracts/local_docker_acceptance.js.map +1 -0
  566. package/dist/engine/contracts/mechanism_contract_registry/contracts-audit.d.ts +13 -0
  567. package/dist/engine/contracts/mechanism_contract_registry/contracts-audit.d.ts.map +1 -0
  568. package/dist/engine/contracts/mechanism_contract_registry/contracts-audit.js +422 -0
  569. package/dist/engine/contracts/mechanism_contract_registry/contracts-audit.js.map +1 -0
  570. package/dist/engine/contracts/mechanism_contract_registry/contracts-governance.d.ts +14 -0
  571. package/dist/engine/contracts/mechanism_contract_registry/contracts-governance.d.ts.map +1 -0
  572. package/dist/engine/contracts/mechanism_contract_registry/contracts-governance.js +444 -0
  573. package/dist/engine/contracts/mechanism_contract_registry/contracts-governance.js.map +1 -0
  574. package/dist/engine/contracts/mechanism_contract_registry/contracts-pipeline.d.ts +11 -0
  575. package/dist/engine/contracts/mechanism_contract_registry/contracts-pipeline.d.ts.map +1 -0
  576. package/dist/engine/contracts/mechanism_contract_registry/contracts-pipeline.js +246 -0
  577. package/dist/engine/contracts/mechanism_contract_registry/contracts-pipeline.js.map +1 -0
  578. package/dist/engine/contracts/mechanism_contract_registry/contracts-platform.d.ts +15 -0
  579. package/dist/engine/contracts/mechanism_contract_registry/contracts-platform.d.ts.map +1 -0
  580. package/dist/engine/contracts/mechanism_contract_registry/contracts-platform.js +378 -0
  581. package/dist/engine/contracts/mechanism_contract_registry/contracts-platform.js.map +1 -0
  582. package/dist/engine/contracts/mechanism_contract_registry/index.d.ts +19 -0
  583. package/dist/engine/contracts/mechanism_contract_registry/index.d.ts.map +1 -0
  584. package/dist/engine/contracts/mechanism_contract_registry/index.js +21 -0
  585. package/dist/engine/contracts/mechanism_contract_registry/index.js.map +1 -0
  586. package/dist/engine/contracts/mechanism_contract_registry/types.d.ts +33 -0
  587. package/dist/engine/contracts/mechanism_contract_registry/types.d.ts.map +1 -0
  588. package/dist/engine/contracts/mechanism_contract_registry/types.js +5 -0
  589. package/dist/engine/contracts/mechanism_contract_registry/types.js.map +1 -0
  590. package/dist/engine/contracts/mechanism_contract_registry/validation.d.ts +28 -0
  591. package/dist/engine/contracts/mechanism_contract_registry/validation.d.ts.map +1 -0
  592. package/dist/engine/contracts/mechanism_contract_registry/validation.js +124 -0
  593. package/dist/engine/contracts/mechanism_contract_registry/validation.js.map +1 -0
  594. package/dist/engine/contracts/mechanism_contract_registry.d.ts +8 -0
  595. package/dist/engine/contracts/mechanism_contract_registry.d.ts.map +1 -0
  596. package/dist/engine/contracts/mechanism_contract_registry.js +7 -0
  597. package/dist/engine/contracts/mechanism_contract_registry.js.map +1 -0
  598. package/dist/engine/contracts/mechanism_health_check.d.ts +25 -0
  599. package/dist/engine/contracts/mechanism_health_check.d.ts.map +1 -0
  600. package/dist/engine/contracts/mechanism_health_check.js +143 -0
  601. package/dist/engine/contracts/mechanism_health_check.js.map +1 -0
  602. package/dist/engine/contracts/metric_governance.d.ts.map +1 -0
  603. package/dist/engine/contracts/metric_governance.js.map +1 -0
  604. package/dist/engine/contracts/omission_scanner.d.ts +83 -0
  605. package/dist/engine/contracts/omission_scanner.d.ts.map +1 -0
  606. package/dist/engine/contracts/omission_scanner.js +191 -0
  607. package/dist/engine/contracts/omission_scanner.js.map +1 -0
  608. package/dist/engine/contracts/ood_solid_contract.d.ts.map +1 -0
  609. package/dist/engine/contracts/ood_solid_contract.js +115 -0
  610. package/dist/engine/contracts/ood_solid_contract.js.map +1 -0
  611. package/dist/engine/contracts/platform_context.d.ts +46 -0
  612. package/dist/engine/contracts/platform_context.d.ts.map +1 -0
  613. package/dist/engine/contracts/platform_context.js +171 -0
  614. package/dist/engine/contracts/platform_context.js.map +1 -0
  615. package/dist/engine/contracts/project_knowledge_contract.d.ts +133 -0
  616. package/dist/engine/contracts/project_knowledge_contract.d.ts.map +1 -0
  617. package/dist/engine/contracts/project_knowledge_contract.js +559 -0
  618. package/dist/engine/contracts/project_knowledge_contract.js.map +1 -0
  619. package/dist/engine/contracts/slice_fix_loop.d.ts +86 -0
  620. package/dist/engine/contracts/slice_fix_loop.d.ts.map +1 -0
  621. package/dist/engine/contracts/slice_fix_loop.js +98 -0
  622. package/dist/engine/contracts/slice_fix_loop.js.map +1 -0
  623. package/dist/engine/contracts/state_machine_contracts.d.ts +17 -0
  624. package/dist/engine/contracts/state_machine_contracts.d.ts.map +1 -0
  625. package/dist/engine/contracts/state_machine_contracts.js +97 -0
  626. package/dist/engine/contracts/state_machine_contracts.js.map +1 -0
  627. package/dist/engine/contracts/technology_decision.d.ts +58 -0
  628. package/dist/engine/contracts/technology_decision.d.ts.map +1 -0
  629. package/dist/engine/contracts/technology_decision.js +175 -0
  630. package/dist/engine/contracts/technology_decision.js.map +1 -0
  631. package/dist/engine/contracts/template_schema_loader.d.ts +79 -0
  632. package/dist/engine/contracts/template_schema_loader.d.ts.map +1 -0
  633. package/dist/engine/contracts/template_schema_loader.js +301 -0
  634. package/dist/engine/contracts/template_schema_loader.js.map +1 -0
  635. package/dist/engine/contracts/tool_invocation_contract_registry.d.ts +76 -0
  636. package/dist/engine/contracts/tool_invocation_contract_registry.d.ts.map +1 -0
  637. package/dist/engine/contracts/tool_invocation_contract_registry.js +782 -0
  638. package/dist/engine/contracts/tool_invocation_contract_registry.js.map +1 -0
  639. package/dist/engine/contracts/traceability.d.ts +49 -0
  640. package/dist/engine/contracts/traceability.d.ts.map +1 -0
  641. package/dist/engine/contracts/traceability.js +470 -0
  642. package/dist/engine/contracts/traceability.js.map +1 -0
  643. package/dist/engine/contracts/user_feedback_contract.d.ts +162 -0
  644. package/dist/engine/contracts/user_feedback_contract.d.ts.map +1 -0
  645. package/dist/engine/contracts/user_feedback_contract.js +415 -0
  646. package/dist/engine/contracts/user_feedback_contract.js.map +1 -0
  647. package/dist/engine/contracts/user_promise.d.ts +67 -0
  648. package/dist/engine/contracts/user_promise.d.ts.map +1 -0
  649. package/dist/engine/contracts/user_promise.js +436 -0
  650. package/dist/engine/contracts/user_promise.js.map +1 -0
  651. package/dist/engine/contracts/verification_contract.d.ts.map +1 -0
  652. package/dist/engine/contracts/verification_contract.js.map +1 -0
  653. package/dist/engine/contracts/workflow_template_pack.d.ts +71 -0
  654. package/dist/engine/contracts/workflow_template_pack.d.ts.map +1 -0
  655. package/dist/engine/contracts/workflow_template_pack.js +246 -0
  656. package/dist/engine/contracts/workflow_template_pack.js.map +1 -0
  657. package/dist/engine/convention_detector.js +1 -1
  658. package/dist/engine/convention_detector.js.map +1 -1
  659. package/dist/engine/core/config_defaults.d.ts +11 -0
  660. package/dist/engine/core/config_defaults.d.ts.map +1 -0
  661. package/dist/engine/core/config_defaults.js +11 -0
  662. package/dist/engine/core/config_defaults.js.map +1 -0
  663. package/dist/engine/core/debug_log.d.ts +5 -0
  664. package/dist/engine/core/debug_log.d.ts.map +1 -0
  665. package/dist/engine/core/debug_log.js +5 -0
  666. package/dist/engine/core/debug_log.js.map +1 -0
  667. package/dist/engine/core/denied_paths.d.ts +25 -0
  668. package/dist/engine/core/denied_paths.d.ts.map +1 -0
  669. package/dist/engine/core/denied_paths.js +57 -0
  670. package/dist/engine/core/denied_paths.js.map +1 -0
  671. package/dist/engine/core/env.d.ts +12 -0
  672. package/dist/engine/core/env.d.ts.map +1 -0
  673. package/dist/engine/core/env.js +12 -0
  674. package/dist/engine/core/env.js.map +1 -0
  675. package/dist/engine/core/errors.d.ts +21 -0
  676. package/dist/engine/core/errors.d.ts.map +1 -0
  677. package/dist/engine/core/errors.js +35 -0
  678. package/dist/engine/core/errors.js.map +1 -0
  679. package/dist/engine/core/exit_codes.d.ts +14 -0
  680. package/dist/engine/core/exit_codes.d.ts.map +1 -0
  681. package/dist/engine/core/exit_codes.js +14 -0
  682. package/dist/engine/core/exit_codes.js.map +1 -0
  683. package/dist/engine/core/fail_closed.d.ts +39 -0
  684. package/dist/engine/core/fail_closed.d.ts.map +1 -0
  685. package/dist/engine/core/fail_closed.js +38 -0
  686. package/dist/engine/core/fail_closed.js.map +1 -0
  687. package/dist/engine/core/helpers.d.ts +24 -0
  688. package/dist/engine/core/helpers.d.ts.map +1 -0
  689. package/dist/engine/core/helpers.js +44 -0
  690. package/dist/engine/core/helpers.js.map +1 -0
  691. package/dist/engine/core/index.d.ts +17 -0
  692. package/dist/engine/core/index.d.ts.map +1 -0
  693. package/dist/engine/core/index.js +24 -0
  694. package/dist/engine/core/index.js.map +1 -0
  695. package/dist/engine/core/io_controller.d.ts +88 -0
  696. package/dist/engine/core/io_controller.d.ts.map +1 -0
  697. package/dist/engine/core/io_controller.js +219 -0
  698. package/dist/engine/core/io_controller.js.map +1 -0
  699. package/dist/engine/core/knowledge_config_loader.d.ts +28 -0
  700. package/dist/engine/core/knowledge_config_loader.d.ts.map +1 -0
  701. package/dist/engine/core/knowledge_config_loader.js +102 -0
  702. package/dist/engine/core/knowledge_config_loader.js.map +1 -0
  703. package/dist/engine/core/llm_gateway.d.ts +184 -0
  704. package/dist/engine/core/llm_gateway.d.ts.map +1 -0
  705. package/dist/engine/core/llm_gateway.js +374 -0
  706. package/dist/engine/core/llm_gateway.js.map +1 -0
  707. package/dist/engine/core/log_governance.d.ts.map +1 -0
  708. package/dist/engine/core/log_governance.js +71 -0
  709. package/dist/engine/core/log_governance.js.map +1 -0
  710. package/dist/engine/core/logger.d.ts.map +1 -0
  711. package/dist/engine/core/logger.js +118 -0
  712. package/dist/engine/core/logger.js.map +1 -0
  713. package/dist/engine/core/path_scope_utils.d.ts +21 -0
  714. package/dist/engine/core/path_scope_utils.d.ts.map +1 -0
  715. package/dist/engine/core/path_scope_utils.js +126 -0
  716. package/dist/engine/core/path_scope_utils.js.map +1 -0
  717. package/dist/engine/core/paths.d.ts +90 -0
  718. package/dist/engine/core/paths.d.ts.map +1 -0
  719. package/dist/engine/core/paths.js +109 -0
  720. package/dist/engine/core/paths.js.map +1 -0
  721. package/dist/engine/core/write_file_atomic.d.ts +25 -0
  722. package/dist/engine/core/write_file_atomic.d.ts.map +1 -0
  723. package/dist/engine/core/write_file_atomic.js +63 -0
  724. package/dist/engine/core/write_file_atomic.js.map +1 -0
  725. package/dist/engine/dependency_scanner.d.ts.map +1 -1
  726. package/dist/engine/dependency_scanner.js +16 -18
  727. package/dist/engine/dependency_scanner.js.map +1 -1
  728. package/dist/engine/exploration.d.ts.map +1 -1
  729. package/dist/engine/exploration.js +11 -10
  730. package/dist/engine/exploration.js.map +1 -1
  731. package/dist/engine/feasibility_checker.js +2 -2
  732. package/dist/engine/feasibility_checker.js.map +1 -1
  733. package/dist/engine/impact_analyzer.js +3 -3
  734. package/dist/engine/impact_analyzer.js.map +1 -1
  735. package/dist/engine/knowledge/chinese_semantic_priority.d.ts.map +1 -0
  736. package/dist/engine/knowledge/chinese_semantic_priority.js.map +1 -0
  737. package/dist/engine/knowledge/documentation_governance.d.ts.map +1 -0
  738. package/dist/engine/knowledge/documentation_governance.js.map +1 -0
  739. package/dist/engine/knowledge/drift_classifier.d.ts +26 -0
  740. package/dist/engine/knowledge/drift_classifier.d.ts.map +1 -0
  741. package/dist/engine/knowledge/drift_classifier.js +82 -0
  742. package/dist/engine/knowledge/drift_classifier.js.map +1 -0
  743. package/dist/engine/knowledge/knowledge_acceptance_registry.d.ts.map +1 -0
  744. package/dist/engine/knowledge/knowledge_acceptance_registry.js +261 -0
  745. package/dist/engine/knowledge/knowledge_acceptance_registry.js.map +1 -0
  746. package/dist/engine/knowledge/knowledge_asset_audit.d.ts.map +1 -0
  747. package/dist/engine/knowledge/knowledge_asset_audit.js +231 -0
  748. package/dist/engine/knowledge/knowledge_asset_audit.js.map +1 -0
  749. package/dist/engine/knowledge/knowledge_asset_consumer.d.ts +157 -0
  750. package/dist/engine/knowledge/knowledge_asset_consumer.d.ts.map +1 -0
  751. package/dist/engine/knowledge/knowledge_asset_consumer.js +288 -0
  752. package/dist/engine/knowledge/knowledge_asset_consumer.js.map +1 -0
  753. package/dist/engine/knowledge/knowledge_asset_generation_gate.d.ts.map +1 -0
  754. package/dist/engine/knowledge/knowledge_asset_generation_gate.js.map +1 -0
  755. package/dist/engine/knowledge/knowledge_asset_migration.d.ts.map +1 -0
  756. package/dist/engine/knowledge/knowledge_asset_migration.js +204 -0
  757. package/dist/engine/knowledge/knowledge_asset_migration.js.map +1 -0
  758. package/dist/engine/knowledge/knowledge_asset_schema.d.ts +102 -0
  759. package/dist/engine/knowledge/knowledge_asset_schema.d.ts.map +1 -0
  760. package/dist/engine/knowledge/knowledge_asset_schema.js +427 -0
  761. package/dist/engine/knowledge/knowledge_asset_schema.js.map +1 -0
  762. package/dist/engine/knowledge/knowledge_config_loader.d.ts.map +1 -0
  763. package/dist/engine/knowledge/knowledge_config_loader.js +144 -0
  764. package/dist/engine/knowledge/knowledge_config_loader.js.map +1 -0
  765. package/dist/engine/knowledge/knowledge_consumption_snapshot.d.ts +91 -0
  766. package/dist/engine/knowledge/knowledge_consumption_snapshot.d.ts.map +1 -0
  767. package/dist/engine/knowledge/knowledge_consumption_snapshot.js +113 -0
  768. package/dist/engine/knowledge/knowledge_consumption_snapshot.js.map +1 -0
  769. package/dist/engine/knowledge/knowledge_evolution.d.ts +66 -0
  770. package/dist/engine/knowledge/knowledge_evolution.d.ts.map +1 -0
  771. package/dist/engine/knowledge/knowledge_evolution.js +200 -0
  772. package/dist/engine/knowledge/knowledge_evolution.js.map +1 -0
  773. package/dist/engine/knowledge/knowledge_governance_gate.d.ts +41 -0
  774. package/dist/engine/knowledge/knowledge_governance_gate.d.ts.map +1 -0
  775. package/dist/engine/knowledge/knowledge_governance_gate.js +123 -0
  776. package/dist/engine/knowledge/knowledge_governance_gate.js.map +1 -0
  777. package/dist/engine/knowledge/knowledge_health.d.ts +44 -0
  778. package/dist/engine/knowledge/knowledge_health.d.ts.map +1 -0
  779. package/dist/engine/knowledge/knowledge_health.js +305 -0
  780. package/dist/engine/knowledge/knowledge_health.js.map +1 -0
  781. package/dist/engine/knowledge/knowledge_injection_boundary.d.ts +108 -0
  782. package/dist/engine/knowledge/knowledge_injection_boundary.d.ts.map +1 -0
  783. package/dist/engine/knowledge/knowledge_injection_boundary.js +760 -0
  784. package/dist/engine/knowledge/knowledge_injection_boundary.js.map +1 -0
  785. package/dist/engine/knowledge/knowledge_lifecycle.d.ts +97 -0
  786. package/dist/engine/knowledge/knowledge_lifecycle.d.ts.map +1 -0
  787. package/dist/engine/knowledge/knowledge_lifecycle.js +299 -0
  788. package/dist/engine/knowledge/knowledge_lifecycle.js.map +1 -0
  789. package/dist/engine/knowledge/knowledge_manager.d.ts +3 -0
  790. package/dist/engine/knowledge/knowledge_manager.d.ts.map +1 -0
  791. package/dist/engine/knowledge/knowledge_manager.js +5 -0
  792. package/dist/engine/knowledge/knowledge_manager.js.map +1 -0
  793. package/dist/engine/knowledge/knowledge_scenario_registry.d.ts +21 -0
  794. package/dist/engine/knowledge/knowledge_scenario_registry.d.ts.map +1 -0
  795. package/dist/engine/knowledge/knowledge_scenario_registry.js +329 -0
  796. package/dist/engine/knowledge/knowledge_scenario_registry.js.map +1 -0
  797. package/dist/engine/knowledge/knowledge_sovereignty.d.ts.map +1 -0
  798. package/dist/engine/knowledge/knowledge_sovereignty.js +196 -0
  799. package/dist/engine/knowledge/knowledge_sovereignty.js.map +1 -0
  800. package/dist/engine/knowledge/knowledge_template_contracts.d.ts.map +1 -0
  801. package/dist/engine/knowledge/knowledge_template_contracts.js.map +1 -0
  802. package/dist/engine/knowledge/knowledge_writer.d.ts +108 -0
  803. package/dist/engine/knowledge/knowledge_writer.d.ts.map +1 -0
  804. package/dist/engine/knowledge/knowledge_writer.js +637 -0
  805. package/dist/engine/knowledge/knowledge_writer.js.map +1 -0
  806. package/dist/engine/knowledge/language_policy.d.ts +78 -0
  807. package/dist/engine/knowledge/language_policy.d.ts.map +1 -0
  808. package/dist/engine/knowledge/language_policy.js +139 -0
  809. package/dist/engine/knowledge/language_policy.js.map +1 -0
  810. package/dist/engine/knowledge/language_policy_contract.d.ts.map +1 -0
  811. package/dist/engine/knowledge/language_policy_contract.js.map +1 -0
  812. package/dist/engine/knowledge/release_compatibility.d.ts.map +1 -0
  813. package/dist/engine/knowledge/release_compatibility.js.map +1 -0
  814. package/dist/engine/migration_guard.js +5 -5
  815. package/dist/engine/migration_guard.js.map +1 -1
  816. package/dist/engine/onboarding.d.ts +2 -2
  817. package/dist/engine/onboarding.d.ts.map +1 -1
  818. package/dist/engine/onboarding.js +8 -5
  819. package/dist/engine/onboarding.js.map +1 -1
  820. package/dist/engine/pipeline/artifact_aliases.d.ts +19 -0
  821. package/dist/engine/pipeline/artifact_aliases.d.ts.map +1 -0
  822. package/dist/engine/pipeline/artifact_aliases.js +39 -0
  823. package/dist/engine/pipeline/artifact_aliases.js.map +1 -0
  824. package/dist/engine/pipeline/conflict_gate.d.ts.map +1 -0
  825. package/dist/engine/pipeline/conflict_gate.js +92 -0
  826. package/dist/engine/pipeline/conflict_gate.js.map +1 -0
  827. package/dist/engine/pipeline/diff_ownership.d.ts.map +1 -0
  828. package/dist/engine/pipeline/diff_ownership.js +159 -0
  829. package/dist/engine/pipeline/diff_ownership.js.map +1 -0
  830. package/dist/engine/pipeline/diff_ownership_store.d.ts.map +1 -0
  831. package/dist/engine/pipeline/diff_ownership_store.js +293 -0
  832. package/dist/engine/pipeline/diff_ownership_store.js.map +1 -0
  833. package/dist/engine/pipeline/input_material_contract_registry.d.ts +185 -0
  834. package/dist/engine/pipeline/input_material_contract_registry.d.ts.map +1 -0
  835. package/dist/engine/pipeline/input_material_contract_registry.js +565 -0
  836. package/dist/engine/pipeline/input_material_contract_registry.js.map +1 -0
  837. package/dist/engine/pipeline/input_material_extractor.d.ts +47 -0
  838. package/dist/engine/pipeline/input_material_extractor.d.ts.map +1 -0
  839. package/dist/engine/pipeline/input_material_extractor.js +156 -0
  840. package/dist/engine/pipeline/input_material_extractor.js.map +1 -0
  841. package/dist/engine/pipeline/intent_expander/helpers.d.ts +44 -0
  842. package/dist/engine/pipeline/intent_expander/helpers.d.ts.map +1 -0
  843. package/dist/engine/pipeline/intent_expander/helpers.js +158 -0
  844. package/dist/engine/pipeline/intent_expander/helpers.js.map +1 -0
  845. package/dist/engine/pipeline/intent_expander/index.d.ts +12 -0
  846. package/dist/engine/pipeline/intent_expander/index.d.ts.map +1 -0
  847. package/dist/engine/pipeline/intent_expander/index.js +14 -0
  848. package/dist/engine/pipeline/intent_expander/index.js.map +1 -0
  849. package/dist/engine/pipeline/intent_expander/knowledge.d.ts +16 -0
  850. package/dist/engine/pipeline/intent_expander/knowledge.d.ts.map +1 -0
  851. package/dist/engine/pipeline/intent_expander/knowledge.js +154 -0
  852. package/dist/engine/pipeline/intent_expander/knowledge.js.map +1 -0
  853. package/dist/engine/pipeline/intent_expander/knowledge_resolution.d.ts +47 -0
  854. package/dist/engine/pipeline/intent_expander/knowledge_resolution.d.ts.map +1 -0
  855. package/dist/engine/pipeline/intent_expander/knowledge_resolution.js +301 -0
  856. package/dist/engine/pipeline/intent_expander/knowledge_resolution.js.map +1 -0
  857. package/dist/engine/pipeline/intent_expander/privacy_gates.d.ts +33 -0
  858. package/dist/engine/pipeline/intent_expander/privacy_gates.d.ts.map +1 -0
  859. package/dist/engine/pipeline/intent_expander/privacy_gates.js +66 -0
  860. package/dist/engine/pipeline/intent_expander/privacy_gates.js.map +1 -0
  861. package/dist/engine/pipeline/intent_expander/scope_acceptance.d.ts +80 -0
  862. package/dist/engine/pipeline/intent_expander/scope_acceptance.d.ts.map +1 -0
  863. package/dist/engine/pipeline/intent_expander/scope_acceptance.js +219 -0
  864. package/dist/engine/pipeline/intent_expander/scope_acceptance.js.map +1 -0
  865. package/dist/engine/pipeline/intent_expander/templates.d.ts +28 -0
  866. package/dist/engine/pipeline/intent_expander/templates.d.ts.map +1 -0
  867. package/dist/engine/pipeline/intent_expander/templates.js +662 -0
  868. package/dist/engine/pipeline/intent_expander/templates.js.map +1 -0
  869. package/dist/engine/pipeline/intent_expander/types.d.ts +101 -0
  870. package/dist/engine/pipeline/intent_expander/types.d.ts.map +1 -0
  871. package/dist/engine/pipeline/intent_expander/types.js +8 -0
  872. package/dist/engine/pipeline/intent_expander/types.js.map +1 -0
  873. package/dist/engine/pipeline/intent_expander/uncertainty_circuit.d.ts +33 -0
  874. package/dist/engine/pipeline/intent_expander/uncertainty_circuit.d.ts.map +1 -0
  875. package/dist/engine/pipeline/intent_expander/uncertainty_circuit.js +187 -0
  876. package/dist/engine/pipeline/intent_expander/uncertainty_circuit.js.map +1 -0
  877. package/dist/engine/pipeline/intent_expander.d.ts +12 -0
  878. package/dist/engine/pipeline/intent_expander.d.ts.map +1 -0
  879. package/dist/engine/pipeline/intent_expander.js +14 -0
  880. package/dist/engine/pipeline/intent_expander.js.map +1 -0
  881. package/dist/engine/pipeline/job_manager.d.ts +111 -0
  882. package/dist/engine/pipeline/job_manager.d.ts.map +1 -0
  883. package/dist/engine/pipeline/job_manager.js +284 -0
  884. package/dist/engine/pipeline/job_manager.js.map +1 -0
  885. package/dist/engine/pipeline/plan_proposal_gate.d.ts.map +1 -0
  886. package/dist/engine/pipeline/plan_proposal_gate.js +340 -0
  887. package/dist/engine/pipeline/plan_proposal_gate.js.map +1 -0
  888. package/dist/engine/pipeline/prompt_template_resolver.d.ts +13 -0
  889. package/dist/engine/pipeline/prompt_template_resolver.d.ts.map +1 -0
  890. package/dist/engine/pipeline/prompt_template_resolver.js +25 -0
  891. package/dist/engine/pipeline/prompt_template_resolver.js.map +1 -0
  892. package/dist/engine/pipeline/rollback_router.d.ts +35 -0
  893. package/dist/engine/pipeline/rollback_router.d.ts.map +1 -0
  894. package/dist/engine/pipeline/rollback_router.js +57 -0
  895. package/dist/engine/pipeline/rollback_router.js.map +1 -0
  896. package/dist/engine/pipeline/scope_controller.d.ts +17 -0
  897. package/dist/engine/pipeline/scope_controller.d.ts.map +1 -0
  898. package/dist/engine/pipeline/scope_controller.js +224 -0
  899. package/dist/engine/pipeline/scope_controller.js.map +1 -0
  900. package/dist/engine/pipeline/scope_lease.d.ts +92 -0
  901. package/dist/engine/pipeline/scope_lease.d.ts.map +1 -0
  902. package/dist/engine/pipeline/scope_lease.js +178 -0
  903. package/dist/engine/pipeline/scope_lease.js.map +1 -0
  904. package/dist/engine/pipeline/scope_resolver.d.ts +18 -0
  905. package/dist/engine/pipeline/scope_resolver.d.ts.map +1 -0
  906. package/dist/engine/pipeline/scope_resolver.js +533 -0
  907. package/dist/engine/pipeline/scope_resolver.js.map +1 -0
  908. package/dist/engine/pipeline/slice_executor.d.ts +83 -0
  909. package/dist/engine/pipeline/slice_executor.d.ts.map +1 -0
  910. package/dist/engine/pipeline/slice_executor.js +103 -0
  911. package/dist/engine/pipeline/slice_executor.js.map +1 -0
  912. package/dist/engine/pipeline/stale_current_task_detector.d.ts +30 -0
  913. package/dist/engine/pipeline/stale_current_task_detector.d.ts.map +1 -0
  914. package/dist/engine/pipeline/stale_current_task_detector.js +171 -0
  915. package/dist/engine/pipeline/stale_current_task_detector.js.map +1 -0
  916. package/dist/engine/pipeline/state_machine/audit_logger.d.ts +42 -0
  917. package/dist/engine/pipeline/state_machine/audit_logger.d.ts.map +1 -0
  918. package/dist/engine/pipeline/state_machine/audit_logger.js +71 -0
  919. package/dist/engine/pipeline/state_machine/audit_logger.js.map +1 -0
  920. package/dist/engine/pipeline/state_machine/capability_safety_valve.d.ts +51 -0
  921. package/dist/engine/pipeline/state_machine/capability_safety_valve.d.ts.map +1 -0
  922. package/dist/engine/pipeline/state_machine/capability_safety_valve.js +131 -0
  923. package/dist/engine/pipeline/state_machine/capability_safety_valve.js.map +1 -0
  924. package/dist/engine/pipeline/state_machine/certainty_gate.d.ts +92 -0
  925. package/dist/engine/pipeline/state_machine/certainty_gate.d.ts.map +1 -0
  926. package/dist/engine/pipeline/state_machine/certainty_gate.js +391 -0
  927. package/dist/engine/pipeline/state_machine/certainty_gate.js.map +1 -0
  928. package/dist/engine/pipeline/state_machine/command_state_verifier.d.ts +50 -0
  929. package/dist/engine/pipeline/state_machine/command_state_verifier.d.ts.map +1 -0
  930. package/dist/engine/pipeline/state_machine/command_state_verifier.js +160 -0
  931. package/dist/engine/pipeline/state_machine/command_state_verifier.js.map +1 -0
  932. package/dist/engine/pipeline/state_machine/hook_classifier.d.ts +71 -0
  933. package/dist/engine/pipeline/state_machine/hook_classifier.d.ts.map +1 -0
  934. package/dist/engine/pipeline/state_machine/hook_classifier.js +146 -0
  935. package/dist/engine/pipeline/state_machine/hook_classifier.js.map +1 -0
  936. package/dist/engine/pipeline/state_machine/human_uncertainty_detector.d.ts +33 -0
  937. package/dist/engine/pipeline/state_machine/human_uncertainty_detector.d.ts.map +1 -0
  938. package/dist/engine/pipeline/state_machine/human_uncertainty_detector.js +72 -0
  939. package/dist/engine/pipeline/state_machine/human_uncertainty_detector.js.map +1 -0
  940. package/dist/engine/pipeline/state_machine/knowledge_stage_query.d.ts +21 -0
  941. package/dist/engine/pipeline/state_machine/knowledge_stage_query.d.ts.map +1 -0
  942. package/dist/engine/pipeline/state_machine/knowledge_stage_query.js +33 -0
  943. package/dist/engine/pipeline/state_machine/knowledge_stage_query.js.map +1 -0
  944. package/dist/engine/pipeline/state_machine/pipeline_state_machine.d.ts +158 -0
  945. package/dist/engine/pipeline/state_machine/pipeline_state_machine.d.ts.map +1 -0
  946. package/dist/engine/pipeline/state_machine/pipeline_state_machine.js +1197 -0
  947. package/dist/engine/pipeline/state_machine/pipeline_state_machine.js.map +1 -0
  948. package/dist/engine/pipeline/state_machine/risk_pattern_scanner.d.ts +34 -0
  949. package/dist/engine/pipeline/state_machine/risk_pattern_scanner.d.ts.map +1 -0
  950. package/dist/engine/pipeline/state_machine/risk_pattern_scanner.js +152 -0
  951. package/dist/engine/pipeline/state_machine/risk_pattern_scanner.js.map +1 -0
  952. package/dist/engine/pipeline/state_machine/route_usage_stats.d.ts +28 -0
  953. package/dist/engine/pipeline/state_machine/route_usage_stats.d.ts.map +1 -0
  954. package/dist/engine/pipeline/state_machine/route_usage_stats.js +76 -0
  955. package/dist/engine/pipeline/state_machine/route_usage_stats.js.map +1 -0
  956. package/dist/engine/pipeline/state_machine/sf_command_parser.d.ts +22 -0
  957. package/dist/engine/pipeline/state_machine/sf_command_parser.d.ts.map +1 -0
  958. package/dist/engine/pipeline/state_machine/sf_command_parser.js +171 -0
  959. package/dist/engine/pipeline/state_machine/sf_command_parser.js.map +1 -0
  960. package/dist/engine/pipeline/state_machine/stage_command_registry.d.ts +38 -0
  961. package/dist/engine/pipeline/state_machine/stage_command_registry.d.ts.map +1 -0
  962. package/dist/engine/pipeline/state_machine/stage_command_registry.js +218 -0
  963. package/dist/engine/pipeline/state_machine/stage_command_registry.js.map +1 -0
  964. package/dist/engine/pipeline/state_machine/stage_executor.d.ts +37 -0
  965. package/dist/engine/pipeline/state_machine/stage_executor.d.ts.map +1 -0
  966. package/dist/engine/pipeline/state_machine/stage_executor.js +67 -0
  967. package/dist/engine/pipeline/state_machine/stage_executor.js.map +1 -0
  968. package/dist/engine/pipeline/state_machine/state_migrator.d.ts +21 -0
  969. package/dist/engine/pipeline/state_machine/state_migrator.d.ts.map +1 -0
  970. package/dist/engine/pipeline/state_machine/state_migrator.js +130 -0
  971. package/dist/engine/pipeline/state_machine/state_migrator.js.map +1 -0
  972. package/dist/engine/pipeline/state_machine/state_self_diagnostic.d.ts +48 -0
  973. package/dist/engine/pipeline/state_machine/state_self_diagnostic.d.ts.map +1 -0
  974. package/dist/engine/pipeline/state_machine/state_self_diagnostic.js +566 -0
  975. package/dist/engine/pipeline/state_machine/state_self_diagnostic.js.map +1 -0
  976. package/dist/engine/pipeline/state_machine/static_route_table.d.ts +36 -0
  977. package/dist/engine/pipeline/state_machine/static_route_table.d.ts.map +1 -0
  978. package/dist/engine/pipeline/state_machine/static_route_table.js +112 -0
  979. package/dist/engine/pipeline/state_machine/static_route_table.js.map +1 -0
  980. package/dist/engine/pipeline/state_machine/strong_confirmation.d.ts +45 -0
  981. package/dist/engine/pipeline/state_machine/strong_confirmation.d.ts.map +1 -0
  982. package/dist/engine/pipeline/state_machine/strong_confirmation.js +57 -0
  983. package/dist/engine/pipeline/state_machine/strong_confirmation.js.map +1 -0
  984. package/dist/engine/pipeline/state_machine/uncertainty_bridge.d.ts +55 -0
  985. package/dist/engine/pipeline/state_machine/uncertainty_bridge.d.ts.map +1 -0
  986. package/dist/engine/pipeline/state_machine/uncertainty_bridge.js +48 -0
  987. package/dist/engine/pipeline/state_machine/uncertainty_bridge.js.map +1 -0
  988. package/dist/engine/pipeline/task_context/cleanup.d.ts +13 -0
  989. package/dist/engine/pipeline/task_context/cleanup.d.ts.map +1 -0
  990. package/dist/engine/pipeline/task_context/cleanup.js +68 -0
  991. package/dist/engine/pipeline/task_context/cleanup.js.map +1 -0
  992. package/dist/engine/pipeline/task_context/constants.d.ts +9 -0
  993. package/dist/engine/pipeline/task_context/constants.d.ts.map +1 -0
  994. package/dist/engine/pipeline/task_context/constants.js +20 -0
  995. package/dist/engine/pipeline/task_context/constants.js.map +1 -0
  996. package/dist/engine/pipeline/task_context/expansion_privacy.d.ts +18 -0
  997. package/dist/engine/pipeline/task_context/expansion_privacy.d.ts.map +1 -0
  998. package/dist/engine/pipeline/task_context/expansion_privacy.js +82 -0
  999. package/dist/engine/pipeline/task_context/expansion_privacy.js.map +1 -0
  1000. package/dist/engine/pipeline/task_context/index.d.ts +19 -0
  1001. package/dist/engine/pipeline/task_context/index.d.ts.map +1 -0
  1002. package/dist/engine/pipeline/task_context/index.js +19 -0
  1003. package/dist/engine/pipeline/task_context/index.js.map +1 -0
  1004. package/dist/engine/pipeline/task_context/manager.d.ts +200 -0
  1005. package/dist/engine/pipeline/task_context/manager.d.ts.map +1 -0
  1006. package/dist/engine/pipeline/task_context/manager.js +758 -0
  1007. package/dist/engine/pipeline/task_context/manager.js.map +1 -0
  1008. package/dist/engine/pipeline/task_context/manager_setters.d.ts +65 -0
  1009. package/dist/engine/pipeline/task_context/manager_setters.d.ts.map +1 -0
  1010. package/dist/engine/pipeline/task_context/manager_setters.js +288 -0
  1011. package/dist/engine/pipeline/task_context/manager_setters.js.map +1 -0
  1012. package/dist/engine/pipeline/task_context/phase_directive.d.ts +10 -0
  1013. package/dist/engine/pipeline/task_context/phase_directive.d.ts.map +1 -0
  1014. package/dist/engine/pipeline/task_context/phase_directive.js +75 -0
  1015. package/dist/engine/pipeline/task_context/phase_directive.js.map +1 -0
  1016. package/dist/engine/pipeline/task_context/status_transitions.d.ts +17 -0
  1017. package/dist/engine/pipeline/task_context/status_transitions.d.ts.map +1 -0
  1018. package/dist/engine/pipeline/task_context/status_transitions.js +76 -0
  1019. package/dist/engine/pipeline/task_context/status_transitions.js.map +1 -0
  1020. package/dist/engine/pipeline/task_context.d.ts +15 -0
  1021. package/dist/engine/pipeline/task_context.d.ts.map +1 -0
  1022. package/dist/engine/pipeline/task_context.js +15 -0
  1023. package/dist/engine/pipeline/task_context.js.map +1 -0
  1024. package/dist/engine/pipeline/task_planner.d.ts +30 -0
  1025. package/dist/engine/pipeline/task_planner.d.ts.map +1 -0
  1026. package/dist/engine/pipeline/task_planner.js +334 -0
  1027. package/dist/engine/pipeline/task_planner.js.map +1 -0
  1028. package/dist/engine/pipeline/task_stage_detector.d.ts +27 -0
  1029. package/dist/engine/pipeline/task_stage_detector.d.ts.map +1 -0
  1030. package/dist/engine/pipeline/task_stage_detector.js +191 -0
  1031. package/dist/engine/pipeline/task_stage_detector.js.map +1 -0
  1032. package/dist/engine/pipeline/workspace_lease.d.ts +78 -0
  1033. package/dist/engine/pipeline/workspace_lease.d.ts.map +1 -0
  1034. package/dist/engine/pipeline/workspace_lease.js +180 -0
  1035. package/dist/engine/pipeline/workspace_lease.js.map +1 -0
  1036. package/dist/engine/pipeline/workspace_resumer.d.ts.map +1 -0
  1037. package/dist/engine/pipeline/workspace_resumer.js +210 -0
  1038. package/dist/engine/pipeline/workspace_resumer.js.map +1 -0
  1039. package/dist/engine/release/foundation_scenario_registry.d.ts +44 -0
  1040. package/dist/engine/release/foundation_scenario_registry.d.ts.map +1 -0
  1041. package/dist/engine/release/foundation_scenario_registry.js +281 -0
  1042. package/dist/engine/release/foundation_scenario_registry.js.map +1 -0
  1043. package/dist/engine/release/foundation_scenario_runners.d.ts +54 -0
  1044. package/dist/engine/release/foundation_scenario_runners.d.ts.map +1 -0
  1045. package/dist/engine/release/foundation_scenario_runners.js +151 -0
  1046. package/dist/engine/release/foundation_scenario_runners.js.map +1 -0
  1047. package/dist/engine/release/gate_checks/checkControlPlaneTrust.d.ts +9 -0
  1048. package/dist/engine/release/gate_checks/checkControlPlaneTrust.d.ts.map +1 -0
  1049. package/dist/engine/release/gate_checks/checkControlPlaneTrust.js +121 -0
  1050. package/dist/engine/release/gate_checks/checkControlPlaneTrust.js.map +1 -0
  1051. package/dist/engine/release/gate_checks/checkCriticalProblemConsumption.d.ts.map +1 -0
  1052. package/dist/engine/release/gate_checks/checkCriticalProblemConsumption.js +498 -0
  1053. package/dist/engine/release/gate_checks/checkCriticalProblemConsumption.js.map +1 -0
  1054. package/dist/engine/release/gate_checks/checkDependencyAudit.d.ts.map +1 -0
  1055. package/dist/engine/release/gate_checks/checkDependencyAudit.js +45 -0
  1056. package/dist/engine/release/gate_checks/checkDependencyAudit.js.map +1 -0
  1057. package/dist/engine/release/gate_checks/checkDistFreshness.d.ts.map +1 -0
  1058. package/dist/engine/release/gate_checks/checkDistFreshness.js +59 -0
  1059. package/dist/engine/release/gate_checks/checkDistFreshness.js.map +1 -0
  1060. package/dist/engine/release/gate_checks/checkKnowledgeAssetSchemaP0.d.ts +6 -0
  1061. package/dist/engine/release/gate_checks/checkKnowledgeAssetSchemaP0.d.ts.map +1 -0
  1062. package/dist/engine/release/gate_checks/checkKnowledgeAssetSchemaP0.js +30 -0
  1063. package/dist/engine/release/gate_checks/checkKnowledgeAssetSchemaP0.js.map +1 -0
  1064. package/dist/engine/release/gate_checks/checkMainlineConsumption.d.ts.map +1 -0
  1065. package/dist/engine/release/gate_checks/checkMainlineConsumption.js +356 -0
  1066. package/dist/engine/release/gate_checks/checkMainlineConsumption.js.map +1 -0
  1067. package/dist/engine/release/gate_checks/checkNpmPack.d.ts +10 -0
  1068. package/dist/engine/release/gate_checks/checkNpmPack.d.ts.map +1 -0
  1069. package/dist/engine/release/gate_checks/checkNpmPack.js +69 -0
  1070. package/dist/engine/release/gate_checks/checkNpmPack.js.map +1 -0
  1071. package/dist/engine/release/gate_checks/checkTemplateKnowledgeHygiene.d.ts.map +1 -0
  1072. package/dist/engine/release/gate_checks/checkTemplateKnowledgeHygiene.js +267 -0
  1073. package/dist/engine/release/gate_checks/checkTemplateKnowledgeHygiene.js.map +1 -0
  1074. package/dist/engine/release/gate_checks/checkWorkflowNavigation.d.ts.map +1 -0
  1075. package/dist/engine/release/gate_checks/checkWorkflowNavigation.js +189 -0
  1076. package/dist/engine/release/gate_checks/checkWorkflowNavigation.js.map +1 -0
  1077. package/dist/engine/release/gate_checks/helpers.d.ts.map +1 -0
  1078. package/dist/engine/release/gate_checks/helpers.js +92 -0
  1079. package/dist/engine/release/gate_checks/helpers.js.map +1 -0
  1080. package/dist/engine/release/gate_checks/types.d.ts.map +1 -0
  1081. package/dist/engine/release/gate_checks/types.js.map +1 -0
  1082. package/dist/engine/release/index.d.ts +6 -0
  1083. package/dist/engine/release/index.d.ts.map +1 -0
  1084. package/dist/engine/release/index.js +6 -0
  1085. package/dist/engine/release/index.js.map +1 -0
  1086. package/dist/engine/release/release_gate_scenario_registry.d.ts.map +1 -0
  1087. package/dist/engine/release/release_gate_scenario_registry.js +717 -0
  1088. package/dist/engine/release/release_gate_scenario_registry.js.map +1 -0
  1089. package/dist/engine/release/release_issue_scenario_registry/fixtures.d.ts +8 -0
  1090. package/dist/engine/release/release_issue_scenario_registry/fixtures.d.ts.map +1 -0
  1091. package/dist/engine/release/release_issue_scenario_registry/fixtures.js +54 -0
  1092. package/dist/engine/release/release_issue_scenario_registry/fixtures.js.map +1 -0
  1093. package/dist/engine/release/release_issue_scenario_registry/index.d.ts +8 -0
  1094. package/dist/engine/release/release_issue_scenario_registry/index.d.ts.map +1 -0
  1095. package/dist/engine/release/release_issue_scenario_registry/index.js +7 -0
  1096. package/dist/engine/release/release_issue_scenario_registry/index.js.map +1 -0
  1097. package/dist/engine/release/release_issue_scenario_registry/registry.d.ts +26 -0
  1098. package/dist/engine/release/release_issue_scenario_registry/registry.d.ts.map +1 -0
  1099. package/dist/engine/release/release_issue_scenario_registry/registry.js +83 -0
  1100. package/dist/engine/release/release_issue_scenario_registry/registry.js.map +1 -0
  1101. package/dist/engine/release/release_issue_scenario_registry/scenarios_architecture_workshop.d.ts +6 -0
  1102. package/dist/engine/release/release_issue_scenario_registry/scenarios_architecture_workshop.d.ts.map +1 -0
  1103. package/dist/engine/release/release_issue_scenario_registry/scenarios_architecture_workshop.js +284 -0
  1104. package/dist/engine/release/release_issue_scenario_registry/scenarios_architecture_workshop.js.map +1 -0
  1105. package/dist/engine/release/release_issue_scenario_registry/scenarios_code_observability.d.ts +6 -0
  1106. package/dist/engine/release/release_issue_scenario_registry/scenarios_code_observability.d.ts.map +1 -0
  1107. package/dist/engine/release/release_issue_scenario_registry/scenarios_code_observability.js +214 -0
  1108. package/dist/engine/release/release_issue_scenario_registry/scenarios_code_observability.js.map +1 -0
  1109. package/dist/engine/release/release_issue_scenario_registry/scenarios_decision_workshop.d.ts +6 -0
  1110. package/dist/engine/release/release_issue_scenario_registry/scenarios_decision_workshop.d.ts.map +1 -0
  1111. package/dist/engine/release/release_issue_scenario_registry/scenarios_decision_workshop.js +356 -0
  1112. package/dist/engine/release/release_issue_scenario_registry/scenarios_decision_workshop.js.map +1 -0
  1113. package/dist/engine/release/release_issue_scenario_registry/scenarios_design_pack.d.ts +6 -0
  1114. package/dist/engine/release/release_issue_scenario_registry/scenarios_design_pack.d.ts.map +1 -0
  1115. package/dist/engine/release/release_issue_scenario_registry/scenarios_design_pack.js +232 -0
  1116. package/dist/engine/release/release_issue_scenario_registry/scenarios_design_pack.js.map +1 -0
  1117. package/dist/engine/release/release_issue_scenario_registry/scenarios_template_contract.d.ts +6 -0
  1118. package/dist/engine/release/release_issue_scenario_registry/scenarios_template_contract.d.ts.map +1 -0
  1119. package/dist/engine/release/release_issue_scenario_registry/scenarios_template_contract.js +358 -0
  1120. package/dist/engine/release/release_issue_scenario_registry/scenarios_template_contract.js.map +1 -0
  1121. package/dist/engine/release/release_issue_scenario_registry/scenarios_template_visibility.d.ts +6 -0
  1122. package/dist/engine/release/release_issue_scenario_registry/scenarios_template_visibility.d.ts.map +1 -0
  1123. package/dist/engine/release/release_issue_scenario_registry/scenarios_template_visibility.js +292 -0
  1124. package/dist/engine/release/release_issue_scenario_registry/scenarios_template_visibility.js.map +1 -0
  1125. package/dist/engine/release/release_issue_scenario_registry/scenarios_workflow_navigation.d.ts +12 -0
  1126. package/dist/engine/release/release_issue_scenario_registry/scenarios_workflow_navigation.d.ts.map +1 -0
  1127. package/dist/engine/release/release_issue_scenario_registry/scenarios_workflow_navigation.js +147 -0
  1128. package/dist/engine/release/release_issue_scenario_registry/scenarios_workflow_navigation.js.map +1 -0
  1129. package/dist/engine/release/release_issue_scenario_registry/types.d.ts +37 -0
  1130. package/dist/engine/release/release_issue_scenario_registry/types.d.ts.map +1 -0
  1131. package/dist/engine/release/release_issue_scenario_registry/types.js +5 -0
  1132. package/dist/engine/release/release_issue_scenario_registry/types.js.map +1 -0
  1133. package/dist/engine/release/release_issue_scenario_registry/workshop_helpers.d.ts +35 -0
  1134. package/dist/engine/release/release_issue_scenario_registry/workshop_helpers.d.ts.map +1 -0
  1135. package/dist/engine/release/release_issue_scenario_registry/workshop_helpers.js +78 -0
  1136. package/dist/engine/release/release_issue_scenario_registry/workshop_helpers.js.map +1 -0
  1137. package/dist/engine/release/release_issue_scenario_registry.d.ts +9 -0
  1138. package/dist/engine/release/release_issue_scenario_registry.d.ts.map +1 -0
  1139. package/dist/engine/release/release_issue_scenario_registry.js +8 -0
  1140. package/dist/engine/release/release_issue_scenario_registry.js.map +1 -0
  1141. package/dist/engine/release/release_readiness_gate.d.ts +26 -0
  1142. package/dist/engine/release/release_readiness_gate.d.ts.map +1 -0
  1143. package/dist/engine/release/release_readiness_gate.js +209 -0
  1144. package/dist/engine/release/release_readiness_gate.js.map +1 -0
  1145. package/dist/engine/release/release_tool_harness.d.ts +84 -0
  1146. package/dist/engine/release/release_tool_harness.d.ts.map +1 -0
  1147. package/dist/engine/release/release_tool_harness.js +169 -0
  1148. package/dist/engine/release/release_tool_harness.js.map +1 -0
  1149. package/dist/engine/release/types.d.ts +81 -0
  1150. package/dist/engine/release/types.d.ts.map +1 -0
  1151. package/dist/engine/release/types.js +7 -0
  1152. package/dist/engine/release/types.js.map +1 -0
  1153. package/dist/engine/release/verifier.d.ts +45 -0
  1154. package/dist/engine/release/verifier.d.ts.map +1 -0
  1155. package/dist/engine/release/verifier.js +629 -0
  1156. package/dist/engine/release/verifier.js.map +1 -0
  1157. package/dist/engine/retention_policy.js +1 -1
  1158. package/dist/engine/retention_policy.js.map +1 -1
  1159. package/dist/engine/state_fact_classifier.d.ts +3 -3
  1160. package/dist/engine/state_fact_classifier.js +4 -4
  1161. package/dist/engine/state_fact_classifier.js.map +1 -1
  1162. package/dist/engine/team_awareness.d.ts +1 -1
  1163. package/dist/engine/team_awareness.d.ts.map +1 -1
  1164. package/dist/engine/team_awareness.js +1 -1
  1165. package/dist/engine/team_awareness.js.map +1 -1
  1166. package/dist/engine/templates/asset_manifest.d.ts +67 -0
  1167. package/dist/engine/templates/asset_manifest.d.ts.map +1 -0
  1168. package/dist/engine/templates/asset_manifest.js +316 -0
  1169. package/dist/engine/templates/asset_manifest.js.map +1 -0
  1170. package/dist/engine/templates/consumable_asset_registry/builtin_assets_core.d.ts +8 -0
  1171. package/dist/engine/templates/consumable_asset_registry/builtin_assets_core.d.ts.map +1 -0
  1172. package/dist/engine/templates/consumable_asset_registry/builtin_assets_core.js +326 -0
  1173. package/dist/engine/templates/consumable_asset_registry/builtin_assets_core.js.map +1 -0
  1174. package/dist/engine/templates/consumable_asset_registry/builtin_assets_dual_layer_core.d.ts +7 -0
  1175. package/dist/engine/templates/consumable_asset_registry/builtin_assets_dual_layer_core.d.ts.map +1 -0
  1176. package/dist/engine/templates/consumable_asset_registry/builtin_assets_dual_layer_core.js +310 -0
  1177. package/dist/engine/templates/consumable_asset_registry/builtin_assets_dual_layer_core.js.map +1 -0
  1178. package/dist/engine/templates/consumable_asset_registry/builtin_assets_dual_layer_ext.d.ts +7 -0
  1179. package/dist/engine/templates/consumable_asset_registry/builtin_assets_dual_layer_ext.d.ts.map +1 -0
  1180. package/dist/engine/templates/consumable_asset_registry/builtin_assets_dual_layer_ext.js +255 -0
  1181. package/dist/engine/templates/consumable_asset_registry/builtin_assets_dual_layer_ext.js.map +1 -0
  1182. package/dist/engine/templates/consumable_asset_registry/builtin_assets_dual_layer_ext2.d.ts +8 -0
  1183. package/dist/engine/templates/consumable_asset_registry/builtin_assets_dual_layer_ext2.d.ts.map +1 -0
  1184. package/dist/engine/templates/consumable_asset_registry/builtin_assets_dual_layer_ext2.js +281 -0
  1185. package/dist/engine/templates/consumable_asset_registry/builtin_assets_dual_layer_ext2.js.map +1 -0
  1186. package/dist/engine/templates/consumable_asset_registry/builtin_assets_pipeline.d.ts +7 -0
  1187. package/dist/engine/templates/consumable_asset_registry/builtin_assets_pipeline.d.ts.map +1 -0
  1188. package/dist/engine/templates/consumable_asset_registry/builtin_assets_pipeline.js +60 -0
  1189. package/dist/engine/templates/consumable_asset_registry/builtin_assets_pipeline.js.map +1 -0
  1190. package/dist/engine/templates/consumable_asset_registry/index.d.ts +9 -0
  1191. package/dist/engine/templates/consumable_asset_registry/index.d.ts.map +1 -0
  1192. package/dist/engine/templates/consumable_asset_registry/index.js +9 -0
  1193. package/dist/engine/templates/consumable_asset_registry/index.js.map +1 -0
  1194. package/dist/engine/templates/consumable_asset_registry/registry.d.ts +33 -0
  1195. package/dist/engine/templates/consumable_asset_registry/registry.d.ts.map +1 -0
  1196. package/dist/engine/templates/consumable_asset_registry/registry.js +55 -0
  1197. package/dist/engine/templates/consumable_asset_registry/registry.js.map +1 -0
  1198. package/dist/engine/templates/consumable_asset_registry/types.d.ts +55 -0
  1199. package/dist/engine/templates/consumable_asset_registry/types.d.ts.map +1 -0
  1200. package/dist/engine/templates/consumable_asset_registry/types.js +246 -0
  1201. package/dist/engine/templates/consumable_asset_registry/types.js.map +1 -0
  1202. package/dist/engine/templates/consumable_asset_registry.d.ts +11 -0
  1203. package/dist/engine/templates/consumable_asset_registry.d.ts.map +1 -0
  1204. package/dist/engine/templates/consumable_asset_registry.js +10 -0
  1205. package/dist/engine/templates/consumable_asset_registry.js.map +1 -0
  1206. package/dist/engine/templates/consumption_trace_store.d.ts +93 -0
  1207. package/dist/engine/templates/consumption_trace_store.d.ts.map +1 -0
  1208. package/dist/engine/templates/consumption_trace_store.js +128 -0
  1209. package/dist/engine/templates/consumption_trace_store.js.map +1 -0
  1210. package/dist/engine/templates/explicit_asset_registry/adapters.d.ts +3 -0
  1211. package/dist/engine/templates/explicit_asset_registry/adapters.d.ts.map +1 -0
  1212. package/dist/engine/templates/explicit_asset_registry/adapters.js +67 -0
  1213. package/dist/engine/templates/explicit_asset_registry/adapters.js.map +1 -0
  1214. package/dist/engine/templates/explicit_asset_registry/artifacts_existing_system.d.ts +3 -0
  1215. package/dist/engine/templates/explicit_asset_registry/artifacts_existing_system.d.ts.map +1 -0
  1216. package/dist/engine/templates/explicit_asset_registry/artifacts_existing_system.js +163 -0
  1217. package/dist/engine/templates/explicit_asset_registry/artifacts_existing_system.js.map +1 -0
  1218. package/dist/engine/templates/explicit_asset_registry/artifacts_shared_part1.d.ts +3 -0
  1219. package/dist/engine/templates/explicit_asset_registry/artifacts_shared_part1.d.ts.map +1 -0
  1220. package/dist/engine/templates/explicit_asset_registry/artifacts_shared_part1.js +403 -0
  1221. package/dist/engine/templates/explicit_asset_registry/artifacts_shared_part1.js.map +1 -0
  1222. package/dist/engine/templates/explicit_asset_registry/artifacts_shared_part2.d.ts +3 -0
  1223. package/dist/engine/templates/explicit_asset_registry/artifacts_shared_part2.d.ts.map +1 -0
  1224. package/dist/engine/templates/explicit_asset_registry/artifacts_shared_part2.js +83 -0
  1225. package/dist/engine/templates/explicit_asset_registry/artifacts_shared_part2.js.map +1 -0
  1226. package/dist/engine/templates/explicit_asset_registry/checklists.d.ts +3 -0
  1227. package/dist/engine/templates/explicit_asset_registry/checklists.d.ts.map +1 -0
  1228. package/dist/engine/templates/explicit_asset_registry/checklists.js +115 -0
  1229. package/dist/engine/templates/explicit_asset_registry/checklists.js.map +1 -0
  1230. package/dist/engine/templates/explicit_asset_registry/contributing.d.ts +3 -0
  1231. package/dist/engine/templates/explicit_asset_registry/contributing.d.ts.map +1 -0
  1232. package/dist/engine/templates/explicit_asset_registry/contributing.js +19 -0
  1233. package/dist/engine/templates/explicit_asset_registry/contributing.js.map +1 -0
  1234. package/dist/engine/templates/explicit_asset_registry/domain.d.ts +3 -0
  1235. package/dist/engine/templates/explicit_asset_registry/domain.d.ts.map +1 -0
  1236. package/dist/engine/templates/explicit_asset_registry/domain.js +147 -0
  1237. package/dist/engine/templates/explicit_asset_registry/domain.js.map +1 -0
  1238. package/dist/engine/templates/explicit_asset_registry/gates.d.ts +3 -0
  1239. package/dist/engine/templates/explicit_asset_registry/gates.d.ts.map +1 -0
  1240. package/dist/engine/templates/explicit_asset_registry/gates.js +374 -0
  1241. package/dist/engine/templates/explicit_asset_registry/gates.js.map +1 -0
  1242. package/dist/engine/templates/explicit_asset_registry/index.d.ts +4 -0
  1243. package/dist/engine/templates/explicit_asset_registry/index.d.ts.map +1 -0
  1244. package/dist/engine/templates/explicit_asset_registry/index.js +58 -0
  1245. package/dist/engine/templates/explicit_asset_registry/index.js.map +1 -0
  1246. package/dist/engine/templates/explicit_asset_registry/internal_patterns.d.ts +3 -0
  1247. package/dist/engine/templates/explicit_asset_registry/internal_patterns.d.ts.map +1 -0
  1248. package/dist/engine/templates/explicit_asset_registry/internal_patterns.js +435 -0
  1249. package/dist/engine/templates/explicit_asset_registry/internal_patterns.js.map +1 -0
  1250. package/dist/engine/templates/explicit_asset_registry/internal_rules_part1.d.ts +3 -0
  1251. package/dist/engine/templates/explicit_asset_registry/internal_rules_part1.d.ts.map +1 -0
  1252. package/dist/engine/templates/explicit_asset_registry/internal_rules_part1.js +419 -0
  1253. package/dist/engine/templates/explicit_asset_registry/internal_rules_part1.js.map +1 -0
  1254. package/dist/engine/templates/explicit_asset_registry/internal_rules_part2.d.ts +3 -0
  1255. package/dist/engine/templates/explicit_asset_registry/internal_rules_part2.d.ts.map +1 -0
  1256. package/dist/engine/templates/explicit_asset_registry/internal_rules_part2.js +323 -0
  1257. package/dist/engine/templates/explicit_asset_registry/internal_rules_part2.js.map +1 -0
  1258. package/dist/engine/templates/explicit_asset_registry/patterns_part1.d.ts +3 -0
  1259. package/dist/engine/templates/explicit_asset_registry/patterns_part1.d.ts.map +1 -0
  1260. package/dist/engine/templates/explicit_asset_registry/patterns_part1.js +403 -0
  1261. package/dist/engine/templates/explicit_asset_registry/patterns_part1.js.map +1 -0
  1262. package/dist/engine/templates/explicit_asset_registry/patterns_part2.d.ts +3 -0
  1263. package/dist/engine/templates/explicit_asset_registry/patterns_part2.d.ts.map +1 -0
  1264. package/dist/engine/templates/explicit_asset_registry/patterns_part2.js +403 -0
  1265. package/dist/engine/templates/explicit_asset_registry/patterns_part2.js.map +1 -0
  1266. package/dist/engine/templates/explicit_asset_registry/patterns_part3.d.ts +3 -0
  1267. package/dist/engine/templates/explicit_asset_registry/patterns_part3.d.ts.map +1 -0
  1268. package/dist/engine/templates/explicit_asset_registry/patterns_part3.js +35 -0
  1269. package/dist/engine/templates/explicit_asset_registry/patterns_part3.js.map +1 -0
  1270. package/dist/engine/templates/explicit_asset_registry/procedures_part1.d.ts +3 -0
  1271. package/dist/engine/templates/explicit_asset_registry/procedures_part1.d.ts.map +1 -0
  1272. package/dist/engine/templates/explicit_asset_registry/procedures_part1.js +435 -0
  1273. package/dist/engine/templates/explicit_asset_registry/procedures_part1.js.map +1 -0
  1274. package/dist/engine/templates/explicit_asset_registry/procedures_part2.d.ts +3 -0
  1275. package/dist/engine/templates/explicit_asset_registry/procedures_part2.d.ts.map +1 -0
  1276. package/dist/engine/templates/explicit_asset_registry/procedures_part2.js +230 -0
  1277. package/dist/engine/templates/explicit_asset_registry/procedures_part2.js.map +1 -0
  1278. package/dist/engine/templates/explicit_asset_registry/profiles.d.ts +3 -0
  1279. package/dist/engine/templates/explicit_asset_registry/profiles.d.ts.map +1 -0
  1280. package/dist/engine/templates/explicit_asset_registry/profiles.js +51 -0
  1281. package/dist/engine/templates/explicit_asset_registry/profiles.js.map +1 -0
  1282. package/dist/engine/templates/explicit_asset_registry/rules_pipeline.d.ts +3 -0
  1283. package/dist/engine/templates/explicit_asset_registry/rules_pipeline.d.ts.map +1 -0
  1284. package/dist/engine/templates/explicit_asset_registry/rules_pipeline.js +163 -0
  1285. package/dist/engine/templates/explicit_asset_registry/rules_pipeline.js.map +1 -0
  1286. package/dist/engine/templates/explicit_asset_registry/rules_shared.d.ts +3 -0
  1287. package/dist/engine/templates/explicit_asset_registry/rules_shared.d.ts.map +1 -0
  1288. package/dist/engine/templates/explicit_asset_registry/rules_shared.js +622 -0
  1289. package/dist/engine/templates/explicit_asset_registry/rules_shared.js.map +1 -0
  1290. package/dist/engine/templates/explicit_asset_registry/scaffolds.d.ts +3 -0
  1291. package/dist/engine/templates/explicit_asset_registry/scaffolds.d.ts.map +1 -0
  1292. package/dist/engine/templates/explicit_asset_registry/scaffolds.js +378 -0
  1293. package/dist/engine/templates/explicit_asset_registry/scaffolds.js.map +1 -0
  1294. package/dist/engine/templates/explicit_asset_registry/types.d.ts +29 -0
  1295. package/dist/engine/templates/explicit_asset_registry/types.d.ts.map +1 -0
  1296. package/dist/engine/templates/explicit_asset_registry/types.js +7 -0
  1297. package/dist/engine/templates/explicit_asset_registry/types.js.map +1 -0
  1298. package/dist/engine/templates/explicit_asset_registry.d.ts +9 -0
  1299. package/dist/engine/templates/explicit_asset_registry.d.ts.map +1 -0
  1300. package/dist/engine/templates/explicit_asset_registry.js +9 -0
  1301. package/dist/engine/templates/explicit_asset_registry.js.map +1 -0
  1302. package/dist/engine/templates/observed_consumption.d.ts +54 -0
  1303. package/dist/engine/templates/observed_consumption.d.ts.map +1 -0
  1304. package/dist/engine/templates/observed_consumption.js +364 -0
  1305. package/dist/engine/templates/observed_consumption.js.map +1 -0
  1306. package/dist/engine/templates/scaffolder.d.ts +19 -0
  1307. package/dist/engine/templates/scaffolder.d.ts.map +1 -0
  1308. package/dist/engine/templates/scaffolder.js +412 -0
  1309. package/dist/engine/templates/scaffolder.js.map +1 -0
  1310. package/dist/engine/templates/standard_asset_contract.d.ts +105 -0
  1311. package/dist/engine/templates/standard_asset_contract.d.ts.map +1 -0
  1312. package/dist/engine/templates/standard_asset_contract.js +540 -0
  1313. package/dist/engine/templates/standard_asset_contract.js.map +1 -0
  1314. package/dist/engine/templates/standard_asset_coverage.d.ts.map +1 -0
  1315. package/dist/engine/templates/standard_asset_coverage.js +220 -0
  1316. package/dist/engine/templates/standard_asset_coverage.js.map +1 -0
  1317. package/dist/engine/templates/template_asset_contract_registry.d.ts +162 -0
  1318. package/dist/engine/templates/template_asset_contract_registry.d.ts.map +1 -0
  1319. package/dist/engine/templates/template_asset_contract_registry.js +662 -0
  1320. package/dist/engine/templates/template_asset_contract_registry.js.map +1 -0
  1321. package/dist/engine/templates/template_asset_visibility.d.ts +109 -0
  1322. package/dist/engine/templates/template_asset_visibility.d.ts.map +1 -0
  1323. package/dist/engine/templates/template_asset_visibility.js +304 -0
  1324. package/dist/engine/templates/template_asset_visibility.js.map +1 -0
  1325. package/dist/engine/templates/template_init_sync.d.ts +103 -0
  1326. package/dist/engine/templates/template_init_sync.d.ts.map +1 -0
  1327. package/dist/engine/templates/template_init_sync.js +447 -0
  1328. package/dist/engine/templates/template_init_sync.js.map +1 -0
  1329. package/dist/engine/templates/template_manifest_io.d.ts +57 -0
  1330. package/dist/engine/templates/template_manifest_io.d.ts.map +1 -0
  1331. package/dist/engine/templates/template_manifest_io.js +189 -0
  1332. package/dist/engine/templates/template_manifest_io.js.map +1 -0
  1333. package/dist/engine/templates/template_mechanism_auditor.d.ts +95 -0
  1334. package/dist/engine/templates/template_mechanism_auditor.d.ts.map +1 -0
  1335. package/dist/engine/templates/template_mechanism_auditor.js +627 -0
  1336. package/dist/engine/templates/template_mechanism_auditor.js.map +1 -0
  1337. package/dist/engine/templates/template_sync.d.ts +98 -0
  1338. package/dist/engine/templates/template_sync.d.ts.map +1 -0
  1339. package/dist/engine/templates/template_sync.js.map +1 -0
  1340. package/dist/engine/templates/workflow_rule_generator.d.ts +22 -0
  1341. package/dist/engine/templates/workflow_rule_generator.d.ts.map +1 -0
  1342. package/dist/engine/templates/workflow_rule_generator.js +81 -0
  1343. package/dist/engine/templates/workflow_rule_generator.js.map +1 -0
  1344. package/dist/engine/workflow/index.d.ts +10 -0
  1345. package/dist/engine/workflow/index.d.ts.map +1 -0
  1346. package/dist/engine/workflow/index.js +12 -0
  1347. package/dist/engine/workflow/index.js.map +1 -0
  1348. package/dist/engine/workflow/next_action_planner.d.ts +32 -0
  1349. package/dist/engine/workflow/next_action_planner.d.ts.map +1 -0
  1350. package/dist/engine/workflow/next_action_planner.js +868 -0
  1351. package/dist/engine/workflow/next_action_planner.js.map +1 -0
  1352. package/dist/engine/workflow/project_stage_detector.d.ts.map +1 -0
  1353. package/dist/engine/workflow/project_stage_detector.js +253 -0
  1354. package/dist/engine/workflow/project_stage_detector.js.map +1 -0
  1355. package/dist/engine/workflow/workflow_contract_registry.d.ts +126 -0
  1356. package/dist/engine/workflow/workflow_contract_registry.d.ts.map +1 -0
  1357. package/dist/engine/workflow/workflow_contract_registry.js +271 -0
  1358. package/dist/engine/workflow/workflow_contract_registry.js.map +1 -0
  1359. package/dist/engine/workflow/workflow_navigation_contract.d.ts +178 -0
  1360. package/dist/engine/workflow/workflow_navigation_contract.d.ts.map +1 -0
  1361. package/dist/engine/workflow/workflow_navigation_contract.js +30 -0
  1362. package/dist/engine/workflow/workflow_navigation_contract.js.map +1 -0
  1363. package/dist/git/git_deps.d.ts +72 -0
  1364. package/dist/git/git_deps.d.ts.map +1 -0
  1365. package/dist/git/git_deps.js +9 -0
  1366. package/dist/git/git_deps.js.map +1 -0
  1367. package/dist/git/operations.d.ts +1 -0
  1368. package/dist/git/operations.d.ts.map +1 -1
  1369. package/dist/git/operations.js +3 -1
  1370. package/dist/git/operations.js.map +1 -1
  1371. package/dist/index.d.ts +2 -2
  1372. package/dist/index.js +61 -20
  1373. package/dist/index.js.map +1 -1
  1374. package/dist/knowledge/conflict_detector.d.ts +14 -0
  1375. package/dist/knowledge/conflict_detector.d.ts.map +1 -1
  1376. package/dist/knowledge/conflict_detector.js +82 -4
  1377. package/dist/knowledge/conflict_detector.js.map +1 -1
  1378. package/dist/knowledge/health_checker.d.ts.map +1 -1
  1379. package/dist/knowledge/health_checker.js +19 -8
  1380. package/dist/knowledge/health_checker.js.map +1 -1
  1381. package/dist/knowledge/index_manager.d.ts +25 -1
  1382. package/dist/knowledge/index_manager.d.ts.map +1 -1
  1383. package/dist/knowledge/index_manager.js +355 -109
  1384. package/dist/knowledge/index_manager.js.map +1 -1
  1385. package/dist/knowledge/loader.d.ts +8 -4
  1386. package/dist/knowledge/loader.d.ts.map +1 -1
  1387. package/dist/knowledge/loader.js +204 -40
  1388. package/dist/knowledge/loader.js.map +1 -1
  1389. package/dist/knowledge/writer.d.ts +10 -0
  1390. package/dist/knowledge/writer.d.ts.map +1 -1
  1391. package/dist/knowledge/writer.js +44 -3
  1392. package/dist/knowledge/writer.js.map +1 -1
  1393. package/dist/server/index.d.ts +26 -0
  1394. package/dist/server/index.d.ts.map +1 -0
  1395. package/dist/server/index.js +55 -0
  1396. package/dist/server/index.js.map +1 -0
  1397. package/dist/server/lifecycle.d.ts +25 -0
  1398. package/dist/server/lifecycle.d.ts.map +1 -0
  1399. package/dist/server/lifecycle.js +66 -0
  1400. package/dist/server/lifecycle.js.map +1 -0
  1401. package/dist/server/tools/cep_assessment.d.ts +172 -0
  1402. package/dist/server/tools/cep_assessment.d.ts.map +1 -0
  1403. package/dist/server/tools/cep_assessment.js +397 -0
  1404. package/dist/server/tools/cep_assessment.js.map +1 -0
  1405. package/dist/server/tools/gate_checks.d.ts +123 -0
  1406. package/dist/server/tools/gate_checks.d.ts.map +1 -0
  1407. package/dist/server/tools/gate_checks.js +267 -0
  1408. package/dist/server/tools/gate_checks.js.map +1 -0
  1409. package/dist/server/tools/index.d.ts +12 -0
  1410. package/dist/server/tools/index.d.ts.map +1 -0
  1411. package/dist/server/tools/index.js +62 -0
  1412. package/dist/server/tools/index.js.map +1 -0
  1413. package/dist/server/tools/lazy_loaders.d.ts +66 -0
  1414. package/dist/server/tools/lazy_loaders.d.ts.map +1 -0
  1415. package/dist/server/tools/lazy_loaders.js +78 -0
  1416. package/dist/server/tools/lazy_loaders.js.map +1 -0
  1417. package/dist/server/tools/middleware.d.ts +52 -0
  1418. package/dist/server/tools/middleware.d.ts.map +1 -0
  1419. package/dist/server/tools/middleware.js +648 -0
  1420. package/dist/server/tools/middleware.js.map +1 -0
  1421. package/dist/server/tools/schemas.d.ts +220 -0
  1422. package/dist/server/tools/schemas.d.ts.map +1 -0
  1423. package/dist/server/tools/schemas.js +162 -0
  1424. package/dist/server/tools/schemas.js.map +1 -0
  1425. package/dist/server/tools/tool_groups/admin.d.ts +3 -0
  1426. package/dist/server/tools/tool_groups/admin.d.ts.map +1 -0
  1427. package/dist/server/tools/tool_groups/admin.js +162 -0
  1428. package/dist/server/tools/tool_groups/admin.js.map +1 -0
  1429. package/dist/server/tools/tool_groups/auxiliary.d.ts +3 -0
  1430. package/dist/server/tools/tool_groups/auxiliary.d.ts.map +1 -0
  1431. package/dist/server/tools/tool_groups/auxiliary.js +144 -0
  1432. package/dist/server/tools/tool_groups/auxiliary.js.map +1 -0
  1433. package/dist/server/tools/tool_groups/knowledge.d.ts +3 -0
  1434. package/dist/server/tools/tool_groups/knowledge.d.ts.map +1 -0
  1435. package/dist/server/tools/tool_groups/knowledge.js +71 -0
  1436. package/dist/server/tools/tool_groups/knowledge.js.map +1 -0
  1437. package/dist/server/tools/tool_groups/product_operations.d.ts +9 -0
  1438. package/dist/server/tools/tool_groups/product_operations.d.ts.map +1 -0
  1439. package/dist/server/tools/tool_groups/product_operations.js +143 -0
  1440. package/dist/server/tools/tool_groups/product_operations.js.map +1 -0
  1441. package/dist/server/tools/tool_groups/scaffold_accept_deliver.d.ts +3 -0
  1442. package/dist/server/tools/tool_groups/scaffold_accept_deliver.d.ts.map +1 -0
  1443. package/dist/server/tools/tool_groups/scaffold_accept_deliver.js +37 -0
  1444. package/dist/server/tools/tool_groups/scaffold_accept_deliver.js.map +1 -0
  1445. package/dist/server/tools/tool_groups/state_machine.d.ts +13 -0
  1446. package/dist/server/tools/tool_groups/state_machine.d.ts.map +1 -0
  1447. package/dist/server/tools/tool_groups/state_machine.js +606 -0
  1448. package/dist/server/tools/tool_groups/state_machine.js.map +1 -0
  1449. package/dist/server/tools/tool_names.d.ts +59 -0
  1450. package/dist/server/tools/tool_names.d.ts.map +1 -0
  1451. package/dist/server/tools/tool_names.js +67 -0
  1452. package/dist/server/tools/tool_names.js.map +1 -0
  1453. package/dist/server/tools/types.d.ts +14 -0
  1454. package/dist/server/tools/types.d.ts.map +1 -0
  1455. package/dist/server/tools/types.js +2 -0
  1456. package/dist/server/tools/types.js.map +1 -0
  1457. package/dist/server/tools/utils.d.ts +17 -0
  1458. package/dist/server/tools/utils.d.ts.map +1 -0
  1459. package/dist/server/tools/utils.js +65 -0
  1460. package/dist/server/tools/utils.js.map +1 -0
  1461. package/dist/types/analysis.d.ts +5 -0
  1462. package/dist/types/analysis.d.ts.map +1 -1
  1463. package/dist/types/base.d.ts +2 -0
  1464. package/dist/types/base.d.ts.map +1 -1
  1465. package/dist/types/config.d.ts +2 -0
  1466. package/dist/types/config.d.ts.map +1 -1
  1467. package/dist/types/delivery.d.ts +44 -1
  1468. package/dist/types/delivery.d.ts.map +1 -1
  1469. package/dist/types/dual_layer.d.ts +3 -3
  1470. package/dist/types/index.d.ts +1 -0
  1471. package/dist/types/index.d.ts.map +1 -1
  1472. package/dist/types/index.js +1 -0
  1473. package/dist/types/index.js.map +1 -1
  1474. package/dist/types/knowledge.d.ts +19 -8
  1475. package/dist/types/knowledge.d.ts.map +1 -1
  1476. package/dist/types/knowledge.js.map +1 -1
  1477. package/dist/types/pipeline.d.ts +202 -17
  1478. package/dist/types/pipeline.d.ts.map +1 -1
  1479. package/dist/types/pipeline.js +4 -0
  1480. package/dist/types/pipeline.js.map +1 -1
  1481. package/dist/types/state_machine.d.ts +353 -0
  1482. package/dist/types/state_machine.d.ts.map +1 -0
  1483. package/dist/types/state_machine.js +47 -0
  1484. package/dist/types/state_machine.js.map +1 -0
  1485. package/dist/types/task.d.ts +151 -40
  1486. package/dist/types/task.d.ts.map +1 -1
  1487. package/package.json +27 -11
  1488. package/templates/artifacts/existing-system//344/270/200/351/224/256/345/274/200/345/205/263/351/205/215/347/275/256/346/250/241/347/211/210.json +23 -2
  1489. package/templates/artifacts/existing-system//345/216/206/345/217/262/346/225/260/346/215/256/346/270/205/346/264/227/350/204/232/346/234/254/346/250/241/347/211/210.md +18 -10
  1490. package/templates/artifacts/existing-system//345/216/206/345/217/262/351/201/227/347/225/231/351/233/267/345/214/272/346/270/205/345/215/225/346/250/241/347/211/210.md +29 -25
  1491. package/templates/artifacts/existing-system//345/220/221/345/220/216/345/205/274/345/256/271/346/200/247/345/220/210/350/247/204/346/212/245/345/221/212/346/250/241/347/211/210.md +31 -18
  1492. package/templates/artifacts/existing-system//345/242/236/351/207/217/350/276/271/347/225/214/347/225/214/345/256/232/346/226/207/346/241/243/346/250/241/347/211/210.md +27 -18
  1493. package/templates/artifacts/existing-system//346/224/271/351/200/240/345/275/261/345/223/215/350/214/203/345/233/264/350/257/204/344/274/260/346/250/241/347/211/210.md +24 -10
  1494. package/templates/artifacts/existing-system//346/225/260/346/215/256/350/241/200/347/274/230/345/233/276/346/250/241/347/211/210.md +21 -10
  1495. package/templates/artifacts/existing-system//346/226/260/350/200/201/351/200/273/350/276/221/346/257/224/345/257/271/346/227/245/345/277/227/346/250/241/347/211/210.md +15 -10
  1496. package/templates/artifacts/existing-system//347/264/247/346/200/245/345/233/236/346/273/232/346/211/213/345/206/214/346/250/241/347/211/210.md +54 -17
  1497. package/templates/artifacts/existing-system//351/232/224/347/246/273/351/200/202/351/205/215/345/231/250/346/226/271/346/241/210/346/250/241/347/211/210.md +19 -11
  1498. package/templates/artifacts/shared/ADR/346/250/241/347/211/210.md +22 -9
  1499. package/templates/artifacts/shared/API/346/216/245/345/217/243/350/247/204/346/240/274/346/226/207/346/241/243/346/250/241/347/211/210.md +32 -26
  1500. package/templates/artifacts/shared/Bug/345/210/206/346/236/220/346/250/241/347/211/210.md +7 -16
  1501. package/templates/artifacts/shared/OOD/350/256/276/350/256/241/346/221/230/350/246/201/346/250/241/347/211/210.md +6 -15
  1502. package/templates/artifacts/shared/POC/347/273/223/350/256/272/346/250/241/347/211/210.md +7 -16
  1503. package/templates/artifacts/shared//344/273/243/347/240/201/345/256/241/346/237/245/346/212/245/345/221/212/346/250/241/347/211/210.md +52 -14
  1504. package/templates/artifacts/shared//344/273/243/347/240/201/346/263/250/351/207/212/344/270/216/346/227/245/345/277/227/351/252/214/346/224/266/346/250/241/347/211/210.md +68 -0
  1505. package/templates/artifacts/shared//345/210/207/347/211/207/350/256/241/345/210/222/346/250/241/347/211/210.md +126 -21
  1506. package/templates/artifacts/shared//345/211/215/347/253/257/351/241/265/351/235/242/351/252/214/346/224/266/346/270/205/345/215/225.md +6 -19
  1507. package/templates/artifacts/shared//345/216/237/345/236/213/350/257/264/346/230/216/346/250/241/347/211/210.md +117 -152
  1508. package/templates/artifacts/shared//345/220/216/347/253/257API/351/252/214/346/224/266/346/270/205/345/215/225.md +6 -18
  1509. package/templates/artifacts/shared//345/220/216/347/253/257/345/256/236/347/216/260/351/252/214/346/224/266/346/270/205/345/215/225.md +13 -15
  1510. package/templates/artifacts/shared//345/256/211/345/205/250/345/256/241/350/256/241/346/250/241/347/211/210.md +13 -39
  1511. package/templates/artifacts/shared//345/256/241/346/237/245/346/221/230/350/246/201.md +14 -21
  1512. package/templates/artifacts/shared//346/200/247/350/203/275/345/210/206/346/236/220/346/250/241/347/211/210.md +7 -16
  1513. package/templates/artifacts/shared//346/212/200/346/234/257/351/200/211/345/236/213/351/252/214/346/224/266/346/270/205/345/215/225.md +6 -18
  1514. package/templates/artifacts/shared//346/216/245/345/217/243/345/257/271/346/216/245/346/226/271/346/241/210/346/250/241/347/211/210.md +56 -23
  1515. package/templates/artifacts/shared//346/225/205/351/232/234/345/244/215/347/233/230/346/250/241/347/211/210.md +7 -17
  1516. package/templates/artifacts/shared//346/225/260/346/215/256/345/272/223/345/217/230/346/233/264/346/226/271/346/241/210/346/250/241/347/211/210.md +46 -35
  1517. package/templates/artifacts/shared//346/225/260/346/215/256/345/272/223/345/217/230/346/233/264/351/252/214/346/224/266/346/270/205/345/215/225.md +6 -20
  1518. package/templates/artifacts/shared//346/225/260/346/215/256/345/272/223/350/256/276/350/256/241/346/226/207/346/241/243/346/250/241/347/211/210.md +122 -17
  1519. package/templates/artifacts/shared//346/236/266/346/236/204/350/256/276/350/256/241/346/250/241/347/211/210.md +113 -29
  1520. package/templates/artifacts/shared//346/265/213/350/257/225/350/256/241/345/210/222/346/250/241/347/211/210.md +30 -22
  1521. package/templates/artifacts/shared//350/256/276/350/256/241/344/270/200/350/207/264/346/200/247/351/252/214/346/224/266/346/212/245/345/221/212/346/250/241/347/211/210.md +7 -12
  1522. package/templates/artifacts/shared//350/257/246/347/273/206/350/256/276/350/256/241/346/250/241/347/211/210.md +85 -33
  1523. package/templates/artifacts/shared//350/277/201/347/247/273/350/257/204/344/274/260/346/250/241/347/211/210.md +18 -16
  1524. package/templates/artifacts/shared//351/200/232/347/224/250/350/264/250/351/207/217/351/252/214/346/224/266/346/270/205/345/215/225.md +159 -39
  1525. package/templates/artifacts/shared//351/207/215/346/236/204/346/226/271/346/241/210/346/250/241/347/211/210.md +7 -16
  1526. package/templates/artifacts/shared//351/234/200/346/261/202/345/210/206/346/236/220/346/250/241/347/211/210.md +77 -19
  1527. package/templates/artifacts/shared//351/234/200/346/261/202/345/216/237/345/236/213/350/256/276/350/256/241/345/256/236/347/216/260/350/277/275/350/270/252/347/237/251/351/230/265/346/250/241/347/211/210.md +41 -53
  1528. package/templates/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 +6 -16
  1529. package/templates/checklists//344/274/232/350/257/235/346/201/242/345/244/215.md +8 -25
  1530. package/templates/checklists//345/267/245/344/275/234/346/265/201/351/252/214/346/224/266/346/270/205/345/215/225.md +6 -17
  1531. package/templates/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 +6 -16
  1532. package/templates/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 +7 -18
  1533. package/templates/checklists//351/232/220/347/247/201/345/256/241/346/237/245/346/270/205/345/215/225.md +6 -16
  1534. package/templates/checklists//351/252/214/350/257/201/351/252/214/346/224/266/346/270/205/345/215/225.md +6 -16
  1535. package/templates/domain//345/244/232/347/247/237/346/210/267.md +5 -18
  1536. package/templates/domain//345/256/241/350/256/241/346/227/245/345/277/227.md +5 -17
  1537. package/templates/domain//345/257/274/345/205/245/345/257/274/345/207/272/350/247/204/345/210/231.md +8 -22
  1538. package/templates/domain//345/267/245/344/275/234/346/265/201/345/274/225/346/223/216.md +5 -22
  1539. package/templates/domain//346/212/245/350/241/250/347/273/237/350/256/241.md +5 -20
  1540. package/templates/domain//346/224/257/344/273/230/350/247/204/345/210/231.md +5 -21
  1541. package/templates/domain//346/225/260/346/215/256/346/235/203/351/231/220.md +5 -18
  1542. package/templates/domain//351/200/232/347/224/250/346/234/272/346/242/260/346/235/241/346/254/276.md +5 -20
  1543. package/templates/domain//351/200/232/347/237/245/350/247/204/345/210/231.md +8 -23
  1544. package/templates/gates/existing-system/gate-/346/236/266/346/236/204/350/256/276/350/256/241.yaml +26 -0
  1545. package/templates/gates/existing-system/gate-/347/216/260/346/234/211/347/263/273/347/273/237/345/210/206/346/236/220.yaml +50 -2
  1546. package/templates/gates/existing-system/gate-/347/274/226/347/240/201/344/270/216/345/215/225/345/205/203/346/265/213/350/257/225.yaml +42 -8
  1547. package/templates/gates/existing-system/gate-/350/257/225/350/277/220/350/241/214.yaml +30 -12
  1548. package/templates/gates/existing-system/gate-/350/257/246/347/273/206/350/256/276/350/256/241.yaml +33 -0
  1549. package/templates/gates/shared/gate-/344/272/244/344/273/230.yaml +32 -0
  1550. package/templates/gates/shared/gate-/344/273/243/347/240/201/345/256/241/346/237/245.yaml +53 -0
  1551. package/templates/gates/shared/gate-/344/273/273/345/212/241/350/247/204/345/210/222.yaml +134 -8
  1552. package/templates/gates/shared/gate-/344/274/232/350/257/235/345/220/257/345/212/250.yaml +14 -0
  1553. package/templates/gates/shared/gate-/345/206/263/347/255/226/347/240/224/350/256/250.yaml +14 -0
  1554. package/templates/gates/shared/gate-/345/210/207/347/211/207/345/256/241/346/237/245.yaml +50 -0
  1555. package/templates/gates/shared/gate-/345/210/207/347/211/207/346/211/247/350/241/214.yaml +51 -0
  1556. package/templates/gates/shared/gate-/345/217/221/345/270/203/345/220/216/350/247/202/345/257/237.yaml +46 -0
  1557. package/templates/gates/shared/gate-/345/256/211/345/205/250/345/256/241/350/256/241.yaml +77 -0
  1558. package/templates/gates/shared/gate-/346/234/254/345/234/260/351/252/214/346/224/266.yaml +14 -0
  1559. package/templates/gates/shared/gate-/346/236/266/346/236/204/350/256/276/350/256/241.yaml +145 -0
  1560. package/templates/gates/shared/gate-/347/274/226/347/240/201/344/270/216/345/215/225/345/205/203/346/265/213/350/257/225.yaml +30 -4
  1561. package/templates/gates/shared/gate-/347/274/226/347/240/201/345/207/206/345/244/207.yaml +50 -0
  1562. package/templates/gates/shared/gate-/347/274/226/347/240/201/345/256/236/347/216/260.yaml +52 -0
  1563. package/templates/gates/shared/gate-/347/274/226/347/240/201/351/252/214/350/257/201.yaml +47 -0
  1564. package/templates/gates/shared/gate-/350/201/224/350/260/203/351/252/214/350/257/201.yaml +53 -0
  1565. package/templates/gates/shared/gate-/350/257/246/347/273/206/350/256/276/350/256/241.yaml +123 -0
  1566. package/templates/gates/shared/gate-/351/234/200/346/261/202/345/210/206/346/236/220.yaml +164 -0
  1567. package/templates/internal/patterns/Diff/345/275/222/345/261/236/350/277/275/350/270/252.md +6 -17
  1568. package/templates/internal/patterns/Hook/345/261/202/344/272/247/347/211/251/347/273/223/346/236/204/346/240/241/351/252/214.md +55 -0
  1569. package/templates/internal/patterns/Java/350/264/250/351/207/217/351/227/250/347/246/201.md +6 -18
  1570. package/templates/internal/patterns/LLM/351/242/204/347/256/227/347/275/221/345/205/263.md +6 -17
  1571. package/templates/internal/patterns//344/272/247/347/211/251Schema/346/263/250/345/206/214/344/270/255/345/277/203.md +55 -0
  1572. package/templates/internal/patterns//344/273/273/345/212/241/344/270/212/344/270/213/346/226/207/347/224/237/345/221/275/345/221/250/346/234/237.md +6 -17
  1573. package/templates/internal/patterns//344/273/273/345/212/241/347/256/241/347/220/206/345/231/250.md +6 -18
  1574. package/templates/internal/patterns//344/275/234/347/224/250/345/237/237/344/270/216/345/257/206/351/222/245/346/213/246/346/210/252.md +6 -17
  1575. package/templates/internal/patterns//344/275/234/347/224/250/345/237/237/347/247/237/347/272/246.md +6 -18
  1576. package/templates/internal/patterns//345/206/262/347/252/201/351/227/250/347/246/201.md +6 -17
  1577. package/templates/internal/patterns//345/206/263/347/255/226/347/275/221/345/205/263.md +6 -19
  1578. package/templates/internal/patterns//345/210/206/345/234/272/346/231/257/350/277/207/347/250/213/350/247/204/345/210/231.md +55 -0
  1579. package/templates/internal/patterns//345/217/230/345/274/202/345/256/241/350/256/241.md +6 -18
  1580. package/templates/internal/patterns//345/233/236/345/275/222/347/237/251/351/230/265.md +7 -18
  1581. package/templates/internal/patterns//345/267/245/344/275/234/345/214/272/344/272/222/346/226/245/351/224/201.md +6 -17
  1582. package/templates/internal/patterns//345/267/245/344/275/234/345/214/272/345/224/244/351/206/222.md +6 -17
  1583. package/templates/internal/patterns//345/271/266/345/217/221/351/224/201.md +6 -19
  1584. package/templates/internal/patterns//345/274/200/345/217/221/350/200/205/345/256/252/346/263/225.md +7 -20
  1585. package/templates/internal/patterns//346/225/217/346/204/237/344/277/241/346/201/257/346/211/253/346/217/217.md +6 -17
  1586. package/templates/internal/patterns//346/250/241/347/211/210Frontmatter/350/247/243/346/236/220.md +55 -0
  1587. package/templates/internal/patterns//346/262/273/347/220/206/350/277/220/350/241/214/346/227/266/345/276/252/347/216/257.md +6 -18
  1588. package/templates/internal/patterns//346/265/201/345/274/217/345/277/203/350/267/263.md +7 -19
  1589. package/templates/internal/patterns//347/237/245/350/257/206/344/270/273/346/235/203.md +7 -19
  1590. package/templates/internal/patterns//350/257/255/344/271/211/350/257/201/346/215/256.md +6 -17
  1591. package/templates/internal/patterns//350/277/220/350/241/214/345/256/211/345/205/250/345/214/205.md +6 -18
  1592. package/templates/internal/patterns//351/252/214/350/257/201/345/221/275/344/273/244/347/224/237/346/210/220.md +10 -20
  1593. package/templates/internal/rules/OOD/344/270/216SOLID/350/256/276/350/256/241/350/247/204/345/210/231.md +5 -20
  1594. package/templates/internal/rules//344/272/247/347/211/251/345/245/221/347/272/246/350/247/204/345/210/231.md +7 -16
  1595. package/templates/internal/rules//344/273/243/347/240/201/346/263/250/351/207/212/344/270/216/346/227/245/345/277/227/345/245/221/347/272/246/350/247/204/345/210/231.md +8 -36
  1596. package/templates/internal/rules//344/273/273/345/212/241/344/270/212/344/270/213/346/226/207/347/224/237/345/221/275/345/221/250/346/234/237/350/247/204/345/210/231.md +5 -14
  1597. package/templates/internal/rules//345/220/216/347/253/257/345/256/236/347/216/260/345/267/245/347/250/213/345/245/221/347/272/246/350/247/204/345/210/231.md +5 -20
  1598. package/templates/internal/rules//345/221/275/344/273/244/346/211/247/350/241/214/350/247/204/345/210/231.md +6 -15
  1599. package/templates/internal/rules//345/221/275/344/273/244/350/267/257/347/224/261/350/247/204/345/210/231.md +30 -0
  1600. package/templates/internal/rules//345/267/245/344/275/234/346/265/201/345/245/221/347/272/246/350/247/204/345/210/231.md +7 -16
  1601. package/templates/internal/rules//345/267/245/344/275/234/346/265/201/345/257/274/350/210/252/345/245/221/347/272/246/350/247/204/345/210/231.md +21 -34
  1602. package/templates/internal/rules//345/267/245/344/275/234/346/265/201/346/250/241/347/211/210/345/214/205/350/247/204/345/210/231.md +40 -0
  1603. package/templates/internal/rules//345/267/245/345/205/267/350/260/203/347/224/250/350/247/204/345/210/231.md +6 -15
  1604. package/templates/internal/rules//346/204/217/345/233/276/350/267/257/347/224/261/350/247/204/345/210/231.md +10 -17
  1605. package/templates/internal/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 +9 -18
  1606. package/templates/internal/rules//346/211/251/345/261/225/347/224/237/345/221/275/345/221/250/346/234/237/350/247/204/345/210/231.md +5 -13
  1607. package/templates/internal/rules//346/212/200/346/234/257/345/206/263/347/255/226/344/270/273/346/235/203/350/247/204/345/210/231.md +5 -15
  1608. package/templates/internal/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 +10 -27
  1609. package/templates/internal/rules//346/226/275/345/267/245/346/214/207/344/273/244/345/245/221/347/272/246/350/247/204/345/210/231.md +5 -14
  1610. package/templates/internal/rules//346/227/245/345/277/227/346/262/273/347/220/206/350/247/204/345/210/231.md +5 -18
  1611. package/templates/internal/rules//346/234/272/345/210/266/350/207/252/346/262/273/347/220/206/350/247/204/345/210/231.md +5 -18
  1612. package/templates/internal/rules//346/236/266/346/236/204/345/206/263/347/255/226/347/240/224/350/256/250/350/247/204/345/210/231.md +10 -15
  1613. package/templates/internal/rules//346/240/207/345/207/206/350/265/204/344/272/247/350/246/206/347/233/226/350/247/204/345/210/231.md +8 -21
  1614. package/templates/internal/rules//346/240/270/345/277/203/344/275/223/351/252/214/345/216/237/345/210/231.md +6 -18
  1615. package/templates/internal/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 +7 -16
  1616. package/templates/internal/rules//346/250/241/347/211/210Frontmatter/350/247/204/350/214/203.md +301 -0
  1617. package/templates/internal/rules//346/250/241/347/211/210/350/265/204/344/272/247/345/217/257/350/247/201/346/200/247/350/247/204/345/210/231.md +57 -0
  1618. package/templates/internal/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 +9 -18
  1619. package/templates/internal/rules//346/274/224/350/277/233/345/233/236/345/275/222/351/227/250/346/216/247/350/247/204/345/210/231.md +11 -24
  1620. package/templates/internal/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 +14 -33
  1621. package/templates/internal/rules//347/237/245/350/257/206/346/262/273/347/220/206/350/247/204/345/210/231.md +6 -20
  1622. package/templates/internal/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 +8 -17
  1623. package/templates/internal/rules//347/237/245/350/257/206/350/265/204/344/272/247/346/262/273/347/220/206/350/247/204/345/210/231.md +7 -23
  1624. package/templates/internal/rules//347/254/254/344/270/200/346/200/247/345/216/237/347/220/206/346/216/250/347/220/206/350/247/204/345/210/231.md +8 -18
  1625. package/templates/internal/rules//347/273/206/350/212/202/347/272/252/345/276/213/350/247/204/345/210/231.md +5 -15
  1626. package/templates/internal/rules//350/204/221/346/232/264/344/270/216/346/226/271/346/241/210/346/216/242/347/264/242/350/247/204/345/210/231.md +5 -15
  1627. package/templates/internal/rules//350/256/241/345/210/222/345/211/215/347/275/256/351/227/250/350/247/204/345/210/231.md +7 -25
  1628. package/templates/internal/rules//350/256/276/350/256/241/344/272/247/347/211/251/345/214/205/350/247/204/345/210/231.md +12 -17
  1629. package/templates/internal/rules//350/257/201/346/215/256/351/251/261/345/212/250/344/270/216/345/217/215/345/271/273/350/247/211/350/247/204/345/210/231.md +5 -17
  1630. package/templates/internal/rules//350/267/250/345/271/263/345/217/260/350/267/257/345/276/204/345/256/211/345/205/250/350/247/204/345/210/231.md +5 -13
  1631. package/templates/internal/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 +7 -16
  1632. package/templates/internal/rules//351/200/232/347/224/250/345/206/263/347/255/226/347/240/224/350/256/250/350/247/204/345/210/231.md +5 -23
  1633. 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 +41 -30
  1634. package/templates/internal/rules//351/205/215/347/275/256/350/220/275/347/233/230/350/276/271/347/225/214/350/247/204/345/210/231.md +11 -21
  1635. package/templates/internal/rules//351/230/262/345/255/244/345/262/233/345/256/236/347/216/260/350/247/204/345/210/231.md +6 -15
  1636. package/templates/internal/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 +34 -40
  1637. package/templates/internal/rules//351/252/214/346/224/266/346/250/241/347/211/210/350/276/223/345/207/272/345/245/221/347/272/246/350/247/204/345/210/231.md +80 -0
  1638. package/templates/internal/rules//351/252/214/350/257/201/345/245/221/347/272/246/350/247/204/345/210/231.md +6 -15
  1639. package/templates/patterns/API/350/256/276/350/256/241/350/247/204/350/214/203.md +5 -20
  1640. package/templates/patterns/Docker/351/203/250/347/275/262/350/247/204/350/214/203.md +5 -18
  1641. package/templates/patterns/Git/346/223/215/344/275/234/350/247/204/350/214/203.md +5 -22
  1642. package/templates/patterns/N/345/212/2401/346/237/245/350/257/242/350/247/204/350/214/203.md +5 -21
  1643. package/templates/patterns/React/345/210/227/350/241/250/350/241/250/346/240/274/350/247/204/350/214/203.md +6 -21
  1644. package/templates/patterns/React/346/216/245/345/217/243/351/233/206/346/210/220/350/247/204/350/214/203.md +5 -21
  1645. package/templates/patterns/React/347/212/266/346/200/201/347/256/241/347/220/206/350/247/204/350/214/203.md +5 -21
  1646. package/templates/patterns/React/347/273/204/344/273/266/350/247/204/350/214/203.md +5 -20
  1647. package/templates/patterns/React/350/241/250/345/215/225/350/247/204/350/214/203.md +5 -20
  1648. package/templates/patterns/React/350/267/257/347/224/261/350/247/204/350/214/203.md +5 -21
  1649. package/templates/patterns/SOLID/350/256/276/350/256/241/350/247/204/350/214/203.md +4 -13
  1650. package/templates/patterns/Schema/345/205/274/345/256/271/350/247/204/350/214/203.md +5 -20
  1651. package/templates/patterns/Vue/347/212/266/346/200/201/347/256/241/347/220/206/350/247/204/350/214/203.md +5 -19
  1652. package/templates/patterns/Vue/347/273/204/344/273/266/350/247/204/350/214/203.md +5 -23
  1653. package/templates/patterns/Vue/350/267/257/347/224/261/350/247/204/350/214/203.md +5 -18
  1654. package/templates/patterns//344/272/213/344/273/266/351/251/261/345/212/250/350/247/204/350/214/203.md +5 -22
  1655. package/templates/patterns//344/272/213/345/212/241/346/250/241/345/274/217/350/247/204/350/214/203.md +5 -21
  1656. package/templates/patterns//344/274/230/351/233/205/345/201/234/346/234/272/350/247/204/350/214/203.md +5 -21
  1657. package/templates/patterns//345/205/250/346/240/210/346/265/201/347/250/213/344/277/256/345/244/215.md +5 -19
  1658. package/templates/patterns//345/210/206/351/241/265/346/237/245/350/257/242/350/247/204/350/214/203.md +5 -24
  1659. package/templates/patterns//345/211/215/347/253/257/346/200/247/350/203/275/350/247/204/350/214/203.md +5 -22
  1660. package/templates/patterns//345/220/216/347/253/257/345/256/236/347/216/260/345/267/245/347/250/213/350/247/204/350/214/203.md +4 -13
  1661. package/templates/patterns//345/221/275/345/220/215/350/247/204/350/214/203.md +5 -19
  1662. package/templates/patterns//345/233/275/351/231/205/345/214/226/350/247/204/350/214/203.md +6 -22
  1663. package/templates/patterns//345/242/236/345/210/240/346/224/271/346/237/245/350/247/204/350/214/203.md +5 -21
  1664. package/templates/patterns//345/244/226/351/203/250/344/276/235/350/265/226/350/247/204/350/214/203.md +5 -21
  1665. package/templates/patterns//345/245/221/347/272/246/345/205/274/345/256/271/350/247/204/350/214/203.md +5 -18
  1666. package/templates/patterns//345/256/232/346/227/266/344/273/273/345/212/241/350/247/204/350/214/203.md +5 -22
  1667. package/templates/patterns//345/256/236/346/227/266/346/216/250/351/200/201/350/247/204/350/214/203.md +5 -20
  1668. package/templates/patterns//345/267/245/347/250/213/347/272/252/345/276/213.md +5 -19
  1669. package/templates/patterns//345/271/266/345/217/221/346/216/247/345/210/266/350/247/204/350/214/203.md +5 -24
  1670. package/templates/patterns//345/274/202/346/255/245/345/257/274/345/207/272/350/247/204/350/214/203.md +5 -21
  1671. package/templates/patterns//346/216/245/345/217/243/345/245/221/347/272/246/350/247/204/350/214/203.md +5 -19
  1672. package/templates/patterns//346/220/234/347/264/242/346/250/241/345/274/217/350/247/204/350/214/203.md +5 -22
  1673. package/templates/patterns//346/225/260/346/215/256/351/232/220/347/247/201/350/247/204/350/214/203.md +6 -24
  1674. package/templates/patterns//346/226/207/344/273/266/344/270/212/344/274/240/350/247/204/350/214/203.md +5 -20
  1675. package/templates/patterns//346/227/240/351/232/234/347/242/215/350/247/204/350/214/203.md +5 -20
  1676. package/templates/patterns//346/227/245/345/277/227/350/247/204/350/214/203.md +5 -21
  1677. package/templates/patterns//346/235/203/351/231/220/350/256/244/350/257/201/350/247/204/350/214/203.md +5 -24
  1678. package/templates/patterns//346/236/266/346/236/204/347/272/242/347/272/277.md +5 -18
  1679. package/templates/patterns//346/265/213/350/257/225/350/264/250/351/207/217/350/247/204/350/214/203.md +5 -19
  1680. package/templates/patterns//347/206/224/346/226/255/351/231/215/347/272/247/350/247/204/350/214/203.md +5 -22
  1681. package/templates/patterns//347/212/266/346/200/201/346/265/201/350/275/254/350/247/204/350/214/203.md +5 -19
  1682. package/templates/patterns//347/272/246/346/235/237/345/256/236/347/216/260/350/247/204/350/214/203.md +5 -21
  1683. package/templates/patterns//347/274/223/345/255/230/347/255/226/347/225/245/350/247/204/350/214/203.md +5 -21
  1684. package/templates/patterns//347/274/226/347/240/201/350/264/250/351/207/217/350/247/204/350/214/203.md +5 -19
  1685. package/templates/patterns//347/274/272/351/231/267/347/256/241/347/220/206/350/247/204/350/214/203.md +6 -19
  1686. package/templates/patterns//350/260/203/350/257/225/346/226/271/346/263/225/350/256/272.md +5 -19
  1687. package/templates/patterns//350/276/223/345/205/245/346/240/241/351/252/214/350/247/204/350/214/203.md +5 -21
  1688. package/templates/patterns//351/224/231/350/257/257/345/244/204/347/220/206/350/247/204/350/214/203.md +5 -21
  1689. package/templates/patterns//351/224/231/350/257/257/350/276/271/347/225/214/350/247/204/350/214/203.md +5 -23
  1690. package/templates/patterns//351/242/206/345/237/237/351/251/261/345/212/250/350/256/276/350/256/241/350/247/204/350/214/203.md +5 -20
  1691. package/templates/procedures/OOD/350/256/276/350/256/241/345/267/245/344/275/234/346/265/201.md +46 -25
  1692. package/templates/procedures/Schema/345/217/230/346/233/264/346/265/201/346/260/264/347/272/277.md +17 -25
  1693. package/templates/procedures//344/270/215/347/241/256/345/256/232/346/227/266/345/244/264/350/204/221/351/243/216/346/232/264/346/265/201/347/250/213.md +92 -0
  1694. package/templates/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 +14 -18
  1695. package/templates/procedures//344/273/243/347/240/201/351/227/250/347/246/201/346/265/201/347/250/213.md +7 -16
  1696. package/templates/procedures//344/273/273/345/212/241/346/213/206/350/247/243/346/265/201/347/250/213.md +14 -16
  1697. package/templates/procedures//344/273/273/345/212/241/350/247/204/345/210/222/345/267/245/344/275/234/346/265/201.md +83 -0
  1698. package/templates/procedures//344/274/232/350/257/235/346/201/242/345/244/215/346/265/201/347/250/213.md +74 -0
  1699. package/templates/procedures//345/205/250/347/224/237/345/221/275/345/221/250/346/234/237/345/267/245/344/275/234/346/265/201/345/257/274/350/210/252.md +14 -26
  1700. package/templates/procedures//345/212/237/350/203/275/345/274/200/345/217/221/346/265/201/347/250/213.md +15 -23
  1701. package/templates/procedures//345/220/216/347/253/257/346/216/245/345/217/243/345/256/236/347/216/260/345/267/245/344/275/234/346/265/201.md +5 -15
  1702. package/templates/procedures//345/221/275/344/273/244/346/211/247/350/241/214/346/265/201/347/250/213.md +9 -17
  1703. package/templates/procedures//345/221/275/344/273/244/350/267/257/347/224/261/346/265/201/347/250/213.md +32 -0
  1704. package/templates/procedures//345/256/211/345/205/250/345/212/240/345/233/272/346/265/201/346/260/264/347/272/277.md +17 -25
  1705. package/templates/procedures//345/267/245/345/205/267/350/260/203/347/224/250/346/265/201/347/250/213.md +9 -17
  1706. package/templates/procedures//346/200/247/350/203/275/346/265/201/346/260/264/347/272/277.md +16 -24
  1707. package/templates/procedures//346/204/217/345/233/276/350/267/257/347/224/261/346/265/201/347/250/213.md +11 -18
  1708. package/templates/procedures//346/216/245/345/217/243/351/233/206/346/210/220/346/265/201/346/260/264/347/272/277.md +25 -27
  1709. package/templates/procedures//346/225/260/346/215/256/345/272/223/350/277/201/347/247/273/346/265/201/347/250/213.md +8 -16
  1710. package/templates/procedures//346/234/254/345/234/260/346/265/217/350/247/210/345/231/250/351/252/214/346/224/266/345/267/245/344/275/234/346/265/201.md +7 -16
  1711. package/templates/procedures//346/236/266/346/236/204/345/206/263/347/255/226/347/240/224/350/256/250/345/267/245/344/275/234/346/265/201.md +11 -12
  1712. package/templates/procedures//346/236/266/346/236/204/350/256/276/350/256/241/345/267/245/344/275/234/346/265/201.md +28 -17
  1713. package/templates/procedures//346/246/202/345/277/265/351/252/214/350/257/201/346/265/201/346/260/264/347/272/277.md +17 -23
  1714. package/templates/procedures//346/265/213/350/257/225/344/274/230/345/205/210/347/274/226/347/240/201/345/267/245/344/275/234/346/265/201.md +22 -17
  1715. package/templates/procedures//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 +16 -25
  1716. package/templates/procedures//347/216/260/346/234/211/347/263/273/347/273/237/345/267/256/350/267/235/345/210/206/346/236/220/345/267/245/344/275/234/346/265/201.md +35 -16
  1717. package/templates/procedures//347/237/245/350/257/206/347/273/264/346/212/244/346/265/201/346/260/264/347/272/277.md +14 -23
  1718. package/templates/procedures//347/264/247/346/200/245/344/277/256/345/244/215/346/265/201/346/260/264/347/272/277.md +19 -27
  1719. package/templates/procedures//347/274/226/347/240/201/345/211/215/346/276/204/346/270/205/346/265/201/347/250/213.md +16 -19
  1720. package/templates/procedures//347/274/226/347/240/201/351/230/266/346/256/265/346/211/247/350/241/214/345/267/245/344/275/234/346/265/201.md +101 -0
  1721. package/templates/procedures//350/207/252/344/270/273/351/200/211/345/236/213/346/265/201/347/250/213.md +9 -17
  1722. package/templates/procedures//350/256/276/350/256/241/344/272/247/347/211/251/347/224/237/346/210/220/344/270/216/345/244/215/351/252/214/345/267/245/344/275/234/346/265/201.md +34 -17
  1723. package/templates/procedures//350/256/276/350/256/241/345/256/241/350/256/241/346/265/201/347/250/213.md +180 -0
  1724. package/templates/procedures//350/257/246/347/273/206/350/256/276/350/256/241/346/265/201/347/250/213.md +97 -31
  1725. package/templates/procedures//350/260/203/350/257/225/346/216/222/346/237/245/346/265/201/347/250/213.md +36 -16
  1726. package/templates/procedures//350/277/201/347/247/273/346/265/201/346/260/264/347/272/277.md +16 -24
  1727. package/templates/procedures//351/203/250/347/275/262/345/217/221/345/270/203/346/265/201/347/250/213.md +39 -16
  1728. package/templates/procedures//351/207/215/346/236/204/346/265/201/346/260/264/347/272/277.md +16 -24
  1729. package/templates/procedures//351/233/206/346/210/220/351/252/214/350/257/201/346/265/201/347/250/213.md +13 -16
  1730. package/templates/procedures//351/234/200/346/261/202/346/276/204/346/270/205/346/265/201/347/250/213.md +28 -24
  1731. package/templates/procedures//351/252/214/346/224/266/346/265/213/350/257/225/350/247/204/345/210/222.md +13 -17
  1732. package/templates/rules/existing-system//345/205/274/345/256/271/346/200/247/346/243/200/346/237/245/350/247/204/345/210/231.md +71 -27
  1733. package/templates/rules/existing-system//350/200/201/347/263/273/347/273/237/345/210/207/347/211/207/350/247/204/345/210/222/350/247/204/345/210/231.md +35 -0
  1734. package/templates/rules/existing-system//350/200/246/345/220/210/346/243/200/346/265/213/350/247/204/345/210/231.md +63 -25
  1735. package/templates/rules/existing-system//350/257/225/350/277/220/350/241/214/347/206/224/346/226/255/350/247/204/345/210/231.md +54 -28
  1736. package/templates/rules/existing-system//351/230/262/345/276/241/346/200/247/347/274/226/347/240/201/350/247/204/345/210/231.md +75 -29
  1737. package/templates/rules/existing-system//351/233/267/345/214/272/345/217/215/346/250/241/345/274/217/346/270/205/345/215/225.md +115 -28
  1738. package/templates/rules/new-system//350/201/224/350/260/203/350/256/276/350/256/241/347/274/272/351/231/267/345/210/244/345/256/232/350/247/204/345/210/231.md +44 -22
  1739. package/templates/rules/shared/SOLID/344/273/243/347/240/201/345/256/241/346/237/245/350/247/204/345/210/231.md +51 -24
  1740. package/templates/rules/shared//344/270/200/350/207/264/346/200/247/346/240/241/351/252/214/350/247/204/345/210/231.md +88 -13
  1741. package/templates/rules/shared//344/270/212/346/270/270/344/272/244/345/217/211/351/252/214/350/257/201/350/247/204/345/210/231.md +56 -0
  1742. package/templates/rules/shared//344/270/212/346/270/270/350/256/276/350/256/241/344/272/244/345/217/211/351/252/214/350/257/201/345/256/241/346/237/245/350/247/204/345/210/231.md +67 -0
  1743. package/templates/rules/shared//344/272/244/344/273/230/345/256/214/345/244/207/346/200/247/345/256/241/346/237/245/350/247/204/345/210/231.md +41 -22
  1744. package/templates/rules/shared//344/273/243/347/240/201/345/217/257/347/273/264/346/212/244/346/200/247/344/270/216/345/217/257/350/247/202/346/265/213/346/200/247/345/256/241/346/237/245.md +48 -63
  1745. package/templates/rules/shared//345/206/263/347/255/226/345/256/214/346/225/264/346/200/247/345/256/241/346/237/245/350/247/204/345/210/231.md +63 -0
  1746. package/templates/rules/shared//345/210/207/347/211/207/346/211/247/350/241/214/347/272/252/345/276/213/350/247/204/345/210/231.md +96 -0
  1747. package/templates/rules/shared//345/210/207/347/211/207/350/247/204/345/210/222/350/247/204/345/210/231.md +64 -0
  1748. package/templates/rules/shared//345/216/237/345/236/213/346/272/220/347/240/201/346/217/220/345/217/226/350/247/204/345/210/231.md +67 -0
  1749. package/templates/rules/shared//345/216/237/345/236/213/350/257/264/346/230/216/345/256/241/346/237/245/350/247/204/345/210/231.md +73 -0
  1750. package/templates/rules/shared//345/217/221/345/270/203/345/220/216/345/256/241/346/237/245/350/247/204/345/210/231.md +65 -0
  1751. package/templates/rules/shared//345/220/216/347/253/257/345/256/236/347/216/260/345/267/245/347/250/213/345/256/241/346/237/245/350/247/204/345/210/231.md +47 -22
  1752. package/templates/rules/shared//345/256/211/345/205/250/345/256/241/346/237/245/350/247/204/345/210/231.md +55 -23
  1753. package/templates/rules/shared//345/271/266/345/217/221/345/256/241/346/237/245/350/247/204/345/210/231.md +41 -16
  1754. package/templates/rules/shared//346/200/247/350/203/275/345/256/241/346/237/245/350/247/204/345/210/231.md +34 -16
  1755. package/templates/rules/shared//346/216/245/345/217/243/345/245/221/347/272/246/345/256/241/346/237/245/350/247/204/345/210/231.md +42 -17
  1756. package/templates/rules/shared//346/236/266/346/236/204/345/256/241/346/237/245/350/247/204/345/210/231.md +33 -17
  1757. package/templates/rules/shared//346/236/266/346/236/204/350/256/276/350/256/241/345/256/241/346/237/245/350/247/204/345/210/231.md +102 -0
  1758. package/templates/rules/shared//346/236/266/346/236/204/350/256/276/350/256/241/350/247/204/345/210/231.md +64 -0
  1759. package/templates/rules/shared//347/213/254/347/253/213/345/256/241/346/237/245/350/247/204/345/210/231.md +33 -0
  1760. package/templates/rules/shared//347/254/254/344/270/200/346/200/247/345/216/237/347/220/206/346/216/250/347/220/206/350/247/204/345/210/231.md +171 -0
  1761. package/templates/rules/shared//347/274/226/347/240/201/345/260/261/347/273/252/345/256/241/346/237/245/350/247/204/345/210/231.md +52 -0
  1762. package/templates/rules/shared//350/201/224/350/260/203/351/252/214/350/257/201/346/270/205/345/215/225.md +66 -19
  1763. package/templates/rules/shared//350/246/206/347/233/226/347/216/207/346/240/207/345/207/206.md +7 -6
  1764. package/templates/rules/shared//350/257/246/347/273/206/350/256/276/350/256/241/345/256/241/346/237/245/350/247/204/345/210/231.md +82 -0
  1765. package/templates/rules/shared//350/264/250/351/207/217/345/256/241/346/237/245/350/247/204/345/210/231.md +19 -18
  1766. package/templates/rules/shared//350/277/275/350/270/252/347/237/251/351/230/265ID/350/247/204/345/210/231.md +48 -0
  1767. package/templates/rules/shared//350/277/275/350/270/252/347/237/251/351/230/265/345/256/241/346/237/245/350/247/204/345/210/231.md +51 -0
  1768. package/templates/rules/shared//351/234/200/346/261/202/350/264/250/351/207/217/345/256/241/346/237/245/350/247/204/345/210/231.md +80 -0
  1769. package/templates/rules/shared//351/252/214/346/224/266/346/240/207/345/207/206/345/256/241/346/237/245/350/247/204/345/210/231.md +56 -0
  1770. package/templates/scaffolds/react/ErrorBoundary.tsx.hbs +49 -0
  1771. package/templates/scaffolds/react/Layout.tsx.hbs +20 -0
  1772. package/templates/scaffolds/spring-boot/ControllerTest.java.hbs +36 -0
  1773. package/templates/scaffolds/spring-boot/Mapper.xml.hbs +29 -0
  1774. package/templates//346/250/241/347/211/210/350/264/241/347/214/256/346/214/207/345/215/227.md +147 -0
  1775. package/dist/adapters/claude_code/pre_prompt_contract.d.ts +0 -9
  1776. package/dist/adapters/claude_code/pre_prompt_contract.d.ts.map +0 -1
  1777. package/dist/adapters/claude_code/pre_prompt_contract.js +0 -8
  1778. package/dist/adapters/claude_code/pre_prompt_contract.js.map +0 -1
  1779. package/dist/adapters/claude_code/server.d.ts +0 -26
  1780. package/dist/adapters/claude_code/server.d.ts.map +0 -1
  1781. package/dist/adapters/claude_code/server.js +0 -59
  1782. package/dist/adapters/claude_code/server.js.map +0 -1
  1783. package/dist/engine/architecture_decision_workshop.d.ts +0 -58
  1784. package/dist/engine/architecture_decision_workshop.d.ts.map +0 -1
  1785. package/dist/engine/architecture_decision_workshop.js +0 -118
  1786. package/dist/engine/architecture_decision_workshop.js.map +0 -1
  1787. package/dist/engine/architecture_design_contract.d.ts.map +0 -1
  1788. package/dist/engine/architecture_design_contract.js.map +0 -1
  1789. package/dist/engine/artifact_contract_registry.d.ts +0 -138
  1790. package/dist/engine/artifact_contract_registry.d.ts.map +0 -1
  1791. package/dist/engine/artifact_contract_registry.js +0 -420
  1792. package/dist/engine/artifact_contract_registry.js.map +0 -1
  1793. package/dist/engine/asset_manifest.d.ts +0 -67
  1794. package/dist/engine/asset_manifest.d.ts.map +0 -1
  1795. package/dist/engine/asset_manifest.js +0 -299
  1796. package/dist/engine/asset_manifest.js.map +0 -1
  1797. package/dist/engine/audit_pool.d.ts.map +0 -1
  1798. package/dist/engine/audit_pool.js +0 -120
  1799. package/dist/engine/audit_pool.js.map +0 -1
  1800. package/dist/engine/audit_sampler.d.ts +0 -20
  1801. package/dist/engine/audit_sampler.d.ts.map +0 -1
  1802. package/dist/engine/audit_sampler.js +0 -29
  1803. package/dist/engine/audit_sampler.js.map +0 -1
  1804. package/dist/engine/audit_verifier.d.ts +0 -52
  1805. package/dist/engine/audit_verifier.d.ts.map +0 -1
  1806. package/dist/engine/audit_verifier.js +0 -101
  1807. package/dist/engine/audit_verifier.js.map +0 -1
  1808. package/dist/engine/backend_implementation_contract.d.ts.map +0 -1
  1809. package/dist/engine/backend_implementation_contract.js +0 -164
  1810. package/dist/engine/backend_implementation_contract.js.map +0 -1
  1811. package/dist/engine/brainstorm_contract.d.ts +0 -48
  1812. package/dist/engine/brainstorm_contract.d.ts.map +0 -1
  1813. package/dist/engine/brainstorm_contract.js +0 -146
  1814. package/dist/engine/brainstorm_contract.js.map +0 -1
  1815. package/dist/engine/capability_action_advisor.d.ts.map +0 -1
  1816. package/dist/engine/capability_action_advisor.js +0 -158
  1817. package/dist/engine/capability_action_advisor.js.map +0 -1
  1818. package/dist/engine/capability_registry.d.ts.map +0 -1
  1819. package/dist/engine/capability_registry.js +0 -731
  1820. package/dist/engine/capability_registry.js.map +0 -1
  1821. package/dist/engine/capability_state_store.d.ts +0 -113
  1822. package/dist/engine/capability_state_store.d.ts.map +0 -1
  1823. package/dist/engine/capability_state_store.js +0 -172
  1824. package/dist/engine/capability_state_store.js.map +0 -1
  1825. package/dist/engine/chinese_semantic_priority.d.ts.map +0 -1
  1826. package/dist/engine/chinese_semantic_priority.js.map +0 -1
  1827. package/dist/engine/classifier.d.ts +0 -24
  1828. package/dist/engine/classifier.d.ts.map +0 -1
  1829. package/dist/engine/classifier.js +0 -209
  1830. package/dist/engine/classifier.js.map +0 -1
  1831. package/dist/engine/code_maintainability_observability_contract.d.ts.map +0 -1
  1832. package/dist/engine/code_maintainability_observability_contract.js +0 -711
  1833. package/dist/engine/code_maintainability_observability_contract.js.map +0 -1
  1834. package/dist/engine/code_reviewer.d.ts +0 -71
  1835. package/dist/engine/code_reviewer.d.ts.map +0 -1
  1836. package/dist/engine/code_reviewer.js +0 -643
  1837. package/dist/engine/code_reviewer.js.map +0 -1
  1838. package/dist/engine/coding_readiness_gate.d.ts +0 -46
  1839. package/dist/engine/coding_readiness_gate.d.ts.map +0 -1
  1840. package/dist/engine/coding_readiness_gate.js +0 -175
  1841. package/dist/engine/coding_readiness_gate.js.map +0 -1
  1842. package/dist/engine/command_execution_contract.d.ts +0 -226
  1843. package/dist/engine/command_execution_contract.d.ts.map +0 -1
  1844. package/dist/engine/command_execution_contract.js +0 -572
  1845. package/dist/engine/command_execution_contract.js.map +0 -1
  1846. package/dist/engine/confidence_scorer.d.ts +0 -32
  1847. package/dist/engine/confidence_scorer.d.ts.map +0 -1
  1848. package/dist/engine/confidence_scorer.js +0 -45
  1849. package/dist/engine/confidence_scorer.js.map +0 -1
  1850. package/dist/engine/config_auto_repair.d.ts +0 -29
  1851. package/dist/engine/config_auto_repair.d.ts.map +0 -1
  1852. package/dist/engine/config_auto_repair.js +0 -254
  1853. package/dist/engine/config_auto_repair.js.map +0 -1
  1854. package/dist/engine/config_precedence_contract.d.ts +0 -269
  1855. package/dist/engine/config_precedence_contract.d.ts.map +0 -1
  1856. package/dist/engine/config_precedence_contract.js +0 -949
  1857. package/dist/engine/config_precedence_contract.js.map +0 -1
  1858. package/dist/engine/config_write_boundary.d.ts.map +0 -1
  1859. package/dist/engine/config_write_boundary.js +0 -69
  1860. package/dist/engine/config_write_boundary.js.map +0 -1
  1861. package/dist/engine/conflict_gate.d.ts.map +0 -1
  1862. package/dist/engine/conflict_gate.js +0 -92
  1863. package/dist/engine/conflict_gate.js.map +0 -1
  1864. package/dist/engine/consumable_asset_registry.d.ts +0 -50
  1865. package/dist/engine/consumable_asset_registry.d.ts.map +0 -1
  1866. package/dist/engine/consumable_asset_registry.js +0 -1446
  1867. package/dist/engine/consumable_asset_registry.js.map +0 -1
  1868. package/dist/engine/consumption_trace_store.d.ts +0 -92
  1869. package/dist/engine/consumption_trace_store.d.ts.map +0 -1
  1870. package/dist/engine/consumption_trace_store.js +0 -134
  1871. package/dist/engine/consumption_trace_store.js.map +0 -1
  1872. package/dist/engine/contract_guard.d.ts +0 -37
  1873. package/dist/engine/contract_guard.d.ts.map +0 -1
  1874. package/dist/engine/contract_guard.js +0 -590
  1875. package/dist/engine/contract_guard.js.map +0 -1
  1876. package/dist/engine/contract_registry.d.ts +0 -113
  1877. package/dist/engine/contract_registry.d.ts.map +0 -1
  1878. package/dist/engine/contract_registry.js +0 -1630
  1879. package/dist/engine/contract_registry.js.map +0 -1
  1880. package/dist/engine/contract_state_store.d.ts +0 -67
  1881. package/dist/engine/contract_state_store.d.ts.map +0 -1
  1882. package/dist/engine/contract_state_store.js +0 -167
  1883. package/dist/engine/contract_state_store.js.map +0 -1
  1884. package/dist/engine/control_plane_contract.d.ts.map +0 -1
  1885. package/dist/engine/control_plane_contract.js +0 -251
  1886. package/dist/engine/control_plane_contract.js.map +0 -1
  1887. package/dist/engine/core_engineering_principles.d.ts +0 -155
  1888. package/dist/engine/core_engineering_principles.d.ts.map +0 -1
  1889. package/dist/engine/core_engineering_principles.js +0 -417
  1890. package/dist/engine/core_engineering_principles.js.map +0 -1
  1891. package/dist/engine/core_experience_principle.d.ts.map +0 -1
  1892. package/dist/engine/core_experience_principle.js +0 -349
  1893. package/dist/engine/core_experience_principle.js.map +0 -1
  1894. package/dist/engine/debt_reporter.d.ts +0 -9
  1895. package/dist/engine/debt_reporter.d.ts.map +0 -1
  1896. package/dist/engine/debt_reporter.js +0 -94
  1897. package/dist/engine/debt_reporter.js.map +0 -1
  1898. package/dist/engine/debt_tracker.d.ts +0 -72
  1899. package/dist/engine/debt_tracker.d.ts.map +0 -1
  1900. package/dist/engine/debt_tracker.js +0 -224
  1901. package/dist/engine/debt_tracker.js.map +0 -1
  1902. package/dist/engine/debug_log.d.ts +0 -5
  1903. package/dist/engine/debug_log.d.ts.map +0 -1
  1904. package/dist/engine/debug_log.js +0 -5
  1905. package/dist/engine/debug_log.js.map +0 -1
  1906. package/dist/engine/debugger.d.ts +0 -12
  1907. package/dist/engine/debugger.d.ts.map +0 -1
  1908. package/dist/engine/debugger.js +0 -415
  1909. package/dist/engine/debugger.js.map +0 -1
  1910. package/dist/engine/decision_contract.d.ts +0 -38
  1911. package/dist/engine/decision_contract.d.ts.map +0 -1
  1912. package/dist/engine/decision_contract.js +0 -57
  1913. package/dist/engine/decision_contract.js.map +0 -1
  1914. package/dist/engine/decision_workshop.d.ts +0 -168
  1915. package/dist/engine/decision_workshop.d.ts.map +0 -1
  1916. package/dist/engine/decision_workshop.js.map +0 -1
  1917. package/dist/engine/degradation.d.ts.map +0 -1
  1918. package/dist/engine/degradation.js.map +0 -1
  1919. package/dist/engine/delivery.d.ts +0 -49
  1920. package/dist/engine/delivery.d.ts.map +0 -1
  1921. package/dist/engine/delivery.js +0 -373
  1922. package/dist/engine/delivery.js.map +0 -1
  1923. package/dist/engine/delivery_readiness.d.ts +0 -70
  1924. package/dist/engine/delivery_readiness.d.ts.map +0 -1
  1925. package/dist/engine/delivery_readiness.js +0 -198
  1926. package/dist/engine/delivery_readiness.js.map +0 -1
  1927. package/dist/engine/design_artifact_pack.d.ts +0 -50
  1928. package/dist/engine/design_artifact_pack.d.ts.map +0 -1
  1929. package/dist/engine/design_artifact_pack.js.map +0 -1
  1930. package/dist/engine/design_lifecycle_contract.d.ts +0 -60
  1931. package/dist/engine/design_lifecycle_contract.d.ts.map +0 -1
  1932. package/dist/engine/design_lifecycle_contract.js +0 -499
  1933. package/dist/engine/design_lifecycle_contract.js.map +0 -1
  1934. package/dist/engine/detail_discipline.d.ts.map +0 -1
  1935. package/dist/engine/detail_discipline.js.map +0 -1
  1936. package/dist/engine/developer_sovereignty.d.ts +0 -62
  1937. package/dist/engine/developer_sovereignty.d.ts.map +0 -1
  1938. package/dist/engine/developer_sovereignty.js +0 -141
  1939. package/dist/engine/developer_sovereignty.js.map +0 -1
  1940. package/dist/engine/diagnostic_registry.d.ts.map +0 -1
  1941. package/dist/engine/diagnostic_registry.js +0 -268
  1942. package/dist/engine/diagnostic_registry.js.map +0 -1
  1943. package/dist/engine/diff_ownership.d.ts.map +0 -1
  1944. package/dist/engine/diff_ownership.js +0 -152
  1945. package/dist/engine/diff_ownership.js.map +0 -1
  1946. package/dist/engine/diff_ownership_store.d.ts.map +0 -1
  1947. package/dist/engine/diff_ownership_store.js +0 -291
  1948. package/dist/engine/diff_ownership_store.js.map +0 -1
  1949. package/dist/engine/documentation_governance.d.ts.map +0 -1
  1950. package/dist/engine/documentation_governance.js.map +0 -1
  1951. package/dist/engine/dual_layer_mechanism_registry.d.ts +0 -68
  1952. package/dist/engine/dual_layer_mechanism_registry.d.ts.map +0 -1
  1953. package/dist/engine/dual_layer_mechanism_registry.js +0 -2530
  1954. package/dist/engine/dual_layer_mechanism_registry.js.map +0 -1
  1955. package/dist/engine/enforcement_guard.d.ts +0 -84
  1956. package/dist/engine/enforcement_guard.d.ts.map +0 -1
  1957. package/dist/engine/enforcement_guard.js +0 -320
  1958. package/dist/engine/enforcement_guard.js.map +0 -1
  1959. package/dist/engine/escape_report.d.ts.map +0 -1
  1960. package/dist/engine/escape_report.js +0 -136
  1961. package/dist/engine/escape_report.js.map +0 -1
  1962. package/dist/engine/evidence_grounding_contract.d.ts +0 -137
  1963. package/dist/engine/evidence_grounding_contract.d.ts.map +0 -1
  1964. package/dist/engine/evidence_grounding_contract.js +0 -410
  1965. package/dist/engine/evidence_grounding_contract.js.map +0 -1
  1966. package/dist/engine/evolution_regression_gate.d.ts +0 -42
  1967. package/dist/engine/evolution_regression_gate.d.ts.map +0 -1
  1968. package/dist/engine/evolution_regression_gate.js +0 -159
  1969. package/dist/engine/evolution_regression_gate.js.map +0 -1
  1970. package/dist/engine/evolver.d.ts +0 -78
  1971. package/dist/engine/evolver.d.ts.map +0 -1
  1972. package/dist/engine/evolver.js +0 -377
  1973. package/dist/engine/evolver.js.map +0 -1
  1974. package/dist/engine/existing_system_analysis.d.ts.map +0 -1
  1975. package/dist/engine/existing_system_analysis.js.map +0 -1
  1976. package/dist/engine/expand_pipeline.d.ts +0 -121
  1977. package/dist/engine/expand_pipeline.d.ts.map +0 -1
  1978. package/dist/engine/expand_pipeline.js +0 -141
  1979. package/dist/engine/expand_pipeline.js.map +0 -1
  1980. package/dist/engine/explicit_asset_registry.d.ts +0 -30
  1981. package/dist/engine/explicit_asset_registry.d.ts.map +0 -1
  1982. package/dist/engine/explicit_asset_registry.js +0 -4235
  1983. package/dist/engine/explicit_asset_registry.js.map +0 -1
  1984. package/dist/engine/extension_contract.d.ts +0 -50
  1985. package/dist/engine/extension_contract.d.ts.map +0 -1
  1986. package/dist/engine/extension_contract.js +0 -158
  1987. package/dist/engine/extension_contract.js.map +0 -1
  1988. package/dist/engine/extension_platform_contracts.d.ts.map +0 -1
  1989. package/dist/engine/extension_platform_contracts.js.map +0 -1
  1990. package/dist/engine/extension_scenario_registry.d.ts +0 -30
  1991. package/dist/engine/extension_scenario_registry.d.ts.map +0 -1
  1992. package/dist/engine/extension_scenario_registry.js +0 -963
  1993. package/dist/engine/extension_scenario_registry.js.map +0 -1
  1994. package/dist/engine/failure_classifier.d.ts +0 -39
  1995. package/dist/engine/failure_classifier.d.ts.map +0 -1
  1996. package/dist/engine/failure_classifier.js +0 -175
  1997. package/dist/engine/failure_classifier.js.map +0 -1
  1998. package/dist/engine/failure_report.d.ts.map +0 -1
  1999. package/dist/engine/failure_report.js.map +0 -1
  2000. package/dist/engine/first_principles.d.ts +0 -37
  2001. package/dist/engine/first_principles.d.ts.map +0 -1
  2002. package/dist/engine/first_principles.js +0 -141
  2003. package/dist/engine/first_principles.js.map +0 -1
  2004. package/dist/engine/foundation_scenario_registry.d.ts +0 -44
  2005. package/dist/engine/foundation_scenario_registry.d.ts.map +0 -1
  2006. package/dist/engine/foundation_scenario_registry.js +0 -280
  2007. package/dist/engine/foundation_scenario_registry.js.map +0 -1
  2008. package/dist/engine/foundation_scenario_runners.d.ts +0 -54
  2009. package/dist/engine/foundation_scenario_runners.d.ts.map +0 -1
  2010. package/dist/engine/foundation_scenario_runners.js +0 -602
  2011. package/dist/engine/foundation_scenario_runners.js.map +0 -1
  2012. package/dist/engine/gate_checks/checkAdapterLayerConsistency.d.ts +0 -6
  2013. package/dist/engine/gate_checks/checkAdapterLayerConsistency.d.ts.map +0 -1
  2014. package/dist/engine/gate_checks/checkAdapterLayerConsistency.js +0 -117
  2015. package/dist/engine/gate_checks/checkAdapterLayerConsistency.js.map +0 -1
  2016. package/dist/engine/gate_checks/checkCodeObservability.d.ts +0 -6
  2017. package/dist/engine/gate_checks/checkCodeObservability.d.ts.map +0 -1
  2018. package/dist/engine/gate_checks/checkCodeObservability.js +0 -252
  2019. package/dist/engine/gate_checks/checkCodeObservability.js.map +0 -1
  2020. package/dist/engine/gate_checks/checkCodeStyleEnforcement.d.ts +0 -7
  2021. package/dist/engine/gate_checks/checkCodeStyleEnforcement.d.ts.map +0 -1
  2022. package/dist/engine/gate_checks/checkCodeStyleEnforcement.js +0 -73
  2023. package/dist/engine/gate_checks/checkCodeStyleEnforcement.js.map +0 -1
  2024. package/dist/engine/gate_checks/checkControlPlaneTrust.d.ts +0 -9
  2025. package/dist/engine/gate_checks/checkControlPlaneTrust.d.ts.map +0 -1
  2026. package/dist/engine/gate_checks/checkControlPlaneTrust.js +0 -111
  2027. package/dist/engine/gate_checks/checkControlPlaneTrust.js.map +0 -1
  2028. package/dist/engine/gate_checks/checkCriticalProblemConsumption.d.ts.map +0 -1
  2029. package/dist/engine/gate_checks/checkCriticalProblemConsumption.js +0 -476
  2030. package/dist/engine/gate_checks/checkCriticalProblemConsumption.js.map +0 -1
  2031. package/dist/engine/gate_checks/checkDependencyAudit.d.ts.map +0 -1
  2032. package/dist/engine/gate_checks/checkDependencyAudit.js +0 -40
  2033. package/dist/engine/gate_checks/checkDependencyAudit.js.map +0 -1
  2034. package/dist/engine/gate_checks/checkDeprecatedCode.d.ts +0 -6
  2035. package/dist/engine/gate_checks/checkDeprecatedCode.d.ts.map +0 -1
  2036. package/dist/engine/gate_checks/checkDeprecatedCode.js +0 -262
  2037. package/dist/engine/gate_checks/checkDeprecatedCode.js.map +0 -1
  2038. package/dist/engine/gate_checks/checkDiagnosticCentralization.d.ts +0 -9
  2039. package/dist/engine/gate_checks/checkDiagnosticCentralization.d.ts.map +0 -1
  2040. package/dist/engine/gate_checks/checkDiagnosticCentralization.js +0 -24
  2041. package/dist/engine/gate_checks/checkDiagnosticCentralization.js.map +0 -1
  2042. package/dist/engine/gate_checks/checkDistFreshness.d.ts.map +0 -1
  2043. package/dist/engine/gate_checks/checkDistFreshness.js +0 -57
  2044. package/dist/engine/gate_checks/checkDistFreshness.js.map +0 -1
  2045. package/dist/engine/gate_checks/checkDualLayerSemantics.d.ts +0 -6
  2046. package/dist/engine/gate_checks/checkDualLayerSemantics.d.ts.map +0 -1
  2047. package/dist/engine/gate_checks/checkDualLayerSemantics.js +0 -88
  2048. package/dist/engine/gate_checks/checkDualLayerSemantics.js.map +0 -1
  2049. package/dist/engine/gate_checks/checkImplementationContract.d.ts +0 -6
  2050. package/dist/engine/gate_checks/checkImplementationContract.d.ts.map +0 -1
  2051. package/dist/engine/gate_checks/checkImplementationContract.js +0 -90
  2052. package/dist/engine/gate_checks/checkImplementationContract.js.map +0 -1
  2053. package/dist/engine/gate_checks/checkKnowledgeAssetSchemaP0.d.ts +0 -6
  2054. package/dist/engine/gate_checks/checkKnowledgeAssetSchemaP0.d.ts.map +0 -1
  2055. package/dist/engine/gate_checks/checkKnowledgeAssetSchemaP0.js +0 -30
  2056. package/dist/engine/gate_checks/checkKnowledgeAssetSchemaP0.js.map +0 -1
  2057. package/dist/engine/gate_checks/checkKnowledgeLayer.d.ts +0 -6
  2058. package/dist/engine/gate_checks/checkKnowledgeLayer.d.ts.map +0 -1
  2059. package/dist/engine/gate_checks/checkKnowledgeLayer.js +0 -163
  2060. package/dist/engine/gate_checks/checkKnowledgeLayer.js.map +0 -1
  2061. package/dist/engine/gate_checks/checkLongTermMechanization.d.ts +0 -6
  2062. package/dist/engine/gate_checks/checkLongTermMechanization.d.ts.map +0 -1
  2063. package/dist/engine/gate_checks/checkLongTermMechanization.js +0 -55
  2064. package/dist/engine/gate_checks/checkLongTermMechanization.js.map +0 -1
  2065. package/dist/engine/gate_checks/checkMainlineConsumption.d.ts.map +0 -1
  2066. package/dist/engine/gate_checks/checkMainlineConsumption.js +0 -312
  2067. package/dist/engine/gate_checks/checkMainlineConsumption.js.map +0 -1
  2068. package/dist/engine/gate_checks/checkMechanismChain.d.ts +0 -6
  2069. package/dist/engine/gate_checks/checkMechanismChain.d.ts.map +0 -1
  2070. package/dist/engine/gate_checks/checkMechanismChain.js +0 -196
  2071. package/dist/engine/gate_checks/checkMechanismChain.js.map +0 -1
  2072. package/dist/engine/gate_checks/checkMechanismIdentity.d.ts +0 -6
  2073. package/dist/engine/gate_checks/checkMechanismIdentity.d.ts.map +0 -1
  2074. package/dist/engine/gate_checks/checkMechanismIdentity.js +0 -125
  2075. package/dist/engine/gate_checks/checkMechanismIdentity.js.map +0 -1
  2076. package/dist/engine/gate_checks/checkReleaseIssueDesignPath.d.ts +0 -6
  2077. package/dist/engine/gate_checks/checkReleaseIssueDesignPath.d.ts.map +0 -1
  2078. package/dist/engine/gate_checks/checkReleaseIssueDesignPath.js +0 -736
  2079. package/dist/engine/gate_checks/checkReleaseIssueDesignPath.js.map +0 -1
  2080. package/dist/engine/gate_checks/checkStandardAssetCoverage.d.ts +0 -6
  2081. package/dist/engine/gate_checks/checkStandardAssetCoverage.d.ts.map +0 -1
  2082. package/dist/engine/gate_checks/checkStandardAssetCoverage.js +0 -34
  2083. package/dist/engine/gate_checks/checkStandardAssetCoverage.js.map +0 -1
  2084. package/dist/engine/gate_checks/checkStateChainHealth.d.ts +0 -6
  2085. package/dist/engine/gate_checks/checkStateChainHealth.d.ts.map +0 -1
  2086. package/dist/engine/gate_checks/checkStateChainHealth.js +0 -147
  2087. package/dist/engine/gate_checks/checkStateChainHealth.js.map +0 -1
  2088. package/dist/engine/gate_checks/checkTemplateKnowledgeHygiene.d.ts.map +0 -1
  2089. package/dist/engine/gate_checks/checkTemplateKnowledgeHygiene.js +0 -314
  2090. package/dist/engine/gate_checks/checkTemplateKnowledgeHygiene.js.map +0 -1
  2091. package/dist/engine/gate_checks/checkTestPollution.d.ts +0 -6
  2092. package/dist/engine/gate_checks/checkTestPollution.d.ts.map +0 -1
  2093. package/dist/engine/gate_checks/checkTestPollution.js +0 -67
  2094. package/dist/engine/gate_checks/checkTestPollution.js.map +0 -1
  2095. package/dist/engine/gate_checks/checkWorkflowNavigation.d.ts.map +0 -1
  2096. package/dist/engine/gate_checks/checkWorkflowNavigation.js +0 -168
  2097. package/dist/engine/gate_checks/checkWorkflowNavigation.js.map +0 -1
  2098. package/dist/engine/gate_checks/helpers.d.ts.map +0 -1
  2099. package/dist/engine/gate_checks/helpers.js +0 -91
  2100. package/dist/engine/gate_checks/helpers.js.map +0 -1
  2101. package/dist/engine/gate_checks/types.d.ts.map +0 -1
  2102. package/dist/engine/gate_checks/types.js.map +0 -1
  2103. package/dist/engine/git_deps.d.ts +0 -69
  2104. package/dist/engine/git_deps.d.ts.map +0 -1
  2105. package/dist/engine/git_deps.js +0 -9
  2106. package/dist/engine/git_deps.js.map +0 -1
  2107. package/dist/engine/governance_report.d.ts +0 -100
  2108. package/dist/engine/governance_report.d.ts.map +0 -1
  2109. package/dist/engine/governance_report.js +0 -184
  2110. package/dist/engine/governance_report.js.map +0 -1
  2111. package/dist/engine/helpers.d.ts +0 -9
  2112. package/dist/engine/helpers.d.ts.map +0 -1
  2113. package/dist/engine/helpers.js +0 -13
  2114. package/dist/engine/helpers.js.map +0 -1
  2115. package/dist/engine/hook_context_types.d.ts +0 -66
  2116. package/dist/engine/hook_context_types.d.ts.map +0 -1
  2117. package/dist/engine/hook_context_types.js +0 -118
  2118. package/dist/engine/hook_context_types.js.map +0 -1
  2119. package/dist/engine/input_material_contract_registry.d.ts +0 -185
  2120. package/dist/engine/input_material_contract_registry.d.ts.map +0 -1
  2121. package/dist/engine/input_material_contract_registry.js +0 -564
  2122. package/dist/engine/input_material_contract_registry.js.map +0 -1
  2123. package/dist/engine/input_material_extractor.d.ts +0 -47
  2124. package/dist/engine/input_material_extractor.d.ts.map +0 -1
  2125. package/dist/engine/input_material_extractor.js +0 -156
  2126. package/dist/engine/input_material_extractor.js.map +0 -1
  2127. package/dist/engine/instruction_contract.d.ts.map +0 -1
  2128. package/dist/engine/instruction_contract.js +0 -184
  2129. package/dist/engine/instruction_contract.js.map +0 -1
  2130. package/dist/engine/intent_expander.d.ts +0 -68
  2131. package/dist/engine/intent_expander.d.ts.map +0 -1
  2132. package/dist/engine/intent_expander.js +0 -2190
  2133. package/dist/engine/intent_expander.js.map +0 -1
  2134. package/dist/engine/intent_route_scorer.d.ts +0 -45
  2135. package/dist/engine/intent_route_scorer.d.ts.map +0 -1
  2136. package/dist/engine/intent_route_scorer.js +0 -341
  2137. package/dist/engine/intent_route_scorer.js.map +0 -1
  2138. package/dist/engine/intent_router.d.ts +0 -130
  2139. package/dist/engine/intent_router.d.ts.map +0 -1
  2140. package/dist/engine/intent_router.js +0 -628
  2141. package/dist/engine/intent_router.js.map +0 -1
  2142. package/dist/engine/intent_signal_extractor.d.ts +0 -73
  2143. package/dist/engine/intent_signal_extractor.d.ts.map +0 -1
  2144. package/dist/engine/intent_signal_extractor.js +0 -296
  2145. package/dist/engine/intent_signal_extractor.js.map +0 -1
  2146. package/dist/engine/io_controller.d.ts +0 -87
  2147. package/dist/engine/io_controller.d.ts.map +0 -1
  2148. package/dist/engine/io_controller.js +0 -203
  2149. package/dist/engine/io_controller.js.map +0 -1
  2150. package/dist/engine/java_quality_guard.d.ts.map +0 -1
  2151. package/dist/engine/java_quality_guard.js +0 -228
  2152. package/dist/engine/java_quality_guard.js.map +0 -1
  2153. package/dist/engine/job_manager.d.ts +0 -111
  2154. package/dist/engine/job_manager.d.ts.map +0 -1
  2155. package/dist/engine/job_manager.js +0 -270
  2156. package/dist/engine/job_manager.js.map +0 -1
  2157. package/dist/engine/knowledge_acceptance_registry.d.ts.map +0 -1
  2158. package/dist/engine/knowledge_acceptance_registry.js +0 -261
  2159. package/dist/engine/knowledge_acceptance_registry.js.map +0 -1
  2160. package/dist/engine/knowledge_asset_audit.d.ts.map +0 -1
  2161. package/dist/engine/knowledge_asset_audit.js +0 -230
  2162. package/dist/engine/knowledge_asset_audit.js.map +0 -1
  2163. package/dist/engine/knowledge_asset_consumer.d.ts +0 -150
  2164. package/dist/engine/knowledge_asset_consumer.d.ts.map +0 -1
  2165. package/dist/engine/knowledge_asset_consumer.js +0 -287
  2166. package/dist/engine/knowledge_asset_consumer.js.map +0 -1
  2167. package/dist/engine/knowledge_asset_generation_gate.d.ts.map +0 -1
  2168. package/dist/engine/knowledge_asset_generation_gate.js.map +0 -1
  2169. package/dist/engine/knowledge_asset_migration.d.ts.map +0 -1
  2170. package/dist/engine/knowledge_asset_migration.js +0 -204
  2171. package/dist/engine/knowledge_asset_migration.js.map +0 -1
  2172. package/dist/engine/knowledge_asset_schema.d.ts +0 -97
  2173. package/dist/engine/knowledge_asset_schema.d.ts.map +0 -1
  2174. package/dist/engine/knowledge_asset_schema.js +0 -413
  2175. package/dist/engine/knowledge_asset_schema.js.map +0 -1
  2176. package/dist/engine/knowledge_config_loader.d.ts.map +0 -1
  2177. package/dist/engine/knowledge_config_loader.js +0 -144
  2178. package/dist/engine/knowledge_config_loader.js.map +0 -1
  2179. package/dist/engine/knowledge_consumption_snapshot.d.ts +0 -91
  2180. package/dist/engine/knowledge_consumption_snapshot.d.ts.map +0 -1
  2181. package/dist/engine/knowledge_consumption_snapshot.js +0 -113
  2182. package/dist/engine/knowledge_consumption_snapshot.js.map +0 -1
  2183. package/dist/engine/knowledge_evolution.d.ts +0 -82
  2184. package/dist/engine/knowledge_evolution.d.ts.map +0 -1
  2185. package/dist/engine/knowledge_evolution.js +0 -272
  2186. package/dist/engine/knowledge_evolution.js.map +0 -1
  2187. package/dist/engine/knowledge_governance_gate.d.ts +0 -38
  2188. package/dist/engine/knowledge_governance_gate.d.ts.map +0 -1
  2189. package/dist/engine/knowledge_governance_gate.js +0 -123
  2190. package/dist/engine/knowledge_governance_gate.js.map +0 -1
  2191. package/dist/engine/knowledge_injection_boundary.d.ts +0 -59
  2192. package/dist/engine/knowledge_injection_boundary.d.ts.map +0 -1
  2193. package/dist/engine/knowledge_injection_boundary.js +0 -623
  2194. package/dist/engine/knowledge_injection_boundary.js.map +0 -1
  2195. package/dist/engine/knowledge_lifecycle.d.ts +0 -83
  2196. package/dist/engine/knowledge_lifecycle.d.ts.map +0 -1
  2197. package/dist/engine/knowledge_lifecycle.js +0 -247
  2198. package/dist/engine/knowledge_lifecycle.js.map +0 -1
  2199. package/dist/engine/knowledge_manager.d.ts +0 -149
  2200. package/dist/engine/knowledge_manager.d.ts.map +0 -1
  2201. package/dist/engine/knowledge_manager.js +0 -934
  2202. package/dist/engine/knowledge_manager.js.map +0 -1
  2203. package/dist/engine/knowledge_scenario_registry.d.ts +0 -21
  2204. package/dist/engine/knowledge_scenario_registry.d.ts.map +0 -1
  2205. package/dist/engine/knowledge_scenario_registry.js +0 -329
  2206. package/dist/engine/knowledge_scenario_registry.js.map +0 -1
  2207. package/dist/engine/knowledge_sovereignty.d.ts.map +0 -1
  2208. package/dist/engine/knowledge_sovereignty.js +0 -196
  2209. package/dist/engine/knowledge_sovereignty.js.map +0 -1
  2210. package/dist/engine/knowledge_template_contracts.d.ts.map +0 -1
  2211. package/dist/engine/knowledge_template_contracts.js.map +0 -1
  2212. package/dist/engine/language_policy.d.ts +0 -78
  2213. package/dist/engine/language_policy.d.ts.map +0 -1
  2214. package/dist/engine/language_policy.js +0 -139
  2215. package/dist/engine/language_policy.js.map +0 -1
  2216. package/dist/engine/language_policy_contract.d.ts.map +0 -1
  2217. package/dist/engine/language_policy_contract.js.map +0 -1
  2218. package/dist/engine/legacy_type_migration.d.ts +0 -63
  2219. package/dist/engine/legacy_type_migration.d.ts.map +0 -1
  2220. package/dist/engine/legacy_type_migration.js +0 -227
  2221. package/dist/engine/legacy_type_migration.js.map +0 -1
  2222. package/dist/engine/lifecycle_knowledge_contract.d.ts +0 -59
  2223. package/dist/engine/lifecycle_knowledge_contract.d.ts.map +0 -1
  2224. package/dist/engine/lifecycle_knowledge_contract.js +0 -203
  2225. package/dist/engine/lifecycle_knowledge_contract.js.map +0 -1
  2226. package/dist/engine/llm_gateway.d.ts +0 -167
  2227. package/dist/engine/llm_gateway.d.ts.map +0 -1
  2228. package/dist/engine/llm_gateway.js +0 -292
  2229. package/dist/engine/llm_gateway.js.map +0 -1
  2230. package/dist/engine/local_docker_acceptance.d.ts +0 -94
  2231. package/dist/engine/local_docker_acceptance.d.ts.map +0 -1
  2232. package/dist/engine/local_docker_acceptance.js +0 -312
  2233. package/dist/engine/local_docker_acceptance.js.map +0 -1
  2234. package/dist/engine/log_governance.d.ts.map +0 -1
  2235. package/dist/engine/log_governance.js +0 -76
  2236. package/dist/engine/log_governance.js.map +0 -1
  2237. package/dist/engine/logger.d.ts.map +0 -1
  2238. package/dist/engine/logger.js +0 -115
  2239. package/dist/engine/logger.js.map +0 -1
  2240. package/dist/engine/main_path_integration_contract.d.ts +0 -383
  2241. package/dist/engine/main_path_integration_contract.d.ts.map +0 -1
  2242. package/dist/engine/main_path_integration_contract.js +0 -1582
  2243. package/dist/engine/main_path_integration_contract.js.map +0 -1
  2244. package/dist/engine/mechanism_contract_registry.d.ts +0 -59
  2245. package/dist/engine/mechanism_contract_registry.d.ts.map +0 -1
  2246. package/dist/engine/mechanism_contract_registry.js +0 -1289
  2247. package/dist/engine/mechanism_contract_registry.js.map +0 -1
  2248. package/dist/engine/mechanism_health_check.d.ts +0 -23
  2249. package/dist/engine/mechanism_health_check.d.ts.map +0 -1
  2250. package/dist/engine/mechanism_health_check.js +0 -139
  2251. package/dist/engine/mechanism_health_check.js.map +0 -1
  2252. package/dist/engine/metric_governance.d.ts.map +0 -1
  2253. package/dist/engine/metric_governance.js.map +0 -1
  2254. package/dist/engine/mutation_audit.d.ts +0 -53
  2255. package/dist/engine/mutation_audit.d.ts.map +0 -1
  2256. package/dist/engine/mutation_audit.js +0 -136
  2257. package/dist/engine/mutation_audit.js.map +0 -1
  2258. package/dist/engine/next_action_planner.d.ts +0 -32
  2259. package/dist/engine/next_action_planner.d.ts.map +0 -1
  2260. package/dist/engine/next_action_planner.js +0 -823
  2261. package/dist/engine/next_action_planner.js.map +0 -1
  2262. package/dist/engine/observability.d.ts +0 -68
  2263. package/dist/engine/observability.d.ts.map +0 -1
  2264. package/dist/engine/observability.js +0 -435
  2265. package/dist/engine/observability.js.map +0 -1
  2266. package/dist/engine/observed_consumption.d.ts +0 -54
  2267. package/dist/engine/observed_consumption.d.ts.map +0 -1
  2268. package/dist/engine/observed_consumption.js +0 -381
  2269. package/dist/engine/observed_consumption.js.map +0 -1
  2270. package/dist/engine/ood_solid_contract.d.ts.map +0 -1
  2271. package/dist/engine/ood_solid_contract.js +0 -115
  2272. package/dist/engine/ood_solid_contract.js.map +0 -1
  2273. package/dist/engine/path_scope_utils.d.ts +0 -21
  2274. package/dist/engine/path_scope_utils.d.ts.map +0 -1
  2275. package/dist/engine/path_scope_utils.js +0 -126
  2276. package/dist/engine/path_scope_utils.js.map +0 -1
  2277. package/dist/engine/plan_proposal_gate.d.ts.map +0 -1
  2278. package/dist/engine/plan_proposal_gate.js +0 -341
  2279. package/dist/engine/plan_proposal_gate.js.map +0 -1
  2280. package/dist/engine/platform_context.d.ts +0 -44
  2281. package/dist/engine/platform_context.d.ts.map +0 -1
  2282. package/dist/engine/platform_context.js +0 -169
  2283. package/dist/engine/platform_context.js.map +0 -1
  2284. package/dist/engine/policy_drift_detector.d.ts +0 -72
  2285. package/dist/engine/policy_drift_detector.d.ts.map +0 -1
  2286. package/dist/engine/policy_drift_detector.js +0 -277
  2287. package/dist/engine/policy_drift_detector.js.map +0 -1
  2288. package/dist/engine/privacy_secret_contract.d.ts +0 -320
  2289. package/dist/engine/privacy_secret_contract.d.ts.map +0 -1
  2290. package/dist/engine/privacy_secret_contract.js +0 -875
  2291. package/dist/engine/privacy_secret_contract.js.map +0 -1
  2292. package/dist/engine/project_knowledge_contract.d.ts +0 -132
  2293. package/dist/engine/project_knowledge_contract.d.ts.map +0 -1
  2294. package/dist/engine/project_knowledge_contract.js +0 -555
  2295. package/dist/engine/project_knowledge_contract.js.map +0 -1
  2296. package/dist/engine/project_stage_detector.d.ts.map +0 -1
  2297. package/dist/engine/project_stage_detector.js +0 -185
  2298. package/dist/engine/project_stage_detector.js.map +0 -1
  2299. package/dist/engine/regression_matrix.d.ts.map +0 -1
  2300. package/dist/engine/regression_matrix.js +0 -410
  2301. package/dist/engine/regression_matrix.js.map +0 -1
  2302. package/dist/engine/release_compatibility.d.ts.map +0 -1
  2303. package/dist/engine/release_compatibility.js.map +0 -1
  2304. package/dist/engine/release_gate_scenario_registry.d.ts.map +0 -1
  2305. package/dist/engine/release_gate_scenario_registry.js +0 -717
  2306. package/dist/engine/release_gate_scenario_registry.js.map +0 -1
  2307. package/dist/engine/release_issue_scenario_registry.d.ts +0 -62
  2308. package/dist/engine/release_issue_scenario_registry.d.ts.map +0 -1
  2309. package/dist/engine/release_issue_scenario_registry.js +0 -1748
  2310. package/dist/engine/release_issue_scenario_registry.js.map +0 -1
  2311. package/dist/engine/release_readiness_gate.d.ts +0 -35
  2312. package/dist/engine/release_readiness_gate.d.ts.map +0 -1
  2313. package/dist/engine/release_readiness_gate.js +0 -158
  2314. package/dist/engine/release_readiness_gate.js.map +0 -1
  2315. package/dist/engine/release_tool_harness.d.ts +0 -71
  2316. package/dist/engine/release_tool_harness.d.ts.map +0 -1
  2317. package/dist/engine/release_tool_harness.js +0 -161
  2318. package/dist/engine/release_tool_harness.js.map +0 -1
  2319. package/dist/engine/risk_sampler.d.ts +0 -43
  2320. package/dist/engine/risk_sampler.d.ts.map +0 -1
  2321. package/dist/engine/risk_sampler.js +0 -79
  2322. package/dist/engine/risk_sampler.js.map +0 -1
  2323. package/dist/engine/rollback_router.d.ts +0 -35
  2324. package/dist/engine/rollback_router.d.ts.map +0 -1
  2325. package/dist/engine/rollback_router.js +0 -50
  2326. package/dist/engine/rollback_router.js.map +0 -1
  2327. package/dist/engine/route_decision_contract_verifier.d.ts +0 -44
  2328. package/dist/engine/route_decision_contract_verifier.d.ts.map +0 -1
  2329. package/dist/engine/route_decision_contract_verifier.js +0 -154
  2330. package/dist/engine/route_decision_contract_verifier.js.map +0 -1
  2331. package/dist/engine/runtime_safety.d.ts.map +0 -1
  2332. package/dist/engine/runtime_safety.js +0 -200
  2333. package/dist/engine/runtime_safety.js.map +0 -1
  2334. package/dist/engine/scaffolder.d.ts +0 -19
  2335. package/dist/engine/scaffolder.d.ts.map +0 -1
  2336. package/dist/engine/scaffolder.js +0 -411
  2337. package/dist/engine/scaffolder.js.map +0 -1
  2338. package/dist/engine/scope_controller.d.ts +0 -16
  2339. package/dist/engine/scope_controller.d.ts.map +0 -1
  2340. package/dist/engine/scope_controller.js +0 -195
  2341. package/dist/engine/scope_controller.js.map +0 -1
  2342. package/dist/engine/scope_lease.d.ts +0 -88
  2343. package/dist/engine/scope_lease.d.ts.map +0 -1
  2344. package/dist/engine/scope_lease.js +0 -166
  2345. package/dist/engine/scope_lease.js.map +0 -1
  2346. package/dist/engine/scope_resolver.d.ts +0 -11
  2347. package/dist/engine/scope_resolver.d.ts.map +0 -1
  2348. package/dist/engine/scope_resolver.js +0 -526
  2349. package/dist/engine/scope_resolver.js.map +0 -1
  2350. package/dist/engine/semantic_evidence.d.ts +0 -29
  2351. package/dist/engine/semantic_evidence.d.ts.map +0 -1
  2352. package/dist/engine/semantic_evidence.js +0 -91
  2353. package/dist/engine/semantic_evidence.js.map +0 -1
  2354. package/dist/engine/slice_executor.d.ts +0 -79
  2355. package/dist/engine/slice_executor.d.ts.map +0 -1
  2356. package/dist/engine/slice_executor.js +0 -100
  2357. package/dist/engine/slice_executor.js.map +0 -1
  2358. package/dist/engine/stage_gate_engine.d.ts +0 -32
  2359. package/dist/engine/stage_gate_engine.d.ts.map +0 -1
  2360. package/dist/engine/stage_gate_engine.js +0 -105
  2361. package/dist/engine/stage_gate_engine.js.map +0 -1
  2362. package/dist/engine/stale_current_task_detector.d.ts +0 -30
  2363. package/dist/engine/stale_current_task_detector.d.ts.map +0 -1
  2364. package/dist/engine/stale_current_task_detector.js +0 -168
  2365. package/dist/engine/stale_current_task_detector.js.map +0 -1
  2366. package/dist/engine/standard_asset_contract.d.ts +0 -75
  2367. package/dist/engine/standard_asset_contract.d.ts.map +0 -1
  2368. package/dist/engine/standard_asset_contract.js +0 -388
  2369. package/dist/engine/standard_asset_contract.js.map +0 -1
  2370. package/dist/engine/standard_asset_coverage.d.ts.map +0 -1
  2371. package/dist/engine/standard_asset_coverage.js +0 -220
  2372. package/dist/engine/standard_asset_coverage.js.map +0 -1
  2373. package/dist/engine/state_update_bypass.d.ts +0 -19
  2374. package/dist/engine/state_update_bypass.d.ts.map +0 -1
  2375. package/dist/engine/state_update_bypass.js +0 -17
  2376. package/dist/engine/state_update_bypass.js.map +0 -1
  2377. package/dist/engine/task_context.d.ts +0 -249
  2378. package/dist/engine/task_context.d.ts.map +0 -1
  2379. package/dist/engine/task_context.js +0 -983
  2380. package/dist/engine/task_context.js.map +0 -1
  2381. package/dist/engine/task_planner.d.ts +0 -28
  2382. package/dist/engine/task_planner.d.ts.map +0 -1
  2383. package/dist/engine/task_planner.js +0 -325
  2384. package/dist/engine/task_planner.js.map +0 -1
  2385. package/dist/engine/task_stage_detector.d.ts +0 -25
  2386. package/dist/engine/task_stage_detector.d.ts.map +0 -1
  2387. package/dist/engine/task_stage_detector.js +0 -160
  2388. package/dist/engine/task_stage_detector.js.map +0 -1
  2389. package/dist/engine/technology_decision.d.ts +0 -40
  2390. package/dist/engine/technology_decision.d.ts.map +0 -1
  2391. package/dist/engine/technology_decision.js +0 -137
  2392. package/dist/engine/technology_decision.js.map +0 -1
  2393. package/dist/engine/template_asset_contract_registry.d.ts +0 -162
  2394. package/dist/engine/template_asset_contract_registry.d.ts.map +0 -1
  2395. package/dist/engine/template_asset_contract_registry.js +0 -626
  2396. package/dist/engine/template_asset_contract_registry.js.map +0 -1
  2397. package/dist/engine/template_asset_visibility.d.ts +0 -109
  2398. package/dist/engine/template_asset_visibility.d.ts.map +0 -1
  2399. package/dist/engine/template_asset_visibility.js +0 -321
  2400. package/dist/engine/template_asset_visibility.js.map +0 -1
  2401. package/dist/engine/template_init_sync.d.ts +0 -97
  2402. package/dist/engine/template_init_sync.d.ts.map +0 -1
  2403. package/dist/engine/template_init_sync.js +0 -395
  2404. package/dist/engine/template_init_sync.js.map +0 -1
  2405. package/dist/engine/template_manifest_io.d.ts +0 -57
  2406. package/dist/engine/template_manifest_io.d.ts.map +0 -1
  2407. package/dist/engine/template_manifest_io.js +0 -188
  2408. package/dist/engine/template_manifest_io.js.map +0 -1
  2409. package/dist/engine/template_mechanism_auditor.d.ts +0 -95
  2410. package/dist/engine/template_mechanism_auditor.d.ts.map +0 -1
  2411. package/dist/engine/template_mechanism_auditor.js +0 -626
  2412. package/dist/engine/template_mechanism_auditor.js.map +0 -1
  2413. package/dist/engine/template_sync.d.ts +0 -98
  2414. package/dist/engine/template_sync.d.ts.map +0 -1
  2415. package/dist/engine/template_sync.js.map +0 -1
  2416. package/dist/engine/test_generator.d.ts +0 -10
  2417. package/dist/engine/test_generator.d.ts.map +0 -1
  2418. package/dist/engine/test_generator.js +0 -265
  2419. package/dist/engine/test_generator.js.map +0 -1
  2420. package/dist/engine/test_quality.d.ts +0 -36
  2421. package/dist/engine/test_quality.d.ts.map +0 -1
  2422. package/dist/engine/test_quality.js +0 -642
  2423. package/dist/engine/test_quality.js.map +0 -1
  2424. package/dist/engine/test_strategy.d.ts.map +0 -1
  2425. package/dist/engine/test_strategy.js.map +0 -1
  2426. package/dist/engine/tool_invocation_contract_registry.d.ts +0 -136
  2427. package/dist/engine/tool_invocation_contract_registry.d.ts.map +0 -1
  2428. package/dist/engine/tool_invocation_contract_registry.js +0 -762
  2429. package/dist/engine/tool_invocation_contract_registry.js.map +0 -1
  2430. package/dist/engine/traceability.d.ts +0 -48
  2431. package/dist/engine/traceability.d.ts.map +0 -1
  2432. package/dist/engine/traceability.js +0 -470
  2433. package/dist/engine/traceability.js.map +0 -1
  2434. package/dist/engine/user_feedback_contract.d.ts +0 -162
  2435. package/dist/engine/user_feedback_contract.d.ts.map +0 -1
  2436. package/dist/engine/user_feedback_contract.js +0 -418
  2437. package/dist/engine/user_feedback_contract.js.map +0 -1
  2438. package/dist/engine/user_promise.d.ts +0 -67
  2439. package/dist/engine/user_promise.d.ts.map +0 -1
  2440. package/dist/engine/user_promise.js +0 -436
  2441. package/dist/engine/user_promise.js.map +0 -1
  2442. package/dist/engine/verification_contract.d.ts.map +0 -1
  2443. package/dist/engine/verification_contract.js.map +0 -1
  2444. package/dist/engine/verifier.d.ts +0 -45
  2445. package/dist/engine/verifier.d.ts.map +0 -1
  2446. package/dist/engine/verifier.js +0 -629
  2447. package/dist/engine/verifier.js.map +0 -1
  2448. package/dist/engine/workflow_contract_registry.d.ts +0 -108
  2449. package/dist/engine/workflow_contract_registry.d.ts.map +0 -1
  2450. package/dist/engine/workflow_contract_registry.js +0 -832
  2451. package/dist/engine/workflow_contract_registry.js.map +0 -1
  2452. package/dist/engine/workflow_navigation_contract.d.ts +0 -171
  2453. package/dist/engine/workflow_navigation_contract.d.ts.map +0 -1
  2454. package/dist/engine/workflow_navigation_contract.js +0 -31
  2455. package/dist/engine/workflow_navigation_contract.js.map +0 -1
  2456. package/dist/engine/workflow_rule_generator.d.ts +0 -22
  2457. package/dist/engine/workflow_rule_generator.d.ts.map +0 -1
  2458. package/dist/engine/workflow_rule_generator.js +0 -83
  2459. package/dist/engine/workflow_rule_generator.js.map +0 -1
  2460. package/dist/engine/workflow_template_pack.d.ts +0 -71
  2461. package/dist/engine/workflow_template_pack.d.ts.map +0 -1
  2462. package/dist/engine/workflow_template_pack.js +0 -246
  2463. package/dist/engine/workflow_template_pack.js.map +0 -1
  2464. package/dist/engine/workspace_lease.d.ts +0 -69
  2465. package/dist/engine/workspace_lease.d.ts.map +0 -1
  2466. package/dist/engine/workspace_lease.js +0 -154
  2467. package/dist/engine/workspace_lease.js.map +0 -1
  2468. package/dist/engine/workspace_resumer.d.ts.map +0 -1
  2469. package/dist/engine/workspace_resumer.js +0 -207
  2470. package/dist/engine/workspace_resumer.js.map +0 -1
  2471. package/dist/engine/zero_config_init.d.ts +0 -152
  2472. package/dist/engine/zero_config_init.d.ts.map +0 -1
  2473. package/dist/engine/zero_config_init.js +0 -810
  2474. package/dist/engine/zero_config_init.js.map +0 -1
  2475. package/templates/artifacts/shared//344/273/243/347/240/201/346/263/250/351/207/212/344/270/216/346/227/245/345/277/227/351/252/214/346/224/266/346/250/241/346/235/277.md +0 -78
  2476. package/templates/internal/patterns//351/233/266/351/205/215/347/275/256/345/210/235/345/247/213/345/214/226.md +0 -64
  2477. package/templates/internal/rules//345/267/245/344/275/234/346/265/201/346/250/241/346/235/277/345/214/205/350/247/204/345/210/231.md +0 -48
  2478. package/templates/internal/rules//346/250/241/346/235/277/350/265/204/344/272/247/345/217/257/350/247/201/346/200/247/350/247/204/345/210/231.md +0 -71
  2479. package/templates/internal/rules//351/252/214/346/224/266/346/250/241/346/235/277/350/276/223/345/207/272/345/245/221/347/272/246/350/247/204/345/210/231.md +0 -96
  2480. /package/dist/engine/{audit_pool.d.ts → audit/audit_pool.d.ts} +0 -0
  2481. /package/dist/engine/{core_experience_principle.d.ts → audit/core_experience_principle.d.ts} +0 -0
  2482. /package/dist/engine/{degradation.d.ts → audit/degradation.d.ts} +0 -0
  2483. /package/dist/engine/{degradation.js → audit/degradation.js} +0 -0
  2484. /package/dist/engine/{diagnostic_registry.d.ts → audit/diagnostic_registry.d.ts} +0 -0
  2485. /package/dist/engine/{failure_report.d.ts → audit/failure_report.d.ts} +0 -0
  2486. /package/dist/engine/{failure_report.js → audit/failure_report.js} +0 -0
  2487. /package/dist/engine/{java_quality_guard.d.ts → audit/java_quality_guard.d.ts} +0 -0
  2488. /package/dist/engine/{runtime_safety.d.ts → audit/runtime_safety.d.ts} +0 -0
  2489. /package/dist/engine/{test_strategy.d.ts → audit/test_strategy.d.ts} +0 -0
  2490. /package/dist/engine/{test_strategy.js → audit/test_strategy.js} +0 -0
  2491. /package/dist/engine/{config_write_boundary.d.ts → config/config_write_boundary.d.ts} +0 -0
  2492. /package/dist/engine/{regression_matrix.d.ts → config/regression_matrix.d.ts} +0 -0
  2493. /package/dist/engine/{architecture_design_contract.d.ts → contracts/architecture_design_contract.d.ts} +0 -0
  2494. /package/dist/engine/{architecture_design_contract.js → contracts/architecture_design_contract.js} +0 -0
  2495. /package/dist/engine/{backend_implementation_contract.d.ts → contracts/backend_implementation_contract.d.ts} +0 -0
  2496. /package/dist/engine/{capability_action_advisor.d.ts → contracts/capability_action_advisor.d.ts} +0 -0
  2497. /package/dist/engine/{capability_registry.d.ts → contracts/capability_registry.d.ts} +0 -0
  2498. /package/dist/engine/{code_maintainability_observability_contract.d.ts → contracts/code_maintainability_observability_contract.d.ts} +0 -0
  2499. /package/dist/engine/{control_plane_contract.d.ts → contracts/control_plane_contract.d.ts} +0 -0
  2500. /package/dist/engine/{decision_workshop.js → contracts/decision_workshop.js} +0 -0
  2501. /package/dist/engine/{design_artifact_pack.js → contracts/design_artifact_pack.js} +0 -0
  2502. /package/dist/engine/{detail_discipline.d.ts → contracts/detail_discipline.d.ts} +0 -0
  2503. /package/dist/engine/{detail_discipline.js → contracts/detail_discipline.js} +0 -0
  2504. /package/dist/engine/{escape_report.d.ts → contracts/escape_report.d.ts} +0 -0
  2505. /package/dist/engine/{existing_system_analysis.d.ts → contracts/existing_system_analysis.d.ts} +0 -0
  2506. /package/dist/engine/{existing_system_analysis.js → contracts/existing_system_analysis.js} +0 -0
  2507. /package/dist/engine/{extension_platform_contracts.d.ts → contracts/extension_platform_contracts.d.ts} +0 -0
  2508. /package/dist/engine/{extension_platform_contracts.js → contracts/extension_platform_contracts.js} +0 -0
  2509. /package/dist/engine/{instruction_contract.d.ts → contracts/instruction_contract.d.ts} +0 -0
  2510. /package/dist/engine/{metric_governance.d.ts → contracts/metric_governance.d.ts} +0 -0
  2511. /package/dist/engine/{metric_governance.js → contracts/metric_governance.js} +0 -0
  2512. /package/dist/engine/{ood_solid_contract.d.ts → contracts/ood_solid_contract.d.ts} +0 -0
  2513. /package/dist/engine/{verification_contract.d.ts → contracts/verification_contract.d.ts} +0 -0
  2514. /package/dist/engine/{verification_contract.js → contracts/verification_contract.js} +0 -0
  2515. /package/dist/engine/{log_governance.d.ts → core/log_governance.d.ts} +0 -0
  2516. /package/dist/engine/{logger.d.ts → core/logger.d.ts} +0 -0
  2517. /package/dist/engine/{chinese_semantic_priority.d.ts → knowledge/chinese_semantic_priority.d.ts} +0 -0
  2518. /package/dist/engine/{chinese_semantic_priority.js → knowledge/chinese_semantic_priority.js} +0 -0
  2519. /package/dist/engine/{documentation_governance.d.ts → knowledge/documentation_governance.d.ts} +0 -0
  2520. /package/dist/engine/{documentation_governance.js → knowledge/documentation_governance.js} +0 -0
  2521. /package/dist/engine/{knowledge_acceptance_registry.d.ts → knowledge/knowledge_acceptance_registry.d.ts} +0 -0
  2522. /package/dist/engine/{knowledge_asset_audit.d.ts → knowledge/knowledge_asset_audit.d.ts} +0 -0
  2523. /package/dist/engine/{knowledge_asset_generation_gate.d.ts → knowledge/knowledge_asset_generation_gate.d.ts} +0 -0
  2524. /package/dist/engine/{knowledge_asset_generation_gate.js → knowledge/knowledge_asset_generation_gate.js} +0 -0
  2525. /package/dist/engine/{knowledge_asset_migration.d.ts → knowledge/knowledge_asset_migration.d.ts} +0 -0
  2526. /package/dist/engine/{knowledge_config_loader.d.ts → knowledge/knowledge_config_loader.d.ts} +0 -0
  2527. /package/dist/engine/{knowledge_sovereignty.d.ts → knowledge/knowledge_sovereignty.d.ts} +0 -0
  2528. /package/dist/engine/{knowledge_template_contracts.d.ts → knowledge/knowledge_template_contracts.d.ts} +0 -0
  2529. /package/dist/engine/{knowledge_template_contracts.js → knowledge/knowledge_template_contracts.js} +0 -0
  2530. /package/dist/engine/{language_policy_contract.d.ts → knowledge/language_policy_contract.d.ts} +0 -0
  2531. /package/dist/engine/{language_policy_contract.js → knowledge/language_policy_contract.js} +0 -0
  2532. /package/dist/engine/{release_compatibility.d.ts → knowledge/release_compatibility.d.ts} +0 -0
  2533. /package/dist/engine/{release_compatibility.js → knowledge/release_compatibility.js} +0 -0
  2534. /package/dist/engine/{conflict_gate.d.ts → pipeline/conflict_gate.d.ts} +0 -0
  2535. /package/dist/engine/{diff_ownership.d.ts → pipeline/diff_ownership.d.ts} +0 -0
  2536. /package/dist/engine/{diff_ownership_store.d.ts → pipeline/diff_ownership_store.d.ts} +0 -0
  2537. /package/dist/engine/{plan_proposal_gate.d.ts → pipeline/plan_proposal_gate.d.ts} +0 -0
  2538. /package/dist/engine/{workspace_resumer.d.ts → pipeline/workspace_resumer.d.ts} +0 -0
  2539. /package/dist/engine/{gate_checks → release/gate_checks}/checkCriticalProblemConsumption.d.ts +0 -0
  2540. /package/dist/engine/{gate_checks → release/gate_checks}/checkDependencyAudit.d.ts +0 -0
  2541. /package/dist/engine/{gate_checks → release/gate_checks}/checkDistFreshness.d.ts +0 -0
  2542. /package/dist/engine/{gate_checks → release/gate_checks}/checkMainlineConsumption.d.ts +0 -0
  2543. /package/dist/engine/{gate_checks → release/gate_checks}/checkTemplateKnowledgeHygiene.d.ts +0 -0
  2544. /package/dist/engine/{gate_checks → release/gate_checks}/checkWorkflowNavigation.d.ts +0 -0
  2545. /package/dist/engine/{gate_checks → release/gate_checks}/helpers.d.ts +0 -0
  2546. /package/dist/engine/{gate_checks → release/gate_checks}/types.d.ts +0 -0
  2547. /package/dist/engine/{gate_checks → release/gate_checks}/types.js +0 -0
  2548. /package/dist/engine/{release_gate_scenario_registry.d.ts → release/release_gate_scenario_registry.d.ts} +0 -0
  2549. /package/dist/engine/{standard_asset_coverage.d.ts → templates/standard_asset_coverage.d.ts} +0 -0
  2550. /package/dist/engine/{template_sync.js → templates/template_sync.js} +0 -0
  2551. /package/dist/engine/{project_stage_detector.d.ts → workflow/project_stage_detector.d.ts} +0 -0
@@ -1,4224 +1,10 @@
1
- import { debug, internalWarn } from "../../engine/logger.js";
2
- import { z } from "zod";
3
- import path from "node:path";
4
- import { promises as fsp } from "node:fs";
5
- import crypto from "node:crypto";
6
- import { normalizePathCandidate } from "../../engine/input_material_extractor.js";
7
- import { archiveStaleCurrentPointer, detectStaleCurrentTask } from "../../engine/stale_current_task_detector.js";
8
- import { verifyArtifact } from "../../engine/artifact_contract_registry.js";
9
- import { verifyRouteDecisionContract } from "../../engine/route_decision_contract_verifier.js";
10
- import { isSameOrDescendantPath } from "../../engine/path_scope_utils.js";
11
- import { findToolInvocationContractByName, createToolTrace, validateToolInvocation, hasWriteSideEffect, } from "../../engine/tool_invocation_contract_registry.js";
12
- import { TOOL_DIAGNOSTIC_CODES } from "../../engine/diagnostic_registry.js";
13
- function createLazy(loader) {
14
- let mod = { loaded: null, promise: null };
15
- return () => {
16
- if (mod.loaded)
17
- return Promise.resolve(mod.loaded);
18
- if (!mod.promise)
19
- mod.promise = loader().then(m => { mod.loaded = m; return m; });
20
- return mod.promise;
21
- };
22
- }
23
- const lazyClassifier = createLazy(() => import("../../engine/classifier.js"));
24
- const lazyIntentRouter = createLazy(() => import("../../engine/intent_router.js"));
25
- const lazyExpander = createLazy(() => import("../../engine/intent_expander.js"));
26
- const lazyVerifier = createLazy(() => import("../../engine/verifier.js"));
27
- const lazyEvolver = createLazy(() => import("../../engine/evolver.js"));
28
- const lazyPlanner = createLazy(() => import("../../engine/task_planner.js"));
29
- const lazyImpact = createLazy(() => import("../../engine/impact_analyzer.js"));
30
- const lazyReviewer = createLazy(() => import("../../engine/code_reviewer.js"));
31
- const lazyDebt = createLazy(() => import("../../engine/debt_tracker.js"));
32
- const lazyScaffolder = createLazy(() => import("../../engine/scaffolder.js"));
33
- const lazyDelivery = createLazy(() => import("../../engine/delivery.js"));
34
- const lazyChangeCoord = createLazy(() => import("../../engine/change_coordinator.js"));
35
- const lazyTeam = createLazy(() => import("../../engine/team_awareness.js"));
36
- const lazyContractGuard = createLazy(() => import("../../engine/contract_guard.js"));
37
- const lazyOnboarding = createLazy(() => import("../../engine/onboarding.js"));
38
- const lazyGitDeps = createLazy(() => import("../../engine/git_deps.js"));
39
- const lazyKnowledge = createLazy(() => import("../../engine/knowledge_manager.js"));
40
- const lazyFeasibility = createLazy(() => import("../../engine/feasibility_checker.js"));
41
- const lazyDebugger = createLazy(() => import("../../engine/debugger.js"));
42
- const lazyObservability = createLazy(() => import("../../engine/observability.js"));
43
- const lazyGovernance = createLazy(() => import("../../engine/governance_report.js"));
44
- const lazyMigration = createLazy(() => import("../../engine/migration_guard.js"));
45
- const lazyTestGen = createLazy(() => import("../../engine/test_generator.js"));
46
- const lazyTestQuality = createLazy(() => import("../../engine/test_quality.js"));
47
- const lazyDepScan = createLazy(() => import("../../engine/dependency_scanner.js"));
48
- const lazyDebtReport = createLazy(() => import("../../engine/debt_reporter.js"));
49
- const lazyExploration = createLazy(() => import("../../engine/exploration.js"));
50
- const lazyWorkspaceResumer = createLazy(() => import("../../engine/workspace_resumer.js"));
51
- const lazyLLM = createLazy(() => import("../../engine/llm_gateway.js"));
52
- const lazyIO = createLazy(() => import("../../engine/io_controller.js"));
53
- const lazyCapability = createLazy(() => import("../../engine/capability_registry.js"));
54
- const lazyDecision = createLazy(() => import("../../engine/decision_contract.js"));
55
- const lazyAnchor = createLazy(() => import("../../engine/cognitive_anchor.js"));
56
- const lazyJob = createLazy(() => import("../../engine/job_manager.js"));
57
- const lazyAuditPool = createLazy(() => import("../../engine/audit_pool.js"));
58
- const lazyEscape = createLazy(() => import("../../engine/escape_report.js"));
59
- const lazyAuditSampler = createLazy(() => import("../../engine/audit_sampler.js"));
60
- const lazyCapAdvisor = createLazy(() => import("../../engine/capability_action_advisor.js"));
61
- const lazyCapState = createLazy(() => import("../../engine/capability_state_store.js"));
62
- const lazyMainPath = createLazy(() => import("../../engine/main_path_integration_contract.js"));
63
- const lazyDualLayer = createLazy(() => import("../../engine/dual_layer_mechanism_registry.js"));
64
- const lazyInputMaterial = createLazy(() => import("../../engine/input_material_contract_registry.js"));
65
- const lazyConfigPrecedence = createLazy(() => import("../../engine/config_precedence_contract.js"));
66
- const lazyEnforcementGuard = createLazy(() => import("../../engine/enforcement_guard.js"));
67
- const lazyWorkspaceLease = createLazy(() => import("../../engine/workspace_lease.js"));
68
- const lazyDeliveryReadiness = createLazy(() => import("../../engine/delivery_readiness.js"));
69
- const lazyVerificationContract = createLazy(() => import("../../engine/verification_contract.js"));
70
- const lazyFailureReport = createLazy(() => import("../../engine/failure_report.js"));
71
- const lazyDegradation = createLazy(() => import("../../engine/degradation.js"));
72
- const lazyArchitectureDesign = createLazy(() => import("../../engine/architecture_design_contract.js"));
73
- const lazyExistingSystemAnalysis = createLazy(() => import("../../engine/existing_system_analysis.js"));
74
- const lazyCodingReadiness = createLazy(() => import("../../engine/coding_readiness_gate.js"));
75
- const lazyLocalAcceptance = createLazy(() => import("../../engine/local_docker_acceptance.js"));
76
- const lazyInstructionContract = createLazy(() => import("../../engine/instruction_contract.js"));
77
- const lazyTechnologyDecision = createLazy(() => import("../../engine/technology_decision.js"));
78
- const lazyDetailDiscipline = createLazy(() => import("../../engine/detail_discipline.js"));
79
- const lazyFirstPrinciples = createLazy(() => import("../../engine/first_principles.js"));
80
- const lazyBrainstormContract = createLazy(() => import("../../engine/brainstorm_contract.js"));
81
- const lazyArchitectureWorkshop = createLazy(() => import("../../engine/architecture_decision_workshop.js"));
82
- const lazyDesignArtifactPack = createLazy(() => import("../../engine/design_artifact_pack.js"));
83
- const lazyStandardAssetContract = createLazy(() => import("../../engine/standard_asset_contract.js"));
84
- const lazyDecisionWorkshop = createLazy(() => import("../../engine/decision_workshop.js"));
85
- const lazyNavigation = createLazy(() => import("../../engine/next_action_planner.js"));
86
- const lazyOodSolid = createLazy(() => import("../../engine/ood_solid_contract.js"));
87
- const lazyBackendImplementation = createLazy(() => import("../../engine/backend_implementation_contract.js"));
88
- const lazyCodeObservability = createLazy(() => import("../../engine/code_maintainability_observability_contract.js"));
89
- const lazyTraceability = createLazy(() => import("../../engine/traceability.js"));
90
- const ARCHITECTURE_CONTEXT_PATTERN = /架构|architecture|系统设计|技术方案|现有系统|差距分析|gap.?analysis/i;
91
- function stripPathLikeReferences(text) {
92
- return text.replace(/(^|[\s"'((])(?:~\/|\.{1,2}\/|\/|[A-Za-z0-9_.-]+\/)[^\s"',。;,;::))]+/g, "$1 ");
93
- }
94
- function hasArchitectureIntentSignal(intent) {
95
- return ARCHITECTURE_CONTEXT_PATTERN.test(stripPathLikeReferences(intent ?? ""));
96
- }
97
- function decodeIndexedJsonString(value) {
98
- if (!value || typeof value !== "object" || Array.isArray(value))
99
- return value;
100
- const entries = Object.entries(value);
101
- if (entries.length === 0)
102
- return value;
103
- const isIndexedChars = entries.every(([key, entryValue]) => /^\d+$/.test(key) && typeof entryValue === "string" && entryValue.length <= 1);
104
- if (!isIndexedChars)
105
- return value;
106
- const serialized = entries
107
- .sort(([a], [b]) => Number(a) - Number(b))
108
- .map(([, entryValue]) => entryValue)
109
- .join("")
110
- .trim();
111
- if (!serialized.startsWith("{"))
112
- return value;
113
- try {
114
- return JSON.parse(serialized);
115
- }
116
- catch {
117
- return value;
118
- }
119
- }
120
1
  /**
121
- * 解析 MCP 输入中的契约对象。
122
- * @description 部分 MCP 客户端会把 z.unknown() 对象参数序列化为 JSON 字符串;
123
- * 入口层必须兼容字符串对象,避免后续机制访问数组字段时触发 JS 运行时错误。
2
+ * Backward-compatible re-export shim for tools.
3
+ *
4
+ * The MCP Server tools were extracted from this location to `src/server/tools/`.
5
+ * This shim preserves backward compatibility for any external consumers
6
+ * that imported from the old path.
124
7
  */
125
- function parseContractObject(value, fieldName) {
126
- if (value === undefined || value === null)
127
- return {};
128
- // 字符串 → 尝试 JSON 解析(可能被 MCP 客户端序列化为 JSON 字符串)
129
- let parsed;
130
- if (typeof value === "string") {
131
- try {
132
- parsed = JSON.parse(value);
133
- }
134
- catch (parseErr) {
135
- return { error: `${fieldName} 的 JSON 解析失败: ${parseErr.message}。请检查 JSON 格式是否正确` };
136
- }
137
- }
138
- else {
139
- parsed = value;
140
- }
141
- const candidate = decodeIndexedJsonString(parsed);
142
- if (!candidate || typeof candidate !== "object" || Array.isArray(candidate)) {
143
- return { error: `${fieldName} 必须是 JSON 对象(当前类型: ${Array.isArray(candidate) ? "array" : typeof candidate})。期望格式请参考 expected_schema` };
144
- }
145
- return { value: candidate };
146
- }
147
- /** 需要通过 parseContractObject 校验的契约字段列表 */
148
- const CONTRACT_OBJECT_FIELDS = [
149
- "architecture_decision_workshop", "decision_workshop",
150
- "technology_decision_contract", "technology_decision_record",
151
- "detail_discipline_contract", "provided_details",
152
- "first_principles_frame", "brainstorm_session",
153
- "design_artifact_pack", "ood_solid_summary",
154
- "backend_implementation_work_package", "code_observability_work_package",
155
- ];
156
- /** 需要规范化的字段 */
157
- const NORMALIZED_FIELDS = {
158
- decision_workshop: "decision_workshop",
159
- };
160
- // ── Zod Schema 定义 ──
161
- const ClassifySchema = {
162
- intent: z.string().describe("开发者意图描述"),
163
- project_path: z.string().optional().describe("项目路径(默认当前目录)"),
164
- };
165
- const ExpandSchema = {
166
- task_id: z.string().describe("sf_classify 返回的任务 ID"),
167
- clarification_answers: z.array(z.string()).optional().describe("对澄清问题的回答"),
168
- input_material_confirmations: z.array(z.string()).optional().describe("已确认安全的输入材料路径列表"),
169
- architecture_decision_workshop: z.record(z.unknown()).optional().describe("架构设计前六域决策记录。示例 {domains:[{domain:'backend',options:[{id:'opt-a',title:'...'}],recommended_option_id:'opt-a',user_confirmation_ref:'confirm:...'}],status:'confirmed'}"),
170
- decision_workshop: z.record(z.unknown()).optional().describe("通用决策研讨合同。示例 {activated_packs:['delivery_validation'],domains:[{domain:'delivery_validation',options:[{id:'opt-a',title:'...'}],recommended_option_id:'opt-a',user_confirmation_ref:'confirm:...'}],status:'confirmed'}"),
171
- technology_decision_contract: z.record(z.unknown()).optional().describe("技术决策主权契约。示例 {decision_id:'TECH-001',decision_scope:'architecture',options:[{option_id:'opt-a',title:'A',description:'...'}],recommended_option:'opt-a',rejected_options:[{option:'opt-b',reason:'...'}],evidence:[{claim:'...',supporting_facts:['...']}],falsification:['...'],failure_conditions:['...'],validation_plan:['...'],rollback_or_exit_plan:['...'],human_gate_required:true,human_gate_evidence:'confirm:...',executable_without_human:false}"),
172
- technology_decision_record: z.record(z.unknown()).optional().describe("技术决策执行记录。示例 {decision_id:'TECH-001',selected_option:'opt-a',status:'approved',approved_by:'user',evidence_refs:['confirm:...']}"),
173
- detail_discipline_contract: z.record(z.unknown()).optional().describe("细节纪律契约。示例 {contract_id:'detail-001',required_dimensions:['boundary','failure_path','rollback'],blocking_dimensions:['boundary'],status:'ready'}"),
174
- provided_details: z.record(z.unknown()).optional().describe("细节纪律已提供证据。示例 {boundary:['只检查 readiness,不改代码'],failure_path:['unknown 时标记证据不足'],rollback:['无写入,无需回滚']}"),
175
- first_principles_frame: z.record(z.unknown()).optional().describe("高影响任务第一性原理框架。示例 {fundamental_need:'...',known_facts:['...'],assumptions:['...'],candidate_solutions:[{solution_id:'s1',description:'...',complexity:'low'}],simplest_viable_solution:'s1',chosen_solution:'s1',falsification_questions:['...'],why_not_legacy_path:'...'}"),
176
- brainstorm_session: z.record(z.unknown()).optional().describe("不确定项/方案选择会话。示例 {trigger:'uncertainty',options:[{option_id:'opt-a',title:'...',description:'...',pros:['...'],cons:['...']}],recommended_option_id:'opt-a',rejected_option_ids:['opt-b'],failure_conditions:['...'],brainstorm_status:'options_ready'}"),
177
- design_artifact_pack: z.record(z.unknown()).optional().describe("设计产物包路径映射或复验状态。示例 {status:'implementation_ready',paths:{architecture_document:'docs/architecture/01-架构设计文档.md'},verification_refs:['verification:...']}"),
178
- ood_solid_summary: z.record(z.unknown()).optional().describe("复杂编码任务 OOD/SOLID 摘要。示例 {status:'confirmed',responsibilities:['...'],interfaces:['...'],risks:['...'],evidence_refs:['...']}"),
179
- backend_implementation_work_package: z.record(z.unknown()).optional().describe("后端接口实现工程工作包。示例 {status:'confirmed',api_boundary:['...'],transaction_boundary:['...'],error_contract:['...'],evidence_refs:['...']}"),
180
- code_observability_work_package: z.record(z.unknown()).optional().describe("代码可维护性与可观测性工作包。示例 {status:'confirmed',logging_plan:['...'],comment_plan:['...'],sensitive_logging_policy:'redact',evidence_refs:['...']}"),
181
- };
182
- const VerifySchema = {
183
- task_id: z.string().describe("任务 ID"),
184
- changed_files: z.array(z.string()).describe("本次修改的文件列表"),
185
- };
186
- const LearnSchema = {
187
- task_id: z.string().describe("任务 ID"),
188
- result: z.enum(["success", "failure"]).describe("执行结果"),
189
- failure_type: z.enum(["deterministic", "fixable", "scope_insufficient"]).optional().describe("失败类型"),
190
- verify_output: z.object({
191
- build_passed: z.boolean(),
192
- tests_passed: z.boolean(),
193
- acceptance_results: z.record(z.string(), z.boolean()).optional(),
194
- }).optional().describe("验证输出"),
195
- confirm: z.boolean().optional().describe("确认执行学习(写入状态)"),
196
- authorized: z.boolean().optional().describe("confirm 的兼容别名"),
197
- };
198
- const StatusSchema = {
199
- task_id: z.string().optional().describe("任务 ID(不传则查当前任务)"),
200
- action: z.enum(["current", "recent", "resume", "cancel", "archive_stale", "retry_expand"]).optional().describe("操作类型"),
201
- confirm: z.boolean().optional().describe("确认执行会写入状态的操作,例如 cancel/archive_stale/job_cancel"),
202
- authorized: z.boolean().optional().describe("confirm 的兼容别名"),
203
- job_id: z.string().optional().describe("Job ID(用于 job_status / job_resume / job_cancel)"),
204
- job_action: z.enum(["job_status", "job_resume", "job_cancel"]).optional().describe("Job 操作: 查询状态、从 checkpoint 恢复、取消 job(advisory)"),
205
- };
206
- const PlanSchema = {
207
- task_id: z.string().describe("sf_classify 返回的任务 ID"),
208
- };
209
- const AnalyzeSchema = {
210
- task_id: z.string().describe("sf_expand 返回的任务 ID(需要先执行 expand)"),
211
- };
212
- const ReviewSchema = {
213
- task_id: z.string().describe("任务 ID"),
214
- changed_files: z.array(z.string()).describe("本次修改的文件列表"),
215
- file_contents: z.record(z.string(), z.string()).optional().describe("变更文件的当前内容(key=文件路径,value=文件内容),不传则自动读取"),
216
- };
217
- const ScaffoldSchema = {
218
- task_id: z.string().describe("sf_classify 返回的任务 ID(task_type 应为 scaffold)"),
219
- };
220
- const RecordVerificationExecutionSchema = {
221
- task_id: z.string().describe("任务 ID"),
222
- plan_id: z.string().describe("关联的 VerificationPlan ID"),
223
- execution_records: z.array(z.object({
224
- command: z.string().describe("执行的验证命令"),
225
- exit_code: z.number().describe("命令退出码,0 表示通过"),
226
- stdout_hash: z.string().describe("stdout 的 SHA256 hash"),
227
- stderr_hash: z.string().describe("stderr 的 SHA256 hash"),
228
- started_at: z.string().describe("命令开始时间 ISO 8601"),
229
- finished_at: z.string().describe("命令结束时间 ISO 8601"),
230
- evidence_id: z.string().describe("执行证据 ID"),
231
- })).describe("真实执行记录列表"),
232
- };
233
- const AcceptSchema = {
234
- task_id: z.string().describe("任务 ID"),
235
- confirm: z.boolean().describe("用户显式确认验收结果,必须为 true"),
236
- confirmed_by: z.string().describe("执行确认的用户或审批者标识"),
237
- confirmation_ref: z.string().describe("可审计的用户确认引用"),
238
- acceptance_notes: z.string().describe("验收备注或不适用理由"),
239
- run_mode: z.enum(["manual_review", "not_applicable"]).describe("验收模式"),
240
- final_access: z.object({
241
- frontend_urls: z.array(z.string()),
242
- backend_urls: z.array(z.string()),
243
- docs_or_swagger_urls: z.array(z.string()),
244
- start_commands: z.array(z.string()),
245
- stop_commands: z.array(z.string()),
246
- running_status: z.string(),
247
- manual_review_steps_zh: z.array(z.string()),
248
- known_limits_zh: z.array(z.string()),
249
- }).optional().describe("manual_review 模式下的真实本地访问证据"),
250
- };
251
- const DeliverSchema = {
252
- task_id: z.string().describe("任务 ID"),
253
- changed_files: z.array(z.string()).optional().describe("变更文件列表(不传则使用任务记录中的文件)"),
254
- skip_push: z.boolean().optional().describe("跳过推送"),
255
- skip_pr: z.boolean().optional().describe("跳过 PR 创建"),
256
- confirm: z.boolean().optional().describe("确认执行交付(破坏性操作)"),
257
- authorized: z.boolean().optional().describe("confirm 的兼容别名"),
258
- };
259
- const CoordCheckSchema = {
260
- task_id: z.string().optional().describe("任务 ID(用于获取变更文件列表)"),
261
- branch: z.string().optional().describe("指定分支(不传则使用当前分支)"),
262
- };
263
- const TeamStatusSchema = {
264
- since: z.string().optional().describe("起始日期(ISO 格式,默认 7 天前)"),
265
- include_knowledge: z.boolean().optional().describe("包含知识库更新信息"),
266
- };
267
- const ContractCheckSchema = {
268
- task_id: z.string().describe("任务 ID"),
269
- changed_files: z.array(z.string()).optional().describe("变更文件列表(不传则从任务记录获取)"),
270
- };
271
- const OnboardSchema = {
272
- step: z.enum(["project_overview", "code_tour", "knowledge_review", "first_task"]).optional().describe("当前引导步骤"),
273
- reset: z.boolean().optional().describe("重置引导会话"),
274
- };
275
- const FeasibilityCheckSchema = {
276
- task_id: z.string().describe("任务 ID(需要已完成 classify)"),
277
- };
278
- const DebugSchema = {
279
- error_output: z.string().describe("错误输出文本"),
280
- task_id: z.string().optional().describe("关联任务 ID"),
281
- };
282
- const ObservabilitySchema = {
283
- period_days: z.number().optional().describe("报告周期天数(默认 30)"),
284
- };
285
- const MigrationCheckSchema = {
286
- content: z.string().describe("迁移文件内容(SQL/DDL)"),
287
- filename: z.string().describe("文件名(如 V001__create_users.sql)"),
288
- };
289
- const TestGuideSchema = {
290
- changed_files: z.array(z.string()).describe("变更文件列表"),
291
- };
292
- const TestQualitySchema = {
293
- content: z.string().describe("测试文件内容"),
294
- filename: z.string().describe("测试文件名"),
295
- };
296
- const DependencyScanSchema = {
297
- content: z.string().describe("依赖声明文件内容(package.json / pom.xml / build.gradle)"),
298
- filename: z.string().describe("文件名"),
299
- };
300
- const ExploreSchema = {
301
- domain_query: z.string().describe("技术选型领域关键词(如:分布式锁、流式处理、复杂表单状态管理、缓存策略)"),
302
- task_id: z.string().optional().describe("关联任务 ID(可选,用于关联项目上下文)"),
303
- };
304
- // ── 工具注册 ──
305
- /**
306
- * 注册所有 SoloForge MCP 工具。
307
- * @description 核心注册函数,将全部 MCP 工具注册到指定的 McpServer 实例。
308
- * 包含:sf_classify、sf_expand、sf_verify、sf_learn、sf_status、
309
- * sf_plan、sf_plan_advance、sf_analyze、sf_review、sf_scaffold、
310
- * sf_deliver、sf_coord_check、sf_team_status、sf_contract_check、
311
- * sf_onboard、sf_feasibility_check、sf_debug、sf_observability、
312
- * sf_migration_check、sf_test_guide、sf_test_quality、sf_dependency_scan、
313
- * sf_debt_report、sf_explore、sf_knowledge_audit/add/update、sf_resume_workspace。
314
- * @param server - MCP 服务器实例
315
- * @param deps - SoloForge 核心依赖项
316
- */
317
- /**
318
- * Plan Gate 写工具拦截 — 从 registerSafeTool 中间件提取的纯函数。
319
- * gate 和外部测试可直接调用,无需 MCP server mock。
320
- */
321
- export function checkWriteToolPlanGate(params) {
322
- if (!hasWriteSideEffect(params.sideEffects))
323
- return { allowed: true };
324
- if (!params.ctx || !params.ctx.plan_proposal_gate) {
325
- return {
326
- allowed: false,
327
- diagnostic_code: TOOL_DIAGNOSTIC_CODES.planGate,
328
- violation_type: "guard_blocked",
329
- reason: `工具 ${params.toolName} 执行前缺少 Plan Proposal Gate`,
330
- };
331
- }
332
- return { allowed: true };
333
- }
334
- /**
335
- * 施工指令契约门 — 写操作前检查施工指令完整性。
336
- * 通过引擎模块函数真实消费。
337
- * 调用链 1: registerInstructionIssueCandidate(无契约时创建候选 draft)
338
- * 调用链 2: enforceInstructionBeforeImplementation → checkInstructionCompleteness → validateInstructionContract
339
- */
340
- export async function checkInstructionContractGate(params) {
341
- if (!hasWriteSideEffect(params.sideEffects))
342
- return { allowed: true };
343
- if (!params.ctx)
344
- return { allowed: true };
345
- let instruction = params.ctx.instruction_contract;
346
- const instrModule = await lazyInstructionContract();
347
- // 无契约时消费 registerInstructionIssueCandidate — 创建 draft 候选并保存
348
- if (!instruction && params.task_id) {
349
- instruction = instrModule.registerInstructionIssueCandidate({
350
- task_id: params.task_id,
351
- description: params.toolName,
352
- source: "auto_detected",
353
- suggested_fields: {},
354
- });
355
- params.ctx.instruction_contract = instruction;
356
- if (params.taskContextMgr) {
357
- await params.taskContextMgr.save(params.ctx);
358
- }
359
- }
360
- if (!instruction)
361
- return { allowed: true };
362
- // 消费 enforceInstructionBeforeImplementation(链式消费 checkInstructionCompleteness + validateInstructionContract)
363
- const result = await instrModule.enforceInstructionBeforeImplementation(instruction, params.toolName);
364
- // Draft 状态不阻断 — 仅在 confirmed/executing/blocked 状态时强制
365
- if (instruction?.status === "draft") {
366
- return { allowed: true, findings: result.allowed ? [] : [result.reason_zh] };
367
- }
368
- if (!result.allowed) {
369
- return {
370
- allowed: false,
371
- diagnostic_code: result.diagnostic_code,
372
- violation_type: "guard_blocked",
373
- reason: result.reason_zh,
374
- };
375
- }
376
- return { allowed: true };
377
- }
378
- /**
379
- * 设计产物编码门 — 依赖设计包的任务,在真实复验完成前不得写入业务实现。
380
- * 仅阻断文件/配置/外部交付写入;任务状态、设计文档复验和讨论本身仍可推进。
381
- */
382
- export function checkDesignArtifactWriteGate(params) {
383
- const implementationWrite = params.sideEffects.some((effect) => ["file_write", "config_write", "external_write", "git_commit", "git_push", "pr_create"].includes(effect));
384
- if (!implementationWrite || !params.ctx?.design_artifact_pack)
385
- return { allowed: true };
386
- if (params.ctx.design_artifact_pack.status === "implementation_ready")
387
- return { allowed: true };
388
- return {
389
- allowed: false,
390
- diagnostic_code: "SF-DESIGN-PACK-NOT-READY",
391
- reason: `工具 ${params.toolName} 依赖的设计产物包状态为 ${params.ctx.design_artifact_pack.status},未完成真实复验,不得写入实现或交付`,
392
- };
393
- }
394
- /**
395
- * 架构设计门 — 架构设计类任务膨胀前执行 reviewArchitectureDesign。
396
- * Architecture Design Contract enforcement。
397
- */
398
- export async function checkArchitectureDesignGate(params) {
399
- const route = params.route;
400
- if (route !== "artifact_generation" && route !== "analysis")
401
- return { allowed: true };
402
- if (!params.ctx)
403
- return { allowed: true };
404
- const expansion = params.ctx.expansion;
405
- if (!expansion)
406
- return { allowed: true };
407
- const archModule = await lazyArchitectureDesign();
408
- const contract = expansion.architecture_contract;
409
- if (contract) {
410
- const result = archModule.reviewArchitectureDesign(contract);
411
- if (!result.passed) {
412
- return {
413
- allowed: false,
414
- reason_zh: "架构设计审查未通过",
415
- findings: result.review.missing_sections ?? ["架构设计审查失败"],
416
- };
417
- }
418
- }
419
- return { allowed: true };
420
- }
421
- /**
422
- * 架构决策研讨门 — 正式架构设计前六域决策必须闭合。
423
- * 与是否存在施工指令契约无关,架构设计路由必经此门。
424
- */
425
- export async function checkArchitectureDecisionWorkshopGate(params) {
426
- const workshopModule = await lazyArchitectureWorkshop();
427
- if (!workshopModule.requiresArchitectureDecisionWorkshop(params.workflowIntent, params.ctx.intent)) {
428
- return { allowed: true };
429
- }
430
- const existing = params.ctx.architecture_decision_workshop;
431
- const contract = existing ?? workshopModule.createArchitectureDecisionWorkshop(params.ctx.task_id, params.projectContext ?? "new_system");
432
- if (params.projectContext === "existing_system" && contract.project_context !== "existing_system") {
433
- contract.project_context = "existing_system";
434
- }
435
- const evaluatedContract = workshopModule.applyArchitectureWorkshopGate(contract) ?? contract;
436
- const gate = workshopModule.evaluateArchitectureDecisionWorkshop(evaluatedContract);
437
- params.ctx.architecture_decision_workshop = evaluatedContract;
438
- return {
439
- allowed: gate.allowed,
440
- findings: gate.blocking_findings,
441
- next_domain: gate.next_domain,
442
- contract: evaluatedContract,
443
- };
444
- }
445
- /**
446
- * 现有系统分析门 — 现有项目编码前必须先做分析。
447
- * Existing System Analysis Contract enforcement。
448
- */
449
- export async function checkExistingSystemAnalysisGate(params) {
450
- const archModule = await lazyExistingSystemAnalysis();
451
- const context = archModule.detectProjectContext(params.hasExistingCode, params.hasPackageJson, params.hasSrcDir);
452
- const gateResult = archModule.checkAnalysisGate(context, params.hasAnalysis, params.hasGapAnalysis);
453
- if (!gateResult.allowed) {
454
- return {
455
- allowed: false,
456
- reason_zh: gateResult.reason,
457
- missing_analysis: gateResult.missing_analysis,
458
- };
459
- }
460
- return { allowed: true };
461
- }
462
- /**
463
- * 编码就绪门 — 编码前必须有测试计划 + 验收标准。
464
- * Coding Readiness / Test-First enforcement。
465
- */
466
- export async function checkCodingReadinessGate(params) {
467
- if (!params.ctx)
468
- return { allowed: true };
469
- const readinessModule = await lazyCodingReadiness();
470
- const contract = params.ctx.coding_readiness_contract;
471
- if (!contract) {
472
- return {
473
- allowed: true,
474
- reason_zh: "无编码就绪契约(非编码任务),放行",
475
- };
476
- }
477
- const result = readinessModule.evaluateCodingReadiness(contract, false, false, false);
478
- if (!result.allowed) {
479
- return {
480
- allowed: false,
481
- reason_zh: result.reason,
482
- missing_preconditions: result.missing_preconditions,
483
- };
484
- }
485
- return { allowed: true };
486
- }
487
- /**
488
- * 本地验收门 — 前端/全栈交付前必须有本地访问证据。
489
- * Local Docker / Browser Acceptance enforcement。
490
- */
491
- export async function checkLocalAcceptanceGate(params) {
492
- const acceptanceModule = await lazyLocalAcceptance();
493
- const requirement = acceptanceModule.requiresLocalAcceptance(params.hasFrontend, params.hasBackend, params.hasDockerCompose, params.hasDockerfile);
494
- if (!requirement.required)
495
- return { allowed: true };
496
- if (!params.ctx) {
497
- return {
498
- allowed: false,
499
- reason_zh: "需要本地验收但无任务上下文",
500
- required_but_missing: ["local_acceptance_evidence"],
501
- };
502
- }
503
- const evidence = params.ctx.local_acceptance_evidence;
504
- if (!evidence) {
505
- return {
506
- allowed: false,
507
- reason_zh: `项目需要本地验收(模式: ${requirement.run_mode})但缺少验收证据`,
508
- required_but_missing: ["local_acceptance_evidence", "final_access_url"],
509
- };
510
- }
511
- if (evidence.run_mode === "not_applicable") {
512
- return {
513
- allowed: false,
514
- reason_zh: "该项目需要本地验收,不得以 not_applicable 代替真实访问证据",
515
- required_but_missing: ["manual_review", "final_access_url"],
516
- };
517
- }
518
- const finalAccessResult = acceptanceModule.validateFinalAccess(evidence.final_access, requirement.run_mode);
519
- if (!finalAccessResult.passed) {
520
- return {
521
- allowed: false,
522
- reason_zh: `本地验收证据不完整: ${finalAccessResult.blocking_reasons.join("; ")}`,
523
- required_but_missing: ["validated_final_access"],
524
- };
525
- }
526
- return { allowed: true };
527
- }
528
- // ── S4 触发判定函数 ──
529
- // 不依赖 hasInstructionContract,基于 route + intent 风险信号判断是否需要 enforcement。
530
- // 关键设计: 不是所有 code_change 都触发,只有 intent 含高风险/复杂信号时才触发。
531
- // 低风险场景(skip_chat / direct_answer / 无风险信号的 code_change)不触发。
532
- const HIGH_IMPACT_KEYWORDS = /架构|技术选型|数据库|框架|多端|跨模块|高影响|高风险|migration|技术路线|选型|rework/i;
533
- const UNCERTAINTY_KEYWORDS = /不确定|方案选择|多选项|权衡|脑暴|brainstorm|多方案|选型|比较/i;
534
- const DETAIL_INTENSIVE_KEYWORDS = /多步骤|复杂|跨模块|高风险|多端|分布式|微服务/i;
535
- const LOW_RISK_ROUTES = new Set(["skip_chat", "direct_answer", "operation", "planning", "review", "source_extraction", "acceptance"]);
536
- /** 技术选型/架构/数据库/框架/高影响决策 → 需 decision sovereignty gate */
537
- export function requiresDecisionSovereignty(ctx, route) {
538
- if (!ctx)
539
- return false;
540
- const routeVal = route ?? ctx.classification?.route_decision?.route ?? ctx.route_decision?.route;
541
- if (!routeVal || LOW_RISK_ROUTES.has(routeVal))
542
- return false;
543
- // 所有路由都要求 intent 含高影响信号
544
- const hasHighImpact = ctx.intent && HIGH_IMPACT_KEYWORDS.test(ctx.intent);
545
- if (!hasHighImpact) {
546
- // instruction_contract 的 risk/high_impact 也可作为信号
547
- const ic = ctx.instruction_contract;
548
- if (!ic || (!ic.risk && !ic.high_impact))
549
- return false;
550
- if (ic.risk !== "high" && !ic.high_impact)
551
- return false;
552
- }
553
- // artifact_generation / analysis / code_change + 高影响 intent → 触发
554
- return true;
555
- }
556
- /** 多步骤/不确定/高风险任务 → 需 detail discipline gate */
557
- export function requiresDetailDiscipline(ctx, route) {
558
- if (!ctx)
559
- return false;
560
- const routeVal = route ?? ctx.classification?.route_decision?.route ?? ctx.route_decision?.route;
561
- if (!routeVal || LOW_RISK_ROUTES.has(routeVal))
562
- return false;
563
- // 复杂 intent 触发
564
- const hasComplexSignals = ctx.intent && DETAIL_INTENSIVE_KEYWORDS.test(ctx.intent);
565
- if (!hasComplexSignals) {
566
- const ic = ctx.instruction_contract;
567
- if (!ic || (!ic.risk && !ic.high_impact))
568
- return false;
569
- if (ic.risk !== "high" && !ic.high_impact)
570
- return false;
571
- }
572
- return true;
573
- }
574
- /** 高影响任务/架构设计/复杂编码/跨模块变更 → 需 first principles gate */
575
- export function requiresFirstPrinciples(ctx, route) {
576
- if (!ctx)
577
- return false;
578
- const routeVal = route ?? ctx.classification?.route_decision?.route ?? ctx.route_decision?.route;
579
- if (!routeVal || LOW_RISK_ROUTES.has(routeVal))
580
- return false;
581
- // 所有路由都要求 intent 含高影响信号
582
- const hasHighImpact = ctx.intent && HIGH_IMPACT_KEYWORDS.test(ctx.intent);
583
- if (!hasHighImpact) {
584
- const ic = ctx.instruction_contract;
585
- if (!ic || (!ic.risk && !ic.high_impact))
586
- return false;
587
- if (ic.risk !== "high" && !ic.high_impact)
588
- return false;
589
- }
590
- return true;
591
- }
592
- /** 不确定项/方案选择/多选项 → 需 brainstorm gate */
593
- export function requiresBrainstorm(ctx, route) {
594
- if (!ctx)
595
- return false;
596
- const routeVal = route ?? ctx.classification?.route_decision?.route ?? ctx.route_decision?.route;
597
- if (!routeVal || LOW_RISK_ROUTES.has(routeVal))
598
- return false;
599
- // 仅当 intent 含不确定性信号时才触发
600
- const hasUncertainty = ctx.intent && UNCERTAINTY_KEYWORDS.test(ctx.intent);
601
- if (!hasUncertainty)
602
- return false;
603
- if (routeVal === "analysis" || routeVal === "artifact_generation")
604
- return true;
605
- if (routeVal === "code_change")
606
- return true;
607
- const ic = ctx.instruction_contract;
608
- if (ic && ic.uncertainty)
609
- return true;
610
- return false;
611
- }
612
- /**
613
- * 技术选型决策门 — 高影响技术决策需用户确认。
614
- * Decision Sovereignty enforcement。
615
- * 不依赖 hasInstructionContract — 触发由 requiresDecisionSovereignty 判定。
616
- */
617
- export async function checkDecisionSovereigntyGate(params) {
618
- if (!params.ctx)
619
- return { allowed: true, not_applicable_with_reason: "无任务上下文" };
620
- const triggered = requiresDecisionSovereignty(params.ctx, params.route);
621
- if (!triggered) {
622
- return { allowed: true, not_applicable_with_reason: "非高影响技术决策场景,跳过 decision sovereignty gate" };
623
- }
624
- const decisionContract = params.ctx.technology_decision_contract;
625
- if (!decisionContract) {
626
- return { allowed: false, reason_zh: "高影响技术决策场景缺 technology_decision_contract,无法执行决策主权校验" };
627
- }
628
- const decisionModule = await lazyTechnologyDecision();
629
- const validation = decisionModule.validateTechnologyDecision(decisionContract);
630
- if (!validation.valid) {
631
- return { allowed: false, reason_zh: `技术选型决策校验失败: ${validation.violations.join("; ")}`, expected_schema: validation.expected_schema };
632
- }
633
- // 有决策记录时评估执行状态
634
- const decisionRecord = params.ctx.technology_decision_record;
635
- if (decisionRecord) {
636
- const evaluation = decisionModule.evaluateDecisionExecution(decisionContract, decisionRecord);
637
- if (evaluation.requires_human_gate && !decisionContract.human_gate_evidence) {
638
- return { allowed: false, reason_zh: "高影响技术决策需用户确认(human gate),请提供确认证据", requires_human_gate: true };
639
- }
640
- if (!evaluation.allowed) {
641
- return { allowed: false, reason_zh: evaluation.reason };
642
- }
643
- }
644
- else {
645
- // 无决策记录: 契约已验证通过,但需 human_gate_evidence 确认(如有高范围决策)
646
- if (decisionContract.human_gate_required && !decisionContract.human_gate_evidence) {
647
- return { allowed: false, reason_zh: "高影响技术决策需用户确认(human gate),请提供确认证据", requires_human_gate: true };
648
- }
649
- }
650
- return { allowed: true };
651
- }
652
- /**
653
- * 细节纪律门 — 复杂任务缺关键细节维度时阻断。
654
- * Detail Discipline enforcement。
655
- * 不依赖 hasInstructionContract — 触发由 requiresDetailDiscipline 判定。
656
- */
657
- export async function checkDetailDisciplineGate(params) {
658
- if (!params.ctx)
659
- return { allowed: true, not_applicable_with_reason: "无任务上下文" };
660
- const triggered = requiresDetailDiscipline(params.ctx, params.route);
661
- if (!triggered) {
662
- return { allowed: true, not_applicable_with_reason: "非复杂/多步骤任务场景,跳过 detail discipline gate" };
663
- }
664
- const detailContract = params.ctx.detail_discipline_contract;
665
- if (!detailContract) {
666
- return { allowed: false, reason_zh: "多步骤/复杂任务缺 detail_discipline_contract,无法执行细节纪律校验" };
667
- }
668
- const detailModule = await lazyDetailDiscipline();
669
- const check = detailModule.performDetailCheck(detailContract, detailContract.contract_id ?? "unknown", "implementation", params.ctx.provided_details ?? {});
670
- if (check.blocking) {
671
- const riskItems = detailModule.generateRiskItems(check);
672
- const blockingLabels = riskItems.filter(r => r.severity === "blocking").map(r => r.dimension ?? r.description);
673
- return { allowed: false, reason_zh: `任务方案缺关键细节: ${blockingLabels.join("; ")}`, missing_details: blockingLabels };
674
- }
675
- return { allowed: true };
676
- }
677
- /**
678
- * 第一性原理门 — 高影响任务需目标/约束/本质问题/权衡。
679
- * First Principles enforcement。
680
- * 不依赖 hasInstructionContract — 触发由 requiresFirstPrinciples 判定。
681
- */
682
- export async function checkFirstPrinciplesGate(params) {
683
- if (!params.ctx)
684
- return { allowed: true, not_applicable_with_reason: "无任务上下文" };
685
- const triggered = requiresFirstPrinciples(params.ctx, params.route);
686
- if (!triggered) {
687
- return { allowed: true, not_applicable_with_reason: "非高影响任务场景,跳过 first principles gate" };
688
- }
689
- const fpFrame = params.ctx.first_principles_frame;
690
- if (!fpFrame) {
691
- return { allowed: false, reason_zh: "高影响任务缺 first_principles_frame,无法执行第一性原理校验" };
692
- }
693
- const fpModule = await lazyFirstPrinciples();
694
- const validation = fpModule.validateFirstPrinciplesForHighImpact(fpFrame);
695
- if (!validation.passed) {
696
- return { allowed: false, reason_zh: `高影响任务缺第一性原理推理: ${validation.violations.join("; ")}`, failures: validation.violations, expected_schema: validation.expected_schema };
697
- }
698
- return { allowed: true };
699
- }
700
- /**
701
- * 脑暴/方案探索门 — 不确定项需多方案+推荐理由+用户确认。
702
- * Brainstorm Contract enforcement。
703
- * 不依赖 hasInstructionContract — 触发由 requiresBrainstorm 判定。
704
- */
705
- export async function checkBrainstormGate(params) {
706
- if (!params.ctx)
707
- return { allowed: true, not_applicable_with_reason: "无任务上下文" };
708
- const triggered = requiresBrainstorm(params.ctx, params.route);
709
- if (!triggered) {
710
- return { allowed: true, not_applicable_with_reason: "非不确定/方案选择场景,跳过 brainstorm gate" };
711
- }
712
- const brainstormSession = params.ctx.brainstorm_session;
713
- if (!brainstormSession) {
714
- return { allowed: false, reason_zh: "不确定项/方案选择缺 brainstorm_session,无法执行方案探索校验" };
715
- }
716
- const brainstormModule = await lazyBrainstormContract();
717
- const validation = brainstormModule.validateBrainstormSession(brainstormSession);
718
- if (!validation.valid) {
719
- return { allowed: false, reason_zh: `方案探索不完整: ${validation.violations.join("; ")}`, violations: validation.violations, expected_schema: validation.expected_schema };
720
- }
721
- // 脑暴推荐永远不能自动执行 — 需 Decision Sovereignty human gate
722
- const canAutoExec = brainstormModule.canBrainstormAutoExecute(brainstormSession);
723
- if (canAutoExec) {
724
- return { allowed: false, reason_zh: "脑暴推荐不能绕过用户确认,需通过 Decision Sovereignty human gate" };
725
- }
726
- return { allowed: true };
727
- }
728
- /**
729
- */
730
- export async function assessCepAfterVerification(params) {
731
- const cepModule = await import("../../engine/core_experience_principle.js");
732
- const result = cepModule.evaluateCoreExperiencePrinciple({
733
- task_id: params.task_id,
734
- workflow_id: "sf_verify",
735
- has_mainline_hooks: true,
736
- has_owner_contracts: true,
737
- natural_language_entry: true,
738
- requires_internal_contract_knowledge: false,
739
- user_path_steps: 3,
740
- has_failures: params.has_failures ?? false,
741
- hard_fail_downgraded: params.hard_fail_downgraded ?? false,
742
- forced_heavy_process: false,
743
- has_sufficient_evidence: params.has_verification_evidence,
744
- output_too_long_no_summary: false,
745
- report_only_no_repair: false,
746
- failed_but_marked_done: params.failed_but_marked_done ?? false,
747
- auto_repair_overreach: false,
748
- repair_reverified: false,
749
- outputs_raw_noise: false,
750
- });
751
- return {
752
- passed: result.passed,
753
- violations: result.violations.map((v) => ({
754
- principle: v.principle,
755
- severity: v.severity,
756
- reason_zh: v.reason_zh ?? "",
757
- required_action: v.required_action,
758
- })),
759
- evaluated_principles: result.evaluated_principles,
760
- };
761
- }
762
- /**
763
- * CEP 集成: 交付前 false completion 检查 — 从 sf_deliver handler 提取的真实主链路函数。
764
- * 返回 CEP 决策(blocked/repair_reverify/allowed),由 handler 和 gate 共用。
765
- */
766
- export async function assessCepBeforeDelivery(params) {
767
- const cepModule = await import("../../engine/core_experience_principle.js");
768
- const nfcResult = cepModule.evaluateNoFalseCompletion({
769
- verification_passed: params.verification_passed,
770
- build_passed: params.build_passed,
771
- browser_acceptance_passed: params.browser_acceptance_passed,
772
- guard_passed: params.guard_passed,
773
- evidence_sufficient: params.evidence_sufficient,
774
- current_status: params.current_status,
775
- });
776
- return {
777
- decision: nfcResult.decision,
778
- reason_zh: nfcResult.reason_zh ?? "",
779
- passed: nfcResult.decision === "completed",
780
- };
781
- }
782
- /**
783
- * CEP 集成: 工作流解析后评估 — 检查机制是否接入真实主链路、用户路径是否过短。
784
- */
785
- export async function assessCepAfterWorkflowResolve(params) {
786
- const cepModule = await import("../../engine/core_experience_principle.js");
787
- const result = cepModule.evaluateCoreExperiencePrinciple({
788
- task_id: params.task_id,
789
- workflow_id: "workflow_resolve",
790
- has_mainline_hooks: params.workflow_resolved,
791
- has_owner_contracts: params.workflow_resolved,
792
- natural_language_entry: true,
793
- requires_internal_contract_knowledge: false,
794
- user_path_steps: 3,
795
- has_failures: !params.workflow_resolved,
796
- hard_fail_downgraded: false,
797
- forced_heavy_process: false,
798
- has_sufficient_evidence: params.workflow_resolved,
799
- output_too_long_no_summary: false,
800
- report_only_no_repair: false,
801
- failed_but_marked_done: false,
802
- auto_repair_overreach: false,
803
- repair_reverified: false,
804
- outputs_raw_noise: false,
805
- });
806
- return {
807
- passed: result.passed,
808
- violations: result.violations.map((v) => ({
809
- principle: v.principle,
810
- severity: v.severity,
811
- reason_zh: v.reason_zh ?? "",
812
- })),
813
- evaluated_principles: result.evaluated_principles,
814
- };
815
- }
816
- /**
817
- * CEP 集成: 护栏评估后检查 — 硬规则是否被降级、低风险是否过重。
818
- */
819
- export async function assessCepAfterGuardEvaluation(params) {
820
- const cepModule = await import("../../engine/core_experience_principle.js");
821
- const result = cepModule.evaluateCoreExperiencePrinciple({
822
- task_id: params.task_id,
823
- workflow_id: "guard_evaluation",
824
- has_mainline_hooks: true,
825
- has_owner_contracts: true,
826
- natural_language_entry: true,
827
- requires_internal_contract_knowledge: false,
828
- user_path_steps: 3,
829
- has_failures: !params.guard_passed,
830
- hard_fail_downgraded: params.hard_fail_downgraded,
831
- forced_heavy_process: params.is_low_risk && !params.guard_passed,
832
- has_sufficient_evidence: params.guard_passed,
833
- output_too_long_no_summary: false,
834
- report_only_no_repair: false,
835
- failed_but_marked_done: false,
836
- auto_repair_overreach: false,
837
- repair_reverified: false,
838
- outputs_raw_noise: false,
839
- });
840
- return {
841
- passed: result.passed,
842
- violations: result.violations.map((v) => ({
843
- principle: v.principle,
844
- severity: v.severity,
845
- reason_zh: v.reason_zh ?? "",
846
- })),
847
- evaluated_principles: result.evaluated_principles,
848
- };
849
- }
850
- /**
851
- * CEP 集成: 修复重验证决策 — 检查是否假完成、是否进入正确修复路径。
852
- */
853
- export async function assessCepForRepairReverify(params) {
854
- const cepModule = await import("../../engine/core_experience_principle.js");
855
- const nfcResult = cepModule.evaluateNoFalseCompletion({
856
- verification_passed: params.verification_passed,
857
- build_passed: params.build_passed,
858
- browser_acceptance_passed: true,
859
- guard_passed: true,
860
- evidence_sufficient: params.evidence_sufficient,
861
- current_status: params.current_status,
862
- });
863
- return {
864
- decision: nfcResult.decision,
865
- reason_zh: nfcResult.reason_zh ?? "",
866
- passed: nfcResult.decision === "completed",
867
- };
868
- }
869
- /**
870
- * CEP 集成: 用户反馈输出质量 — 检查结论优先、摘要清晰、不隐藏失败、中文语义。
871
- */
872
- export async function assessCepForUserFeedback(params) {
873
- const cepModule = await import("../../engine/core_experience_principle.js");
874
- const cep = cepModule.evaluateUserVisibleOutput({
875
- has_conclusion_first: params.has_conclusion_first,
876
- has_clear_summary: params.has_clear_summary,
877
- has_actionable_next_step: params.has_actionable_next_step,
878
- exposes_internal_noise: params.exposes_internal_noise,
879
- hides_critical_failure: params.hides_critical_failure,
880
- chinese_semantic_first: params.chinese_semantic_first,
881
- });
882
- const logGov = await import("../../engine/log_governance.js");
883
- const logReport = logGov.evaluateFeedbackOutputQuality({
884
- output: [
885
- params.has_conclusion_first ? "结论优先" : "缺少结论",
886
- params.has_clear_summary ? "摘要清晰" : "摘要不足",
887
- params.has_actionable_next_step ? "下一步明确" : "下一步缺失",
888
- ].join(";"),
889
- critical_failure_hidden: params.hides_critical_failure,
890
- });
891
- return {
892
- passed: cep.passed && logReport.passed,
893
- issues_zh: [
894
- ...cep.issues_zh,
895
- ...logReport.findings.map((f) => f.message_zh),
896
- ],
897
- };
898
- }
899
- /**
900
- * 注册所有 MCP 工具到服务器实例。
901
- * @param server - McpServer 实例
902
- * @param deps - 工具依赖项(配置、知识索引、任务上下文)
903
- */
904
- export async function registerTools(server, deps) {
905
- debug("工具注册", "开始注册 MCP 工具...");
906
- const { config, knowledgeIndex, taskContext } = deps;
907
- const projectPath = config._projectPath || process.cwd();
908
- // H1: LLM Gateway — Token 预算熔断,防止单任务 Token 超支
909
- const gateway = deps.gateway ?? new (await lazyLLM()).LLMGateway();
910
- // H4: IO Controller — 工作区互斥锁,防止外部修改导致的静默覆盖
911
- const ioController = new (await lazyIO()).IOController(projectPath);
912
- // ── 统一网关 : 唯一工具调用边界 ──
913
- /** 计算 sf_status cancel 的动态 category */
914
- function computeEffectiveCategory(toolName, args, contract) {
915
- if (toolName === "sf_status" && (args.action === "cancel" || args.action === "archive_stale" || args.job_action === "job_cancel")) {
916
- return "normal_controlled";
917
- }
918
- return contract.category;
919
- }
920
- /** 计算 sf_status cancel 的动态 side_effects */
921
- function computeEffectiveSideEffects(toolName, args, contract) {
922
- if (toolName === "sf_status" && (args.action === "cancel" || args.action === "archive_stale" || args.job_action === "job_cancel")) {
923
- return ["task_context_write"];
924
- }
925
- return contract.side_effects;
926
- }
927
- /** State precheck: validate task status before contract guard */
928
- const STATE_PRECHECKS = {
929
- sf_accept: ["executing", "verifying", "retrying"],
930
- sf_verify: ["executing", "retrying"],
931
- sf_record_verification_execution: ["verifying", "executing"],
932
- sf_learn: ["verifying", "executing"],
933
- sf_expand: ["classifying", "expanding", "clarifying"],
934
- };
935
- const STATE_ERROR_LABELS = {
936
- sf_accept: "不可验收",
937
- sf_verify: "不可验证",
938
- sf_record_verification_execution: "不可录入验证结果",
939
- sf_learn: "不可学习",
940
- sf_expand: "不可膨胀",
941
- };
942
- /** 授权模型: explicit > dynamic write gate > destructive gate > workflow gate > category default */
943
- function checkAuth(toolName, args, contract, ctx, effectiveCategory) {
944
- // 1. 显式确认
945
- if (args.confirm === true || args.authorized === true || args.authorization_token) {
946
- return { required: true, granted: true, reason: "explicit confirmation" };
947
- }
948
- // 1b. sf_status 的写入型动作必须显式确认,即便普通查询本身允许自动维护状态。
949
- if (toolName === "sf_status" && (args.action === "cancel" || args.action === "archive_stale" || args.job_action === "job_cancel")) {
950
- return { required: true, granted: false, reason: "dynamic write upgrade requires explicit confirmation" };
951
- }
952
- // 2. 动态写入升级: cancel/job_cancel 从 read_only 变为 write → 必须确认
953
- if (effectiveCategory && effectiveCategory !== contract.category && effectiveCategory !== "read_only_bypass") {
954
- return { required: true, granted: false, reason: "dynamic write upgrade requires explicit confirmation" };
955
- }
956
- // 3. 破坏性副作用始终需要显式确认
957
- const destructive = ["git_commit", "git_push", "pr_create", "external_write"];
958
- if (contract.side_effects.some((e) => destructive.includes(e))) {
959
- return { required: true, granted: false, reason: "destructive side effects require explicit confirmation" };
960
- }
961
- // 4. 独立严格工具(无 workflow 要求,无 task context)→ 由 handler 自行检查
962
- if (contract.category === "strict_controlled" && !ctx && !contract.requires_workflow) {
963
- if (contract.requires_authorization) {
964
- return { required: true, granted: false, reason: "standalone strict tool requires explicit confirmation" };
965
- }
966
- return { required: false, granted: true, reason: "standalone strict tool" };
967
- }
968
- // 5. strict_controlled 的 workflow 合同门控
969
- if (contract.category === "strict_controlled" && ctx?.last_tool_trace) {
970
- const allowed = ctx.last_tool_trace.next_allowed_tools ?? [];
971
- if (allowed.includes(toolName)) {
972
- return { required: true, granted: true, reason: "workflow contract gate" };
973
- }
974
- }
975
- // 5b. 基于状态的回退: 严格工具且任务处于有效状态但无 tool_trace
976
- if (contract.category === "strict_controlled" && ctx && !ctx.last_tool_trace && contract.requires_workflow) {
977
- const validStates = STATE_PRECHECKS[toolName];
978
- if (validStates && validStates.includes(ctx.status)) {
979
- return { required: true, granted: true, reason: "task in valid state for tool" };
980
- }
981
- }
982
- // 5c. 非严格工具: 自动授权,除非 requires_authorization
983
- if (contract.category === "read_only_bypass" || contract.category === "normal_controlled") {
984
- if (contract.requires_authorization) {
985
- return { required: true, granted: false, reason: "tool requires explicit authorization" };
986
- }
987
- return { required: false, granted: true, reason: "non-strict category" };
988
- }
989
- return { required: true, granted: false, reason: "no authorization source" };
990
- }
991
- function registerSafeTool(name, desc, schema, handler) {
992
- server.tool(name, desc, schema, async (args) => {
993
- const invocationId = `inv-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
994
- const taskId = args.task_id;
995
- const contract = findToolInvocationContractByName(name);
996
- // 无合同 → hard fail
997
- if (!contract) {
998
- return {
999
- content: [{ type: "text", text: JSON.stringify({ error: `工具 ${name} 未注册契约` }) }],
1000
- isError: true,
1001
- };
1002
- }
1003
- const effectiveCategory = computeEffectiveCategory(name, args, contract);
1004
- const effectiveSideEffects = computeEffectiveSideEffects(name, args, contract);
1005
- // 加载 TaskContext
1006
- let ctx = null;
1007
- if (taskId) {
1008
- ctx = await taskContext.load(taskId);
1009
- }
1010
- // 状态预检: 在合同守卫之前验证任务状态
1011
- if (taskId && STATE_PRECHECKS[name] && ctx) {
1012
- const validStates = STATE_PRECHECKS[name];
1013
- if (!validStates.includes(ctx.status)) {
1014
- const label = STATE_ERROR_LABELS[name] ?? "状态不正确";
1015
- return {
1016
- content: [{ type: "text", text: JSON.stringify({
1017
- error: `任务状态 ${ctx.status} ${label},需要 ${validStates.join(" 或 ")}`,
1018
- status: ctx.status,
1019
- }) }],
1020
- isError: true,
1021
- };
1022
- }
1023
- }
1024
- // 严格受控但缺少 task_id
1025
- const isStandaloneStrict = !contract.requires_workflow;
1026
- if (contract.category === "strict_controlled" && !taskId && !isStandaloneStrict) {
1027
- return {
1028
- content: [{ type: "text", text: JSON.stringify({ error: `strict controlled 工具 ${name} 需要 task_id` }) }],
1029
- isError: true,
1030
- };
1031
- }
1032
- // 授权检查
1033
- const authorization = checkAuth(name, args, contract, ctx ?? undefined, effectiveCategory);
1034
- // 授权拒绝 → 仅对网关级拒绝执行 hard fail
1035
- // (动态写入升级、破坏性操作、无授权源的 strict_controlled)
1036
- // Handler 级授权(如 sf_capability_update confirm)由 handler 自行处理
1037
- const gatewayDenial = !authorization.granted &&
1038
- authorization.reason !== "tool requires explicit authorization";
1039
- if (gatewayDenial) {
1040
- const blockedTrace = createToolTrace({
1041
- tool_name: name, invocation_id: invocationId, task_id: taskId,
1042
- actual_side_effects: effectiveSideEffects,
1043
- next_allowed_tools: contract.default_next_tools,
1044
- forbidden_tools: contract.forbidden_next_tools,
1045
- authorization, bypass: undefined,
1046
- });
1047
- const authViolation = {
1048
- invocation_id: invocationId, tool_name: name,
1049
- violation_type: "missing_authorization", severity: "hard_fail",
1050
- reason: authorization.reason ?? "authorization denied",
1051
- recovery: "提供 confirm=true / authorized=true / authorization_token",
1052
- };
1053
- if (taskId && ctx) {
1054
- await taskContext.setToolTrace(taskId, blockedTrace, [authViolation]);
1055
- }
1056
- return {
1057
- content: [{ type: "text", text: JSON.stringify({
1058
- error: authViolation.reason, violation: authViolation,
1059
- tool_trace: blockedTrace,
1060
- next_allowed_tools: contract.default_next_tools,
1061
- forbidden_tools: contract.forbidden_next_tools,
1062
- }) }],
1063
- isError: true,
1064
- };
1065
- }
1066
- // read_only_bypass 的旁路处理
1067
- const bypass = effectiveCategory === "read_only_bypass"
1068
- ? { allowed: true, reason: "read_only" } : undefined;
1069
- // 计划前置门: 在合同验证之前检查 — 写工具必须有 plan_proposal_gate
1070
- // sf_classify 创建任务、sf_expand 创建 plan_proposal_gate — 两者豁免
1071
- const hasWriteEffect = hasWriteSideEffect(effectiveSideEffects);
1072
- const planGateExempt = name === "sf_classify" || name === "sf_expand";
1073
- if (hasWriteEffect && taskId && !planGateExempt) {
1074
- const pgResult = checkWriteToolPlanGate({ ctx, toolName: name, sideEffects: effectiveSideEffects });
1075
- if (!pgResult.allowed) {
1076
- const planViolation = {
1077
- invocation_id: invocationId, tool_name: name,
1078
- violation_type: "guard_blocked", severity: "hard_fail",
1079
- reason: pgResult.reason ?? "执行前缺少 Plan Proposal Gate",
1080
- recovery: "先调用 sf_classify → sf_expand → 设置 plan_proposal_gate 后再执行此工具",
1081
- };
1082
- const blockedTrace = createToolTrace({
1083
- tool_name: name, invocation_id: invocationId, task_id: taskId,
1084
- actual_side_effects: effectiveSideEffects,
1085
- next_allowed_tools: contract.default_next_tools,
1086
- forbidden_tools: contract.forbidden_next_tools,
1087
- authorization, bypass,
1088
- });
1089
- await taskContext.setToolTrace(taskId, blockedTrace, [planViolation]);
1090
- return {
1091
- content: [{ type: "text", text: JSON.stringify({
1092
- error: planViolation.reason,
1093
- violation: planViolation,
1094
- diagnostic_code: pgResult.diagnostic_code ?? TOOL_DIAGNOSTIC_CODES.planGate,
1095
- recovery: planViolation.recovery,
1096
- }) }],
1097
- isError: true,
1098
- };
1099
- }
1100
- const planGateCheck = taskContext.checkPlanGateBeforeWrite(ctx);
1101
- if (!planGateCheck.allowed) {
1102
- const planViolation = {
1103
- invocation_id: invocationId, tool_name: name,
1104
- violation_type: "guard_blocked", severity: "hard_fail",
1105
- reason: planGateCheck.reason_zh,
1106
- recovery: "请先通过 PlanProposalFirstGate 生成并确认执行计划",
1107
- };
1108
- const blockedTrace = createToolTrace({
1109
- tool_name: name, invocation_id: invocationId, task_id: taskId,
1110
- actual_side_effects: effectiveSideEffects,
1111
- next_allowed_tools: contract.default_next_tools,
1112
- forbidden_tools: contract.forbidden_next_tools,
1113
- authorization, bypass,
1114
- });
1115
- await taskContext.setToolTrace(taskId, blockedTrace, [planViolation]);
1116
- return {
1117
- content: [{ type: "text", text: JSON.stringify({
1118
- error: planViolation.reason,
1119
- violation: planViolation,
1120
- diagnostic_code: TOOL_DIAGNOSTIC_CODES.planGate,
1121
- recovery: planViolation.recovery,
1122
- }) }],
1123
- isError: true,
1124
- };
1125
- }
1126
- }
1127
- // 施工指令契约门: 写操作前检查 instruction_contract 状态
1128
- if (hasWriteEffect && taskId) {
1129
- const instrResult = await checkInstructionContractGate({ ctx, toolName: name, sideEffects: effectiveSideEffects, task_id: taskId, taskContextMgr: taskContext });
1130
- if (!instrResult.allowed) {
1131
- const instrViolation = {
1132
- invocation_id: invocationId, tool_name: name,
1133
- violation_type: "guard_blocked", severity: "hard_fail",
1134
- reason: instrResult.reason ?? "施工指令未就绪",
1135
- recovery: "请先完善施工指令(目标、范围、非目标、落点、验收标准、禁止绕过项)",
1136
- };
1137
- const instrTrace = createToolTrace({
1138
- tool_name: name, invocation_id: invocationId, task_id: taskId,
1139
- actual_side_effects: effectiveSideEffects,
1140
- next_allowed_tools: contract.default_next_tools,
1141
- forbidden_tools: contract.forbidden_next_tools,
1142
- authorization, bypass,
1143
- });
1144
- await taskContext.setToolTrace(taskId, instrTrace, [instrViolation]);
1145
- return {
1146
- content: [{ type: "text", text: JSON.stringify({
1147
- error: instrViolation.reason,
1148
- violation: instrViolation,
1149
- diagnostic_code: instrResult.diagnostic_code ?? TOOL_DIAGNOSTIC_CODES.instructionContract,
1150
- recovery: instrViolation.recovery,
1151
- }) }],
1152
- isError: true,
1153
- };
1154
- }
1155
- }
1156
- // 问题六十二: MCP 写入路径同样必须消费设计产物包状态,不能绕开 CLI hook。
1157
- if (hasWriteEffect && taskId) {
1158
- const designWriteGate = checkDesignArtifactWriteGate({ ctx, toolName: name, sideEffects: effectiveSideEffects });
1159
- if (!designWriteGate.allowed) {
1160
- const designViolation = {
1161
- invocation_id: invocationId, tool_name: name,
1162
- violation_type: "guard_blocked", severity: "hard_fail",
1163
- reason: designWriteGate.reason ?? "设计产物包未达到实现就绪状态",
1164
- recovery: "仅可继续补充设计资产并执行 sf_verify 真实复验;通过前不得写入业务实现",
1165
- };
1166
- const designTrace = createToolTrace({
1167
- tool_name: name, invocation_id: invocationId, task_id: taskId,
1168
- actual_side_effects: effectiveSideEffects,
1169
- next_allowed_tools: contract.default_next_tools,
1170
- forbidden_tools: contract.forbidden_next_tools,
1171
- authorization, bypass,
1172
- });
1173
- await taskContext.setToolTrace(taskId, designTrace, [designViolation]);
1174
- return {
1175
- content: [{ type: "text", text: JSON.stringify({
1176
- error: designViolation.reason,
1177
- violation: designViolation,
1178
- diagnostic_code: designWriteGate.diagnostic_code,
1179
- recovery: designViolation.recovery,
1180
- }) }],
1181
- isError: true,
1182
- };
1183
- }
1184
- }
1185
- // 用户项目知识门禁: review/verify/deliver 不能绕过不可消费的项目 hard rule。
1186
- if (["sf_review", "sf_verify", "sf_deliver"].includes(name)) {
1187
- const { evaluateLifecycleKnowledgeDecision } = await import("../../engine/lifecycle_knowledge_contract.js");
1188
- const lifecycleStage = name === "sf_review" ? "implementation" : name === "sf_verify" ? "testing" : "delivery";
1189
- const lifecycleDecision = evaluateLifecycleKnowledgeDecision({
1190
- projectPath,
1191
- consumer: name,
1192
- intent: ctx?.intent ?? name,
1193
- route: name === "sf_review" ? "review" : name === "sf_verify" ? "verification" : "delivery",
1194
- lifecycle_stage: lifecycleStage,
1195
- changed_files: Array.isArray(args.changed_files) ? args.changed_files : ctx?.execution?.changed_files ?? [],
1196
- verified_files: Array.isArray(args.changed_files) ? args.changed_files : ctx?.execution?.changed_files ?? [],
1197
- traceability_ids: [
1198
- ...(ctx?.traceability_binding?.requirement_ids ?? []),
1199
- ...(ctx?.traceability_binding?.prototype_ids ?? []),
1200
- ...(ctx?.traceability_binding?.architecture_ids ?? []),
1201
- ...(ctx?.traceability_binding?.detail_design_ids ?? []),
1202
- ...(ctx?.traceability_binding?.phase_ids ?? []),
1203
- ...(ctx?.traceability_binding?.slice_ids ?? []),
1204
- ...(ctx?.traceability_binding?.acceptance_ids ?? []),
1205
- ],
1206
- config,
1207
- task_id: taskId,
1208
- require_design_audit: false,
1209
- enforce_control_plane: name !== "sf_review",
1210
- generation_traces: [
1211
- ...(ctx?.classification ? [{ tool_name: "sf_classify", task_id: taskId, status: "passed", evidence_kind: "result" }] : []),
1212
- ...(ctx?.expansion ? [{ tool_name: "sf_expand", task_id: taskId, status: "passed", evidence_kind: "result" }] : []),
1213
- ...(name === "sf_verify" ? [{ tool_name: "sf_verify", task_id: taskId, status: "blocked", evidence_kind: "plan" }] : []),
1214
- ],
1215
- selection_limit: 8,
1216
- });
1217
- if (lifecycleDecision.hard_fail_count > 0) {
1218
- const hardFindings = lifecycleDecision.findings
1219
- .filter((finding) => finding.severity === "hard_fail")
1220
- .map((finding) => `[${finding.code}] ${finding.message_zh}`);
1221
- const pkViolation = {
1222
- invocation_id: invocationId,
1223
- tool_name: name,
1224
- violation_type: "guard_blocked",
1225
- severity: "hard_fail",
1226
- reason: lifecycleDecision.decision_summary_zh,
1227
- recovery: lifecycleDecision.recovery_commands.join(";") || "运行 soloforge next 查看统一生命周期知识合同阻断项",
1228
- };
1229
- const pkTrace = createToolTrace({
1230
- tool_name: name, invocation_id: invocationId, task_id: taskId,
1231
- actual_side_effects: effectiveSideEffects,
1232
- next_allowed_tools: ["sf_expand", "sf_status"],
1233
- forbidden_tools: ["sf_review", "sf_verify", "sf_deliver"],
1234
- authorization, bypass,
1235
- });
1236
- if (taskId && ctx)
1237
- await taskContext.setToolTrace(taskId, pkTrace, [pkViolation]);
1238
- return {
1239
- content: [{ type: "text", text: JSON.stringify({
1240
- error: pkViolation.reason,
1241
- violation: pkViolation,
1242
- diagnostic_code: TOOL_DIAGNOSTIC_CODES.projectKnowledgeBlocked,
1243
- findings: hardFindings,
1244
- lifecycle_knowledge_decision: {
1245
- contract_id: lifecycleDecision.contract_id,
1246
- lifecycle_stage: lifecycleDecision.lifecycle_stage,
1247
- authoritative_paths: lifecycleDecision.authoritative_paths,
1248
- recovery_commands: lifecycleDecision.recovery_commands,
1249
- },
1250
- recovery: pkViolation.recovery,
1251
- }) }],
1252
- isError: true,
1253
- };
1254
- }
1255
- }
1256
- // 合同验证
1257
- const lastTrace = ctx?.last_tool_trace;
1258
- // 为动态工具构建有效的合同覆盖(如 sf_status cancel)
1259
- let contractOverride;
1260
- if (effectiveCategory !== contract.category || effectiveSideEffects !== contract.side_effects) {
1261
- contractOverride = { ...contract, category: effectiveCategory, side_effects: effectiveSideEffects };
1262
- }
1263
- // Workflow ID: 仅来自真实的 expansion trace
1264
- const explicitWorkflowId = ctx?.expansion?.workflow_trace?.workflow_id;
1265
- const violations = validateToolInvocation({
1266
- tool_name: name,
1267
- current_next_allowed: lastTrace?.next_allowed_tools ?? [],
1268
- current_forbidden: lastTrace?.forbidden_tools ?? [],
1269
- authorization,
1270
- bypass,
1271
- actual_side_effects: effectiveSideEffects,
1272
- workflow_id: explicitWorkflowId,
1273
- _contractOverride: contractOverride,
1274
- });
1275
- // 基于状态的回退: 将 contract_state_mismatch 从 hard_fail 降级为 require_human
1276
- if (authorization.reason === "task in valid state for tool") {
1277
- for (const v of violations) {
1278
- if (v.violation_type === "contract_state_mismatch" && v.severity === "hard_fail") {
1279
- v.severity = "require_human";
1280
- v.reason += " (state-based fallback: no real workflow_id)";
1281
- }
1282
- }
1283
- }
1284
- // Hard-fail 违规 → 阻止
1285
- const hardFail = violations.find(v => v.severity === "hard_fail");
1286
- if (hardFail) {
1287
- const blockedTrace = createToolTrace({
1288
- tool_name: name, invocation_id: invocationId, task_id: taskId,
1289
- actual_side_effects: effectiveSideEffects,
1290
- next_allowed_tools: contract.default_next_tools,
1291
- forbidden_tools: contract.forbidden_next_tools,
1292
- authorization, bypass,
1293
- });
1294
- if (taskId && ctx) {
1295
- await taskContext.setToolTrace(taskId, blockedTrace, violations);
1296
- }
1297
- return {
1298
- content: [{ type: "text", text: JSON.stringify({
1299
- error: hardFail.reason, violation: hardFail,
1300
- tool_trace: blockedTrace,
1301
- next_allowed_tools: contract.default_next_tools,
1302
- forbidden_tools: contract.forbidden_next_tools,
1303
- }) }],
1304
- isError: true,
1305
- };
1306
- }
1307
- // 执行 handler
1308
- try {
1309
- const raw = await handler(args);
1310
- // 如果 handler 直接返回 { content } 则透传
1311
- if (raw && typeof raw === "object" && "content" in raw && Array.isArray(raw.content)) {
1312
- return raw;
1313
- }
1314
- // 从 { result } 模式中提取数据
1315
- const data = raw?.result !== undefined ? raw.result : raw;
1316
- const hasError = !!(data && typeof data === "object" && "error" in data);
1317
- const recoveryNextTools = hasError && Array.isArray(data.recovery_next_tools)
1318
- ? data.recovery_next_tools
1319
- : contract.default_next_tools;
1320
- const recoveryForbiddenTools = hasError && Array.isArray(data.recovery_forbidden_tools)
1321
- ? data.recovery_forbidden_tools
1322
- : contract.forbidden_next_tools;
1323
- // 构建 trace;失败处理器可显式开放修复重验路径
1324
- const trace = createToolTrace({
1325
- tool_name: name, invocation_id: invocationId, task_id: taskId,
1326
- workflow_id: ctx?.expansion?.workflow_trace?.workflow_id,
1327
- actual_side_effects: effectiveSideEffects,
1328
- next_allowed_tools: recoveryNextTools,
1329
- forbidden_tools: recoveryForbiddenTools,
1330
- authorization, bypass,
1331
- });
1332
- // 将 trace 写入 TaskContext
1333
- if (taskId) {
1334
- await taskContext.setToolTrace(taskId, trace, violations.length > 0 ? violations : undefined);
1335
- }
1336
- // 用 trace + next/forbidden 装饰响应
1337
- const response = {
1338
- ...data,
1339
- tool_trace: trace,
1340
- next_allowed_tools: recoveryNextTools,
1341
- forbidden_tools: recoveryForbiddenTools,
1342
- };
1343
- // 基于状态的回退: 在响应中暴露降级 workflow
1344
- if (authorization.reason === "task in valid state for tool") {
1345
- response.degraded_workflow = true;
1346
- response.workflow_source = "state-based-fallback";
1347
- }
1348
- return {
1349
- content: [{ type: "text", text: JSON.stringify(response, null, 2) }],
1350
- isError: hasError ? true : undefined,
1351
- };
1352
- }
1353
- catch (err) {
1354
- const errorNextTools = name === "sf_expand"
1355
- ? ["sf_expand", "sf_status", "sf_debug", "sf_governance_report"]
1356
- : contract.default_next_tools;
1357
- const errorForbiddenTools = name === "sf_expand"
1358
- ? ["sf_verify", "sf_review", "sf_deliver", "sf_scaffold"]
1359
- : contract.forbidden_next_tools;
1360
- if (name === "sf_expand" && taskId) {
1361
- try {
1362
- await taskContext.updateStatus(taskId, "failed");
1363
- }
1364
- catch { /* best effort */ }
1365
- }
1366
- const errorTrace = createToolTrace({
1367
- tool_name: name, invocation_id: invocationId, task_id: taskId,
1368
- actual_side_effects: effectiveSideEffects,
1369
- next_allowed_tools: errorNextTools,
1370
- forbidden_tools: errorForbiddenTools,
1371
- authorization, bypass,
1372
- });
1373
- if (taskId) {
1374
- try {
1375
- await taskContext.setToolTrace(taskId, errorTrace);
1376
- }
1377
- catch { /* best effort */ }
1378
- }
1379
- return {
1380
- content: [{ type: "text", text: JSON.stringify({
1381
- error: err instanceof Error ? err.message : String(err),
1382
- tool_trace: errorTrace,
1383
- next_allowed_tools: errorNextTools,
1384
- forbidden_tools: errorForbiddenTools,
1385
- }) }],
1386
- isError: true,
1387
- };
1388
- }
1389
- });
1390
- }
1391
- // 加载认知锚点上下文 — 必须提供相关性参数,禁止全量加载
1392
- async function loadRelevantAnchors(query) {
1393
- debug("工具注册", "加载认知锚点");
1394
- return _loadRelevantAnchorsInner(query);
1395
- }
1396
- async function _loadRelevantAnchorsInner(query) {
1397
- const stateDir = taskContext.getStateDir();
1398
- const mapPath = path.join(stateDir, "cognitive.map.json");
1399
- const mapData = (await lazyAnchor()).readMapJson(mapPath);
1400
- if (!mapData || mapData.anchors.length === 0)
1401
- return undefined;
1402
- const existingFiles = new Set();
1403
- try {
1404
- for (const anchor of mapData.anchors) {
1405
- for (const ref of anchor.source_refs) {
1406
- if (ref.type === "file" && await fsp.access(path.join(projectPath, ref.ref)).then(() => true, () => false)) {
1407
- existingFiles.add(ref.ref);
1408
- }
1409
- }
1410
- }
1411
- }
1412
- catch { /* ignore */ }
1413
- const checked = (await lazyAnchor()).checkAnchorStaleness(mapData.anchors, existingFiles);
1414
- // 必须有 module 或 file_paths,否则不返回任何锚点(禁止全量加载)
1415
- if (!query.module && (!query.file_paths || query.file_paths.length === 0))
1416
- return undefined;
1417
- // 收集与任意提供的 file_paths 或 module 匹配的锚点
1418
- const seen = new Set();
1419
- const relevant = [];
1420
- if (query.module) {
1421
- for (const a of (await lazyAnchor()).filterRelevantAnchors(checked, { module: query.module })) {
1422
- if (!seen.has(a.anchor_id)) {
1423
- seen.add(a.anchor_id);
1424
- relevant.push(a);
1425
- }
1426
- }
1427
- }
1428
- if (query.file_paths) {
1429
- for (const fp of query.file_paths) {
1430
- for (const a of (await lazyAnchor()).filterRelevantAnchors(checked, { file_path: fp })) {
1431
- if (!seen.has(a.anchor_id)) {
1432
- seen.add(a.anchor_id);
1433
- relevant.push(a);
1434
- }
1435
- }
1436
- }
1437
- }
1438
- if (relevant.length === 0)
1439
- return undefined;
1440
- return relevant.map((a) => ({
1441
- anchor_id: a.anchor_id,
1442
- module: a.module,
1443
- summary: a.core_contracts.slice(0, 3).join("; "),
1444
- stale_anchor: a.stale_anchor,
1445
- }));
1446
- }
1447
- debug("工具注册", "批量注册核心/辅助/知识维护工具...");
1448
- // ── sf_classify: 意图分类入口,创建任务上下文并返回分类结果 ──
1449
- registerSafeTool("sf_classify", "分析开发者意图,返回任务类型、风险、复杂度和执行策略", ClassifySchema, async (args) => {
1450
- const asksForNavigation = /(?:下一步|继续(?:做|执行|开发)?|现在(?:可以|能)(?:开始)?(?:写代码|编码|开发|测试|交付)|接下来(?:做什么|该做什么)|该(?:做什么|怎么继续))/i.test(args.intent);
1451
- if (asksForNavigation) {
1452
- const navigation = await (await lazyNavigation()).planNextAction(projectPath);
1453
- return {
1454
- result: {
1455
- status: "navigation_required",
1456
- reason_zh: "检测到阶段推进意图,必须先依据 SoloForge 状态规划下一步",
1457
- navigation,
1458
- },
1459
- };
1460
- }
1461
- // 检查是否存在进行中的任务
1462
- const existing = await taskContext.getCurrentTask();
1463
- if (existing && !["done", "failed"].includes(existing.status)) {
1464
- const navigation = await (await lazyNavigation()).planNextAction(projectPath);
1465
- if (navigation.stale_task?.is_stale) {
1466
- return {
1467
- result: {
1468
- status: "stale_task_requires_resolution",
1469
- error: "存在陈旧任务指针,必须先选择恢复、归档或开始新任务",
1470
- existing_task_id: existing.task_id,
1471
- existing_status: existing.status,
1472
- navigation,
1473
- hint: "先调用 sf_navigation 查看可执行处理步骤,不得绕过 SoloForge 状态直接分析或编码",
1474
- },
1475
- };
1476
- }
1477
- return {
1478
- result: {
1479
- error: "存在未完成的任务",
1480
- warning: "存在未完成的任务",
1481
- existing_task_id: existing.task_id,
1482
- existing_status: existing.status,
1483
- existing_intent: existing.intent,
1484
- hint: "调用 sf_status action=cancel 取消旧任务,或继续完成它",
1485
- },
1486
- };
1487
- }
1488
- // 创建任务上下文
1489
- const ctx = await taskContext.create(args.intent, config.product_profile);
1490
- const input = { intent: args.intent, project_path: projectPath, task_id: ctx.task_id };
1491
- const classification = (await lazyClassifier()).classify(input);
1492
- // 存储分类结果
1493
- await taskContext.setClassification(ctx.task_id, classification);
1494
- if (!(await lazyIntentRouter()).shouldEnterSoloForge(classification?.route_decision)) {
1495
- await taskContext.updateStatus(ctx.task_id, "done");
1496
- }
1497
- return {
1498
- result: {
1499
- task_id: ctx.task_id,
1500
- ...classification,
1501
- },
1502
- };
1503
- });
1504
- // ── sf_expand: 意图膨胀,生成结构化 prompt 并注入计划上下文 ──
1505
- registerSafeTool("sf_expand", "将意图膨胀为结构化 prompt,包含 scope、验收标准和知识匹配。当存在计划时自动注入当前阶段上下文和输出模板", ExpandSchema, async (args) => {
1506
- const ctx = await taskContext.load(args.task_id);
1507
- if (!ctx || !ctx.classification) {
1508
- return { result: { error: "任务不存在或尚未分类,请先调用 sf_classify" } };
1509
- }
1510
- // 合并校验 + 应用:ctx 已存储值 → args 覆盖值,统一解析和规范化
1511
- let needsSave = false;
1512
- for (const field of CONTRACT_OBJECT_FIELDS) {
1513
- // args 优先,其次 ctx 已存储值
1514
- const raw = args[field] ?? ctx[field];
1515
- if (!raw)
1516
- continue;
1517
- const parsed = parseContractObject(raw, field);
1518
- if (parsed.error)
1519
- return { result: { error: parsed.error, status: "invalid_input" } };
1520
- if (parsed.value) {
1521
- ctx[field] = field === "decision_workshop"
1522
- ? ((await lazyDecisionWorkshop()).normalizeDecisionWorkshopContract(parsed.value, args.task_id) ?? parsed.value)
1523
- : parsed.value;
1524
- needsSave = true;
1525
- }
1526
- }
1527
- if (needsSave)
1528
- await taskContext.save(ctx);
1529
- // 状态守卫:classifying/expanding/clarifying/failed → expanding
1530
- if (ctx.status === "classifying" || ctx.status === "clarifying" || ctx.status === "failed") {
1531
- await taskContext.updateStatus(args.task_id, "expanding");
1532
- ctx.status = "expanding";
1533
- }
1534
- else if (ctx.status !== "expanding") {
1535
- return {
1536
- result: { error: `任务状态 ${ctx.status} 不可膨胀,需要 classifying 或 expanding`, status: ctx.status },
1537
- };
1538
- }
1539
- // 构建计划上下文(如果存在计划)
1540
- let planContext;
1541
- if (ctx.planning && ctx.planning.sub_tasks.length > 0 && ctx.planning.current_step_index < ctx.planning.sub_tasks.length) {
1542
- const currentStep = ctx.planning.sub_tasks[ctx.planning.current_step_index];
1543
- const previousOutputs = {};
1544
- // 读取前序步骤的产出文件(P3: 产物系统)
1545
- for (let i = 0; i < ctx.planning.current_step_index; i++) {
1546
- const step = ctx.planning.sub_tasks[i];
1547
- if (step.output_path) {
1548
- try {
1549
- const fs = await import("node:fs/promises");
1550
- const content = await fs.readFile(step.output_path, "utf-8");
1551
- previousOutputs[step.title] = content;
1552
- }
1553
- catch {
1554
- // 文件不存在则跳过
1555
- }
1556
- }
1557
- }
1558
- planContext = { current_step: currentStep, previous_outputs: previousOutputs };
1559
- }
1560
- // H1: Token 预算检查 — advisory 模式,仅警告不阻断
1561
- gateway.beginTask(args.task_id);
1562
- let h1Warning;
1563
- try {
1564
- const gateResult = gateway.request("solution_brainstorm");
1565
- if (!gateResult.allowed) {
1566
- h1Warning = { warning: `H1 advisory: ${gateResult.reason}`, budget_remaining: gateResult.remaining_budget };
1567
- }
1568
- }
1569
- catch (e) {
1570
- h1Warning = { warning: `H1 advisory: ${e.message}`, budget_remaining: 0 };
1571
- }
1572
- // H4: advisory-only — 不获取持久锁,仅检查当前锁定状态
1573
- let h4LockWarning;
1574
- const lockStatus = await ioController.isLocked();
1575
- if (lockStatus.locked && lockStatus.task_id !== args.task_id) {
1576
- h4LockWarning = `H4 advisory: 工作区已被任务 ${lockStatus.task_id} 锁定(${lockStatus.reason ?? "未知"}),当前 H4 未进入强制层`;
1577
- }
1578
- let expansion;
1579
- try {
1580
- expansion = await (await lazyExpander()).expand({
1581
- intent: ctx.intent,
1582
- classification: ctx.classification,
1583
- projectPath,
1584
- config,
1585
- knowledgeIndex,
1586
- clarificationAnswers: args.clarification_answers,
1587
- route_decision: ctx.classification?.route_decision,
1588
- plan_context: planContext,
1589
- input_material_confirmations: args.input_material_confirmations,
1590
- task_id: args.task_id,
1591
- brainstorm_session: ctx.brainstorm_session ?? undefined,
1592
- });
1593
- }
1594
- catch (expandErr) {
1595
- // 尝试回退到 failed 状态,避免任务停留在 expanding
1596
- try {
1597
- await taskContext.updateStatus(args.task_id, "failed");
1598
- }
1599
- catch {
1600
- // 状态转换非法(如已非 expanding),忽略
1601
- }
1602
- throw expandErr;
1603
- }
1604
- finally {
1605
- if (!h1Warning)
1606
- gateway.completeOperation();
1607
- gateway.endTask();
1608
- }
1609
- expansion.task_id = args.task_id;
1610
- const projectRoot = await fsp.realpath(projectPath);
1611
- const referencedMaterialPaths = new Set((expansion.input_materials ?? [])
1612
- .map((material) => material.path_or_ref)
1613
- .filter((materialPath) => typeof materialPath === "string" && materialPath.length > 0)
1614
- .map((materialPath) => path.resolve(projectRoot, normalizePathCandidate(materialPath))));
1615
- const _confirmedCandidates = (args.input_material_confirmations ?? [])
1616
- .map((materialPath) => path.resolve(projectRoot, normalizePathCandidate(materialPath)))
1617
- .filter((absolutePath) => isSameOrDescendantPath(absolutePath, projectRoot, { caseSensitive: false }))
1618
- .filter((absolutePath) => referencedMaterialPaths.has(absolutePath));
1619
- const confirmedProjectSourcePaths = [];
1620
- for (const absolutePath of _confirmedCandidates) {
1621
- try {
1622
- if ((await fsp.stat(absolutePath)).isFile()
1623
- && (await fsp.realpath(absolutePath)).startsWith(`${projectRoot}${path.sep}`)) {
1624
- confirmedProjectSourcePaths.push(absolutePath);
1625
- }
1626
- }
1627
- catch {
1628
- // 跳过无效路径
1629
- }
1630
- }
1631
- const registerConfirmedProjectSources = (registry) => {
1632
- for (const absolutePath of confirmedProjectSourcePaths) {
1633
- const sourceRef = path.relative(projectRoot, absolutePath);
1634
- registry.register({
1635
- source_type: "project_file",
1636
- evidence_role: "project_source_file",
1637
- authority: "authoritative",
1638
- freshness: "current",
1639
- permission: "allowed",
1640
- scope: "confirmed_input_material",
1641
- description: `已确认项目输入材料: ${sourceRef}`,
1642
- source_ref: sourceRef,
1643
- });
1644
- }
1645
- };
1646
- const workflowIntent = ctx.route_decision?.workflow_intent ?? ctx.classification.route_decision?.workflow_intent;
1647
- // 问题六十: 高风险项目事实声明先过证据门,避免后续架构研讨门遮蔽无证据问题。
1648
- {
1649
- const evRoute = ctx.route_decision?.route ?? ctx.classification?.route_decision?.route;
1650
- const evWorkflowIntent = ctx.route_decision?.workflow_intent ?? ctx.classification?.route_decision?.workflow_intent;
1651
- const evRisk = (await import("../../engine/evidence_grounding_contract.js")).assessTaskRisk(ctx.classification?.task_type, evRoute, ctx.intent);
1652
- const isArchitectureContext = evWorkflowIntent === "architecture_design"
1653
- || evWorkflowIntent === "existing_system_gap_analysis"
1654
- || evRoute === "artifact_generation"
1655
- || hasArchitectureIntentSignal(ctx.intent);
1656
- if (isArchitectureContext && (evRisk === "high" || evRisk === "critical")) {
1657
- const { createEvidenceGroundingSystem } = await import("../../engine/evidence_grounding_contract.js");
1658
- const evg = createEvidenceGroundingSystem();
1659
- evg.registry.register({
1660
- source_type: "task_context",
1661
- evidence_role: "classification",
1662
- authority: "authoritative",
1663
- freshness: "current",
1664
- permission: "allowed",
1665
- scope: "classification",
1666
- description: "任务分类结果",
1667
- source_ref: `task:${args.task_id}`,
1668
- });
1669
- if (knowledgeIndex) {
1670
- const { project } = knowledgeIndex.getAllEntries();
1671
- for (const entry of project) {
1672
- if (entry.status !== "active")
1673
- continue;
1674
- evg.registry.register({
1675
- source_type: "knowledge_asset",
1676
- evidence_role: "template_guidance",
1677
- authority: "trusted",
1678
- freshness: "current",
1679
- permission: "allowed",
1680
- scope: entry.scope?.join(",") ?? "knowledge",
1681
- description: entry.name,
1682
- source_ref: entry.file_path,
1683
- });
1684
- }
1685
- }
1686
- const tdc = ctx.technology_decision_contract;
1687
- if (tdc?.human_gate_evidence) {
1688
- evg.registry.register({
1689
- source_type: "user_confirmation",
1690
- evidence_role: "user_confirmation",
1691
- authority: "authoritative",
1692
- freshness: "current",
1693
- permission: "allowed",
1694
- scope: "technology_decision",
1695
- description: `技术决策确认: ${tdc.decision_scope ?? "general"}`,
1696
- source_ref: `decision:${tdc.decision_id ?? args.task_id}`,
1697
- });
1698
- }
1699
- registerConfirmedProjectSources(evg.registry);
1700
- const evClaims = [
1701
- {
1702
- id: "claim-expand-0",
1703
- category: "user_confirmation",
1704
- claim_text: "任务路由和执行范围已确认",
1705
- evidence_ids: evg.registry.query({ source_type: "task_context" }).map((e) => e.id),
1706
- is_uncertain: false,
1707
- risk_level: evRisk,
1708
- },
1709
- {
1710
- id: "claim-expand-1",
1711
- category: "architecture",
1712
- claim_text: "技术方案基于现有系统分析",
1713
- evidence_ids: evg.registry.query({}).filter((e) => e.evidence_role && e.evidence_role !== "template_guidance" && e.evidence_role !== "classification").map((e) => e.id),
1714
- is_uncertain: false,
1715
- risk_level: evRisk,
1716
- },
1717
- ];
1718
- const evMatrix = evg.builder.buildContext(evClaims, {
1719
- target_claims: evClaims.map((c) => c.claim_text),
1720
- source_types: [],
1721
- keywords: [],
1722
- max_results: 10,
1723
- });
1724
- evMatrix.task_id = args.task_id;
1725
- const evGate = evg.gate.evaluate(evMatrix, evRisk);
1726
- await taskContext.setEvidenceGroundingResult(args.task_id, {
1727
- evidence_matrix: evMatrix,
1728
- evidence_gate_result: evGate,
1729
- unsupported_claims: evGate.unsupported_claims,
1730
- conflict_resolutions: evMatrix.conflicts,
1731
- });
1732
- if (!evGate.allowed) {
1733
- return {
1734
- result: {
1735
- error: `证据驱动门禁阻断: ${evGate.reason_zh}`,
1736
- diagnostic_code: evGate.diagnostic_code,
1737
- reason_zh: evGate.reason_zh,
1738
- unsupported_claims: evGate.unsupported_claims,
1739
- missing_evidence: evGate.missing_evidence,
1740
- status: "blocked",
1741
- recovery: "请提供项目文件、命令输出或其他权威证据支撑关键声明后重新 sf_expand",
1742
- },
1743
- };
1744
- }
1745
- }
1746
- }
1747
- // 问题六十一: 架构设计前的六域研讨门独立执行,不得被施工指令契约有无绕过。
1748
- let existingSourceRoot = false;
1749
- for (const candidate of ["src", "backend", "frontend", "apps", "services"]) {
1750
- if (await fsp.access(path.join(projectPath, candidate)).then(() => true, () => false)) {
1751
- existingSourceRoot = true;
1752
- break;
1753
- }
1754
- }
1755
- let existingManifest = false;
1756
- for (const candidate of ["package.json", "pom.xml", "build.gradle", "settings.gradle"]) {
1757
- if (await fsp.access(path.join(projectPath, candidate)).then(() => true, () => false)) {
1758
- existingManifest = true;
1759
- break;
1760
- }
1761
- }
1762
- const detectedArchitectureContext = existingSourceRoot && existingManifest
1763
- ? "existing_system"
1764
- : (!existingSourceRoot && !existingManifest ? "empty_project" : "new_system");
1765
- const workshopGate = await checkArchitectureDecisionWorkshopGate({
1766
- ctx,
1767
- workflowIntent,
1768
- projectContext: detectedArchitectureContext,
1769
- });
1770
- await taskContext.save(ctx);
1771
- if (!workshopGate.allowed) {
1772
- return {
1773
- result: {
1774
- error: "架构设计前必须先完成六类架构决策研讨与用户确认",
1775
- status: "awaiting_confirmation",
1776
- architecture_decision_workshop: workshopGate.contract,
1777
- blocking_findings: workshopGate.findings,
1778
- next_domain: workshopGate.next_domain,
1779
- recovery: "请从当前待讨论域开始,提供候选方案、推荐理由、风险和用户确认后重新调用 sf_expand",
1780
- },
1781
- };
1782
- }
1783
- // 六域决策闭合后创建设计产物生命周期;正式设计与后续实现必须以其复验结果为准。
1784
- if (workflowIntent === "architecture_design" && !ctx.design_artifact_pack) {
1785
- const designModule = await lazyDesignArtifactPack();
1786
- ctx.design_artifact_pack = designModule.createDesignArtifactPack(args.task_id);
1787
- ctx.design_artifact_pack.status = "awaiting_decisions";
1788
- ctx.design_artifact_pack.decision_workshop_ref = `task:${args.task_id}:architecture_decision_workshop`;
1789
- ctx.design_artifact_pack.user_confirmation_ref = ctx.architecture_decision_workshop?.document_output_confirmation_ref;
1790
- await taskContext.save(ctx);
1791
- }
1792
- // 问题六十一(通用): 可组合决策包门禁
1793
- const dwModule = await lazyDecisionWorkshop();
1794
- const packMatch = dwModule.matchDecisionPacks({
1795
- workflow_intent: workflowIntent,
1796
- intent: ctx.intent,
1797
- task_type: ctx.classification?.task_type,
1798
- });
1799
- // 过滤掉架构(架构由上面的专用子包处理)
1800
- const nonArchPacks = packMatch.packs.filter((p) => p !== "architecture");
1801
- if (nonArchPacks.length > 0) {
1802
- const dwContract = ctx.decision_workshop ?? dwModule.createDecisionWorkshop(args.task_id, nonArchPacks, detectedArchitectureContext, packMatch.reasons.join(";"));
1803
- const dwGate = dwModule.evaluateDecisionWorkshop(dwContract);
1804
- ctx.decision_workshop = dwModule.applyDecisionWorkshopGate(dwContract);
1805
- await taskContext.save(ctx);
1806
- if (!dwGate.allowed) {
1807
- return {
1808
- result: {
1809
- error: `${packMatch.reasons.join(";")},必须先完成决策研讨与用户确认`,
1810
- status: "awaiting_confirmation",
1811
- decision_workshop: ctx.decision_workshop,
1812
- blocking_findings: dwGate.blocking_findings,
1813
- next_domain: dwGate.next_domain,
1814
- activated_packs: nonArchPacks,
1815
- recovery: "请从当前待讨论域开始,提供候选方案、推荐理由、风险和用户确认后重新调用 sf_expand",
1816
- },
1817
- };
1818
- }
1819
- }
1820
- // 问题四十九/五十: 已有架构合同或现有系统证据的进一步审查。
1821
- const expansionRoute = expansion?.workflow_trace
1822
- ? expansion?.workflow_trace?.route
1823
- : undefined;
1824
- const hasInstructionContract = !!ctx?.instruction_contract;
1825
- if (hasInstructionContract) {
1826
- if (expansionRoute === "artifact_generation" || expansionRoute === "analysis") {
1827
- const archGate = await checkArchitectureDesignGate({ ctx, route: expansionRoute });
1828
- if (!archGate.allowed) {
1829
- return {
1830
- result: {
1831
- error: archGate.reason_zh,
1832
- architecture_gate_findings: archGate.findings,
1833
- status: "blocked",
1834
- recovery: "架构设计审查未通过,请补充缺失项后重新 sf_expand",
1835
- },
1836
- };
1837
- }
1838
- }
1839
- if (expansionRoute === "code_change" || expansionRoute === "artifact_generation") {
1840
- const analysisGate = await checkExistingSystemAnalysisGate({
1841
- hasExistingCode: !!config?.tech_stack,
1842
- hasPackageJson: !!projectPath,
1843
- hasSrcDir: true,
1844
- hasAnalysis: !!ctx.existing_system_analysis,
1845
- hasGapAnalysis: !!ctx.requirement_gap_analysis,
1846
- });
1847
- if (!analysisGate.allowed) {
1848
- return {
1849
- result: {
1850
- error: `现有系统分析门禁未通过: ${analysisGate.reason_zh}`,
1851
- missing_analysis: analysisGate.missing_analysis,
1852
- status: "blocked",
1853
- recovery: "请先对现有项目执行系统分析和差距分析,再继续架构设计或编码",
1854
- },
1855
- };
1856
- }
1857
- }
1858
- }
1859
- // ── S4 gates: 轻量路径(acceptance/review/read_only)整体跳过 ──
1860
- const isLightweightRoute = expansionRoute === "acceptance" || expansionRoute === "review"
1861
- || expansionRoute === "direct_answer" || expansionRoute === "analysis";
1862
- if (!isLightweightRoute) {
1863
- // ── S4 gates: 独立于 hasInstructionContract,由 requires* 触发判定 ──
1864
- // 问题十六: 技术选型决策主权 gate — 高影响技术决策缺证据时 blocked
1865
- {
1866
- const decisionGate = await checkDecisionSovereigntyGate({ ctx, route: expansionRoute });
1867
- if (!decisionGate.allowed) {
1868
- return {
1869
- result: {
1870
- error: decisionGate.reason_zh,
1871
- status: "blocked",
1872
- expected_schema: decisionGate.expected_schema,
1873
- recovery: decisionGate.requires_human_gate ? "请提供技术决策确认证据(human_gate_evidence)" : "技术选型决策校验失败,请按照 expected_schema 格式提供 technology_decision_contract",
1874
- },
1875
- };
1876
- }
1877
- }
1878
- // 问题二十六: 细节纪律 gate — 复杂任务缺关键细节时 blocked
1879
- {
1880
- const detailGate = await checkDetailDisciplineGate({ ctx, route: expansionRoute });
1881
- if (!detailGate.allowed) {
1882
- return {
1883
- result: {
1884
- error: detailGate.reason_zh,
1885
- missing_details: detailGate.missing_details,
1886
- status: "blocked",
1887
- recovery: "多步骤/复杂任务缺 detail_discipline_contract,请提供后重新 sf_expand",
1888
- },
1889
- };
1890
- }
1891
- }
1892
- // 问题二十七: 第一性原理 gate — 高影响任务缺推理时 blocked
1893
- {
1894
- const fpGate = await checkFirstPrinciplesGate({ ctx, route: expansionRoute });
1895
- if (!fpGate.allowed) {
1896
- return {
1897
- result: {
1898
- error: fpGate.reason_zh,
1899
- failures: fpGate.failures,
1900
- expected_schema: fpGate.expected_schema,
1901
- status: "blocked",
1902
- recovery: "高影响任务缺 first_principles_frame,请按照 expected_schema 格式提供后重新 sf_expand",
1903
- },
1904
- };
1905
- }
1906
- }
1907
- // 问题四十二(brainstorm): 脑暴契约 gate — 不确定项缺方案探索时 blocked
1908
- {
1909
- const brainstormGate = await checkBrainstormGate({ ctx, route: expansionRoute });
1910
- if (!brainstormGate.allowed) {
1911
- return {
1912
- result: {
1913
- error: brainstormGate.reason_zh,
1914
- violations: brainstormGate.violations,
1915
- expected_schema: brainstormGate.expected_schema,
1916
- status: "blocked",
1917
- recovery: "不确定项/方案选择缺 brainstorm_session,请按照 expected_schema 格式提供后重新 sf_expand",
1918
- },
1919
- };
1920
- }
1921
- }
1922
- // 问题六十六/六十七/六十八: 编码前工程约束必须聚合返回。
1923
- // 不能让 OOD 或后端工程门禁抢先返回,遮蔽用户项目的注释/日志契约。
1924
- {
1925
- const preImplementationBlocks = [];
1926
- const preImplementationPayload = {};
1927
- const artifactDesignIntent = expansionRoute === "artifact_generation"
1928
- || ["architecture_design", "detailed_design", "database_design", "api_design"].includes(String(workflowIntent))
1929
- || /(?:架构|数据库|API|接口|OpenAPI).{0,12}(?:设计|规格|文档)|(?:设计|规格|文档).{0,12}(?:API|接口|OpenAPI)/i.test(ctx.intent);
1930
- const isImplementationRoute = !artifactDesignIntent && (expansionRoute === "code_change"
1931
- || String(workflowIntent) === "backend_api_implementation"
1932
- || String(workflowIntent) === "frontend_business_logic"
1933
- || /编码|实现|开发|controller|service|component/i.test(ctx.intent));
1934
- const traceabilityModule = await lazyTraceability();
1935
- const traceReport = isImplementationRoute
1936
- ? traceabilityModule.auditDesignImplementationTraceability(projectPath)
1937
- : {
1938
- passed: true,
1939
- matrix_exists: false,
1940
- findings: [],
1941
- checked_files: [],
1942
- matrix_path: traceabilityModule.DEFAULT_DESIGN_IMPLEMENTATION_TRACEABILITY_PATH,
1943
- };
1944
- if (isImplementationRoute && !traceReport.passed) {
1945
- ctx.traceability_binding = {
1946
- requirement_ids: [],
1947
- prototype_ids: [],
1948
- architecture_ids: [],
1949
- detail_design_ids: [],
1950
- phase_ids: [],
1951
- slice_ids: [],
1952
- acceptance_ids: [],
1953
- status: "needs_backfill",
1954
- findings: traceReport.findings.map((finding) => `${finding.code}: ${finding.message_zh}`),
1955
- };
1956
- await taskContext.save(ctx);
1957
- return {
1958
- result: {
1959
- error: "需求/原型/设计/切片/验收追踪链路未闭合,不得进入编码实现",
1960
- status: "blocked",
1961
- diagnostic_code: TOOL_DIAGNOSTIC_CODES.traceabilityMissing,
1962
- traceability_findings: traceReport.findings,
1963
- checked_files: traceReport.checked_files,
1964
- matrix_path: traceReport.matrix_path,
1965
- template_path: traceabilityModule.DESIGN_IMPLEMENTATION_TRACEABILITY_TEMPLATE_PATH,
1966
- recovery_command: traceabilityModule.DESIGN_IMPLEMENTATION_TRACEABILITY_RECOVERY_COMMAND,
1967
- recovery: `${traceabilityModule.DESIGN_IMPLEMENTATION_TRACEABILITY_RECOVERY_GUIDANCE}。不得取消任务后直接写代码,不得改用 Bash 绕过追踪矩阵。`,
1968
- },
1969
- };
1970
- }
1971
- const traceBindingIds = traceabilityModule.extractTraceabilityBindingIds(ctx);
1972
- if (traceReport.matrix_exists && isImplementationRoute) {
1973
- const missingPrefixes = ["PHASE", "SLICE", "DD", "AC"].filter((prefix) => !traceBindingIds.some((id) => id.startsWith(`${prefix}-`)));
1974
- if (missingPrefixes.length > 0) {
1975
- ctx.traceability_binding = {
1976
- requirement_ids: traceBindingIds.filter((id) => id.startsWith("REQ-")),
1977
- prototype_ids: traceBindingIds.filter((id) => id.startsWith("PROTO-")),
1978
- architecture_ids: traceBindingIds.filter((id) => id.startsWith("ARCH-")),
1979
- detail_design_ids: traceBindingIds.filter((id) => id.startsWith("DD-")),
1980
- phase_ids: traceBindingIds.filter((id) => id.startsWith("PHASE-")),
1981
- slice_ids: traceBindingIds.filter((id) => id.startsWith("SLICE-")),
1982
- acceptance_ids: traceBindingIds.filter((id) => id.startsWith("AC-")),
1983
- status: "missing",
1984
- findings: missingPrefixes.map((prefix) => `编码前缺少 ${prefix}-* 绑定`),
1985
- };
1986
- await taskContext.save(ctx);
1987
- return {
1988
- result: {
1989
- error: "编码任务必须先绑定阶段、切片、详细设计和验收 ID",
1990
- status: "awaiting_traceability_binding",
1991
- diagnostic_code: TOOL_DIAGNOSTIC_CODES.traceabilityBindingMissing,
1992
- missing_prefixes: missingPrefixes,
1993
- matrix_path: traceReport.matrix_path,
1994
- template_path: traceabilityModule.DESIGN_IMPLEMENTATION_TRACEABILITY_TEMPLATE_PATH,
1995
- recovery_command: "sf_expand",
1996
- recovery: "在任务上下文或指令中明确本次实现对应的 PHASE-*、SLICE-*、DD-*、AC-*,再重新调用 sf_expand;不得脱离已确认设计直接编码,不得取消任务后改用 Bash/Edit/Write 直接实现",
1997
- },
1998
- };
1999
- }
2000
- ctx.traceability_binding = {
2001
- requirement_ids: traceBindingIds.filter((id) => id.startsWith("REQ-")),
2002
- prototype_ids: traceBindingIds.filter((id) => id.startsWith("PROTO-")),
2003
- architecture_ids: traceBindingIds.filter((id) => id.startsWith("ARCH-")),
2004
- detail_design_ids: traceBindingIds.filter((id) => id.startsWith("DD-")),
2005
- phase_ids: traceBindingIds.filter((id) => id.startsWith("PHASE-")),
2006
- slice_ids: traceBindingIds.filter((id) => id.startsWith("SLICE-")),
2007
- acceptance_ids: traceBindingIds.filter((id) => id.startsWith("AC-")),
2008
- status: "bound",
2009
- findings: [],
2010
- };
2011
- preImplementationPayload.traceability_binding = ctx.traceability_binding;
2012
- }
2013
- const oodModule = await lazyOodSolid();
2014
- const oodGate = oodModule.evaluateOodDesignGate({
2015
- task_id: args.task_id,
2016
- intent: ctx.intent,
2017
- route: expansionRoute,
2018
- summary: ctx.ood_solid_summary,
2019
- });
2020
- if (oodGate.applicable) {
2021
- ctx.ood_solid_summary = oodGate.required_summary;
2022
- preImplementationPayload.ood_solid_summary = oodGate.required_summary;
2023
- }
2024
- if (!oodGate.allowed) {
2025
- preImplementationBlocks.push({
2026
- code: TOOL_DIAGNOSTIC_CODES.oodMissingSummary,
2027
- reason_zh: oodGate.reason_zh,
2028
- });
2029
- }
2030
- const backendModule = await lazyBackendImplementation();
2031
- const backendGate = backendModule.evaluateBackendImplementationGate({
2032
- task_id: args.task_id,
2033
- intent: ctx.intent,
2034
- route: expansionRoute,
2035
- work_package: ctx.backend_implementation_work_package,
2036
- });
2037
- if (backendGate.applicable) {
2038
- ctx.backend_implementation_work_package = backendGate.work_package;
2039
- preImplementationPayload.backend_implementation_work_package = backendGate.work_package;
2040
- }
2041
- if (!backendGate.allowed) {
2042
- preImplementationBlocks.push({
2043
- code: TOOL_DIAGNOSTIC_CODES.backendMissingSummary,
2044
- reason_zh: backendGate.reason_zh,
2045
- });
2046
- }
2047
- if (ctx.classification.task_type !== "scaffold") {
2048
- const obsModule = await lazyCodeObservability();
2049
- const obsGate = obsModule.evaluateCodeObservabilityGate({
2050
- task_id: args.task_id,
2051
- intent: ctx.intent,
2052
- route: expansionRoute,
2053
- changed_files: ctx.execution?.changed_files,
2054
- work_package: ctx.code_observability_work_package,
2055
- });
2056
- if (obsGate.applicable) {
2057
- ctx.code_observability_work_package = obsGate.work_package;
2058
- preImplementationPayload.code_observability_work_package = obsGate.work_package;
2059
- }
2060
- if (!obsGate.allowed) {
2061
- preImplementationBlocks.push({
2062
- code: TOOL_DIAGNOSTIC_CODES.codeObservabilityWorkPackage,
2063
- reason_zh: obsGate.reason_zh,
2064
- });
2065
- }
2066
- }
2067
- if (Object.keys(preImplementationPayload).length > 0) {
2068
- await taskContext.save(ctx);
2069
- }
2070
- if (preImplementationBlocks.length > 0) {
2071
- return {
2072
- result: {
2073
- error: "编码前工程契约未全部确认,不得开始实现",
2074
- status: "awaiting_implementation_contracts",
2075
- diagnostic_codes: preImplementationBlocks.map((b) => b.code),
2076
- blocking_findings: preImplementationBlocks,
2077
- ...preImplementationPayload,
2078
- recovery: "请同时确认 OOD/SOLID、后端工程边界、代码注释与日志契约后重新调用 sf_expand",
2079
- },
2080
- };
2081
- }
2082
- }
2083
- } // end if (!isLightweightRoute) — 轻量路径跳过 S4 gates + 编码前工程约束
2084
- // Input Material Contract: 处理 hard-blocking 结果
2085
- // Privacy Gate: 隐私/敏感信息策略阻断
2086
- const isBlocked = expansion.prompt.startsWith("## 阻塞:输入材料禁止读取")
2087
- || expansion.prompt.startsWith("## 阻塞:隐私/敏感信息策略");
2088
- let isMaterialClarification = false;
2089
- if (expansion.prompt.startsWith("## 澄清请求") && expansion.input_materials) {
2090
- for (const m of expansion.input_materials) {
2091
- if (m.access_mode !== "forbidden" && (await lazyInputMaterial()).classifyIngestionStatus(m.path_or_ref) === "requires_confirmation") {
2092
- isMaterialClarification = true;
2093
- break;
2094
- }
2095
- }
2096
- }
2097
- // 注入 H1/H4 advisory warnings
2098
- const advisories = {};
2099
- if (h1Warning)
2100
- advisories.h1_advisory = h1Warning;
2101
- if (h4LockWarning)
2102
- advisories.h4_advisory = h4LockWarning;
2103
- // 问题六十:证据驱动门禁 — 高风险任务必须阻断无证据声明
2104
- const _evRoute = ctx.route_decision?.route ?? ctx.classification?.route_decision?.route;
2105
- const _evRisk = (await import("../../engine/evidence_grounding_contract.js")).assessTaskRisk(ctx.classification?.task_type, _evRoute, ctx.intent);
2106
- if (_evRisk === "high" || _evRisk === "critical") {
2107
- const { createEvidenceGroundingSystem } = await import("../../engine/evidence_grounding_contract.js");
2108
- const _evg = createEvidenceGroundingSystem();
2109
- if (ctx.classification) {
2110
- _evg.registry.register({
2111
- source_type: "task_context",
2112
- evidence_role: "classification",
2113
- authority: "authoritative",
2114
- freshness: "current",
2115
- permission: "allowed",
2116
- scope: "classification",
2117
- description: "任务分类结果",
2118
- source_ref: `task:${args.task_id}`,
2119
- });
2120
- }
2121
- // 注册知识索引中的项目知识作为证据(仅项目级,不含全局通用规则)
2122
- // 所有知识索引条目都是 template_guidance 角色,不得支撑项目事实声明
2123
- if (knowledgeIndex) {
2124
- const { project } = knowledgeIndex.getAllEntries();
2125
- for (const entry of project) {
2126
- if (entry.status !== "active")
2127
- continue;
2128
- _evg.registry.register({
2129
- source_type: "knowledge_asset",
2130
- evidence_role: "template_guidance",
2131
- authority: "trusted",
2132
- freshness: "current",
2133
- permission: "allowed",
2134
- scope: entry.scope?.join(",") ?? "knowledge",
2135
- description: entry.name,
2136
- source_ref: entry.file_path,
2137
- });
2138
- }
2139
- }
2140
- // 技术决策契约含 human_gate_evidence → 注册为 user_confirmation(真实项目证据)
2141
- const _tdc = ctx.technology_decision_contract;
2142
- if (_tdc?.human_gate_evidence) {
2143
- _evg.registry.register({
2144
- source_type: "user_confirmation",
2145
- evidence_role: "user_confirmation",
2146
- authority: "authoritative",
2147
- freshness: "current",
2148
- permission: "allowed",
2149
- scope: "technology_decision",
2150
- description: `技术决策确认: ${_tdc.decision_scope ?? "general"}`,
2151
- source_ref: `decision:${_tdc.decision_id ?? args.task_id}`,
2152
- });
2153
- }
2154
- registerConfirmedProjectSources(_evg.registry);
2155
- const _evClaims = [
2156
- {
2157
- id: "claim-expand-0",
2158
- category: "user_confirmation",
2159
- claim_text: "任务路由和执行范围已确认",
2160
- evidence_ids: _evg.registry.query({ source_type: "task_context" }).map((e) => e.id),
2161
- is_uncertain: false,
2162
- risk_level: _evRisk,
2163
- },
2164
- ];
2165
- // 只在架构设计/现有系统分析场景生成 architecture claim
2166
- const _evWorkflowIntent = ctx.route_decision?.workflow_intent ?? ctx.classification?.route_decision?.workflow_intent;
2167
- const _isArchitectureContext = _evWorkflowIntent === "architecture_design"
2168
- || _evWorkflowIntent === "existing_system_gap_analysis"
2169
- || _evRoute === "artifact_generation"
2170
- || hasArchitectureIntentSignal(ctx.intent);
2171
- if (_isArchitectureContext) {
2172
- _evClaims.push({
2173
- id: "claim-expand-1",
2174
- category: "architecture",
2175
- claim_text: "技术方案基于现有系统分析",
2176
- evidence_ids: _evg.registry.query({}).filter((e) => e.evidence_role && e.evidence_role !== "template_guidance" && e.evidence_role !== "classification").map((e) => e.id),
2177
- is_uncertain: false,
2178
- risk_level: _evRisk,
2179
- });
2180
- }
2181
- const _evVerify = _evg.verifier.verify(_evClaims, _evRisk);
2182
- const _evMatrix = _evg.builder.buildContext(_evClaims, {
2183
- target_claims: _evClaims.map((c) => c.claim_text),
2184
- source_types: [], keywords: [], max_results: 10,
2185
- });
2186
- _evMatrix.task_id = args.task_id;
2187
- const _evGate = _evg.gate.evaluate(_evMatrix, _evRisk);
2188
- // 写回 TaskContext(blocked 也保存)
2189
- await taskContext.setEvidenceGroundingResult(args.task_id, {
2190
- evidence_matrix: _evMatrix,
2191
- evidence_gate_result: _evGate,
2192
- unsupported_claims: _evGate.unsupported_claims,
2193
- conflict_resolutions: _evMatrix.conflicts,
2194
- });
2195
- if (!_evGate.allowed) {
2196
- return {
2197
- result: {
2198
- error: `证据驱动门禁阻断: ${_evGate.reason_zh}`,
2199
- diagnostic_code: _evGate.diagnostic_code,
2200
- reason_zh: _evGate.reason_zh,
2201
- unsupported_claims: _evGate.unsupported_claims,
2202
- missing_evidence: _evGate.missing_evidence,
2203
- status: "blocked",
2204
- recovery: "请提供项目文件、命令输出或其他权威证据支撑关键声明后重新 sf_expand",
2205
- },
2206
- };
2207
- }
2208
- if (_evGate.requires_user_confirmation.length > 0) {
2209
- advisories.evidence_advisory = {
2210
- level: "requires_confirmation",
2211
- items: _evGate.requires_user_confirmation,
2212
- diagnostic_code: _evGate.diagnostic_code,
2213
- };
2214
- }
2215
- }
2216
- else {
2217
- // 低风险通用问答:标注为通用建议
2218
- advisories.evidence_advisory = "通用建议,非项目事实;证据驱动门禁低风险放行";
2219
- }
2220
- // 配置优先级警告
2221
- if (expansion.config_resolution_reports && expansion.config_resolution_reports.length > 0) {
2222
- const configWarnings = expansion.config_resolution_reports
2223
- .filter(r => r.conflicts.length > 0)
2224
- .map(r => r.conflicts.map(c => `${c.reason}`).join("; "));
2225
- if (configWarnings.length > 0) {
2226
- advisories.config_precedence_warnings = configWarnings;
2227
- }
2228
- }
2229
- // 决策契约 advisory: 校验 expand 输出是否包含默认决策字段
2230
- const decisionContract = (await lazyDecision()).validateDecisionOutput(expansion);
2231
- if (!decisionContract.passed) {
2232
- advisories.decision_contract_advisory = decisionContract.advisory;
2233
- }
2234
- // 统一持久化:load 一次,所有修改共享同一个 ctx,最后 save 一次
2235
- // 避免 setExpansion/updateStatus/setPlanProposalGate 各自 load-save 互相覆盖
2236
- try {
2237
- const freshCtx = await taskContext.load(args.task_id);
2238
- if (freshCtx) {
2239
- // 1. 写入 expansion
2240
- await taskContext.setExpansion(args.task_id, expansion, freshCtx);
2241
- // 2. 写入 artifact(共享同一 ctx,不会重新 load)
2242
- if (expansion.output_artifact_record) {
2243
- await taskContext.setArtifact(args.task_id, expansion.output_artifact_record, freshCtx);
2244
- }
2245
- // 3. 状态转换(共享 ctx,校验通过后 save)
2246
- const nextStatus = isBlocked ? "failed"
2247
- : expansion.prompt.startsWith("## 澄清请求") ? "clarifying"
2248
- : "executing";
2249
- await taskContext.updateStatus(args.task_id, nextStatus, freshCtx);
2250
- // 4. 设置 plan_proposal_gate(共享 ctx,最后一次 save)
2251
- {
2252
- const { evaluatePlanProposalGate, inferPlanGateTaskType } = await import("../../engine/plan_proposal_gate.js");
2253
- const routeForGate = expansion?.workflow_trace?.route ?? expansionRoute ?? "code_change";
2254
- const taskTypeForGate = inferPlanGateTaskType(ctx.intent);
2255
- const isLightweight = routeForGate === "acceptance" || routeForGate === "review"
2256
- || routeForGate === "direct_answer" || routeForGate === "analysis"
2257
- || taskTypeForGate === "local_acceptance";
2258
- if (isLightweight) {
2259
- await taskContext.setPlanProposalGate(args.task_id, {
2260
- passed: true,
2261
- plan_gate_status: "passed",
2262
- required_level: "brief_plan",
2263
- reason_zh: "轻量路径自动通过",
2264
- violations: [],
2265
- evidence_refs: [],
2266
- blocked_actions: [],
2267
- }, freshCtx);
2268
- }
2269
- else {
2270
- const gateResult = evaluatePlanProposalGate({
2271
- task_id: args.task_id,
2272
- task_type: taskTypeForGate,
2273
- user_intent: ctx.intent,
2274
- plan_level: "execution_plan",
2275
- plan_summary_zh: ctx.intent.slice(0, 200),
2276
- proposed_steps: [expansionRoute ?? "execute"],
2277
- verification_plan: (expansion.acceptance?.automated ?? []).map((a) => a.description ?? String(a)),
2278
- risks: [],
2279
- evidence_refs: expansion.matched_knowledge ?? [],
2280
- });
2281
- await taskContext.setPlanProposalGate(args.task_id, gateResult, freshCtx);
2282
- }
2283
- }
2284
- }
2285
- }
2286
- catch (persistErr) {
2287
- try {
2288
- await taskContext.updateStatus(args.task_id, "failed");
2289
- }
2290
- catch {
2291
- // 状态转换非法,忽略
2292
- }
2293
- throw persistErr;
2294
- }
2295
- const expandPayload = Object.keys(advisories).length > 0
2296
- ? { ...expansion, advisories }
2297
- : expansion;
2298
- return {
2299
- result: expandPayload,
2300
- };
2301
- });
2302
- // ── sf_verify: 生成验证命令(构建、测试、验收检查) ──
2303
- registerSafeTool("sf_verify", "根据变更文件生成验证命令(构建、测试、验收检查),由 Claude Code Bash 执行", VerifySchema, async (args) => {
2304
- const ctx = await taskContext.load(args.task_id);
2305
- if (!ctx) {
2306
- return {
2307
- result: { error: "任务不存在" },
2308
- };
2309
- }
2310
- const implementationFiles = args.changed_files.filter((file) => /\.(?:ts|tsx|js|jsx|java|kt|cs|go|py)$/.test(file)
2311
- && !/(?:^|\/)tests?\//.test(file));
2312
- if (implementationFiles.length > 0) {
2313
- const implementationContents = {};
2314
- for (const changedFile of implementationFiles) {
2315
- const absoluteFile = path.resolve(projectPath, changedFile);
2316
- try {
2317
- if (isSameOrDescendantPath(absoluteFile, path.resolve(projectPath), { caseSensitive: false }) && (await fsp.stat(absoluteFile)).isFile()) {
2318
- implementationContents[changedFile] = await fsp.readFile(absoluteFile, "utf-8");
2319
- }
2320
- }
2321
- catch {
2322
- // 文件缺失会由验证命令或现有产物检查报告。
2323
- }
2324
- }
2325
- const traceabilityModule = await lazyTraceability();
2326
- const traceVerification = traceabilityModule.verifyChangedFilesAgainstDesignTraceability(projectPath, implementationFiles, ctx);
2327
- if (!traceVerification.passed) {
2328
- ctx.traceability_binding = {
2329
- requirement_ids: traceVerification.binding_ids.filter((id) => id.startsWith("REQ-")),
2330
- prototype_ids: traceVerification.binding_ids.filter((id) => id.startsWith("PROTO-")),
2331
- architecture_ids: traceVerification.binding_ids.filter((id) => id.startsWith("ARCH-")),
2332
- detail_design_ids: traceVerification.binding_ids.filter((id) => id.startsWith("DD-")),
2333
- phase_ids: traceVerification.binding_ids.filter((id) => id.startsWith("PHASE-")),
2334
- slice_ids: traceVerification.binding_ids.filter((id) => id.startsWith("SLICE-")),
2335
- acceptance_ids: traceVerification.binding_ids.filter((id) => id.startsWith("AC-")),
2336
- status: "missing",
2337
- findings: traceVerification.findings.map((finding) => `${finding.code}: ${finding.message_zh}`),
2338
- };
2339
- await taskContext.save(ctx);
2340
- return {
2341
- result: {
2342
- error: "编码变更未绑定需求/原型/设计/切片/验收追踪链路,需修复后重验",
2343
- status: "blocked",
2344
- diagnostic_code: TOOL_DIAGNOSTIC_CODES.traceabilityVerifyFailed,
2345
- traceability_findings: traceVerification.findings,
2346
- recovery: "补齐追踪矩阵并在任务中绑定 PHASE-*、SLICE-*、DD-*、AC-* 后重新执行 sf_verify",
2347
- },
2348
- };
2349
- }
2350
- const oodModule = await lazyOodSolid();
2351
- const oodGate = oodModule.evaluateOodDesignGate({
2352
- task_id: args.task_id,
2353
- intent: ctx.intent,
2354
- route: ctx.expansion?.workflow_trace?.route,
2355
- changed_files: implementationFiles,
2356
- summary: ctx.ood_solid_summary,
2357
- });
2358
- if (!oodGate.allowed) {
2359
- return {
2360
- result: {
2361
- error: oodGate.reason_zh,
2362
- status: "blocked",
2363
- diagnostic_code: TOOL_DIAGNOSTIC_CODES.oodMissingSummary,
2364
- ood_solid_summary: oodGate.required_summary,
2365
- recovery: "完成 OOD/SOLID 摘要后重新执行 sf_expand 与 sf_verify",
2366
- },
2367
- };
2368
- }
2369
- const backendModule = await lazyBackendImplementation();
2370
- const backendGate = backendModule.evaluateBackendImplementationGate({
2371
- task_id: args.task_id,
2372
- intent: ctx.intent,
2373
- route: ctx.expansion?.workflow_trace?.route,
2374
- changed_files: implementationFiles,
2375
- work_package: ctx.backend_implementation_work_package,
2376
- });
2377
- if (!backendGate.allowed) {
2378
- return {
2379
- result: {
2380
- error: backendGate.reason_zh,
2381
- status: "blocked",
2382
- diagnostic_code: TOOL_DIAGNOSTIC_CODES.backendMissingSummary,
2383
- backend_implementation_work_package: backendGate.work_package,
2384
- recovery: "完成后端工程工作包后重新执行 sf_expand 与 sf_verify",
2385
- },
2386
- };
2387
- }
2388
- const solidFindings = oodGate.applicable ? oodModule.reviewSolidCode(implementationContents) : [];
2389
- const backendFindings = backendGate.applicable ? backendModule.reviewBackendImplementationFiles(implementationContents) : [];
2390
- if (backendGate.applicable) {
2391
- const openApiPath = path.join(projectPath, "docs", "api", "openapi.yaml");
2392
- const apiMarkdownPath = path.join(projectPath, "docs", "architecture", "03-API接口规格文档.md");
2393
- const migrationDirectory = path.join(projectPath, "db", "migrations");
2394
- const openapiText = await fsp.access(openApiPath).then(() => true, () => false) ? await fsp.readFile(openApiPath, "utf-8") : undefined;
2395
- const apiDocumentText = await fsp.access(apiMarkdownPath).then(() => true, () => false) ? await fsp.readFile(apiMarkdownPath, "utf-8") : undefined;
2396
- let migrationText;
2397
- if (await fsp.access(migrationDirectory).then(() => true, () => false)) {
2398
- const migrationFiles = (await fsp.readdir(migrationDirectory)).filter((name) => /\.sql$/i.test(name));
2399
- const migrationContents = await Promise.all(migrationFiles.map((name) => fsp.readFile(path.join(migrationDirectory, name), "utf-8")));
2400
- migrationText = migrationContents.join("\n");
2401
- }
2402
- backendFindings.push(...backendModule.verifyBackendArtifactAlignment({
2403
- openapiText,
2404
- apiDocumentText,
2405
- migrationText,
2406
- sourceFiles: implementationContents,
2407
- }));
2408
- }
2409
- ctx.ood_solid_findings = solidFindings;
2410
- ctx.backend_implementation_findings = backendFindings;
2411
- await taskContext.save(ctx);
2412
- if (oodModule.hasBlockingSolidFindings(solidFindings)) {
2413
- return {
2414
- result: {
2415
- error: "OOD/SOLID 代码复验发现阻断项,需修复后重验",
2416
- status: "blocked",
2417
- diagnostic_code: TOOL_DIAGNOSTIC_CODES.oodDeliveryBlock,
2418
- ood_solid_findings: solidFindings,
2419
- },
2420
- };
2421
- }
2422
- if (backendModule.hasBlockingBackendFindings(backendFindings)) {
2423
- return {
2424
- result: {
2425
- error: "后端实现工程复验发现阻断项,需修复后重验",
2426
- status: "blocked",
2427
- diagnostic_code: TOOL_DIAGNOSTIC_CODES.backendDeliveryBlock,
2428
- backend_implementation_findings: backendFindings,
2429
- },
2430
- };
2431
- }
2432
- // 问题六十八: 代码可维护性与可观测性契约
2433
- const codeObsModule = await lazyCodeObservability();
2434
- const obsFindings = codeObsModule.verifyChangedFilesObservability({
2435
- changed_files: implementationFiles,
2436
- file_contents: implementationContents,
2437
- intent: ctx.intent,
2438
- });
2439
- ctx.code_observability_findings = obsFindings;
2440
- await taskContext.save(ctx);
2441
- if (codeObsModule.hasBlockingObservabilityFindings(obsFindings)) {
2442
- return {
2443
- result: {
2444
- error: "代码可维护性/可观测性复验发现阻断项,需修复后重验",
2445
- status: "blocked",
2446
- diagnostic_code: TOOL_DIAGNOSTIC_CODES.codeObservabilityFinding,
2447
- code_observability_findings: obsFindings,
2448
- },
2449
- };
2450
- }
2451
- }
2452
- // 问题六十二: 设计产物验证必须读取用户项目真实文件,不接受占位合同自证通过。
2453
- const verifyWorkflowIntent = ctx.route_decision?.workflow_intent ?? ctx.classification?.route_decision?.workflow_intent;
2454
- const touchesDesignArtifacts = args.changed_files.some((file) => /docs\/architecture\/|docs\/api\/|openapi|db\/(?:migrations|schema)|架构设计|数据库设计|API接口规格/i.test(file));
2455
- if (verifyWorkflowIntent === "architecture_design" || touchesDesignArtifacts) {
2456
- const designModule = await lazyDesignArtifactPack();
2457
- const designPack = ctx.design_artifact_pack ?? designModule.createDesignArtifactPack(args.task_id);
2458
- const designVerification = designModule.verifyDesignArtifactPack(projectPath, designPack);
2459
- ctx.design_artifact_pack = {
2460
- ...designPack,
2461
- status: designVerification.status,
2462
- findings: designVerification.findings,
2463
- baseline_hashes: designVerification.hashes,
2464
- verified_at: new Date().toISOString(),
2465
- };
2466
- await taskContext.save(ctx);
2467
- if (!designVerification.passed) {
2468
- return {
2469
- result: {
2470
- error: "设计产物包复验未通过,不得继续生成编码或交付结论",
2471
- status: "blocked",
2472
- diagnostic_code: "SF-DESIGN-PACK-VERIFY-FAILED",
2473
- design_artifact_findings: designVerification.findings,
2474
- checked_files: designVerification.checked_files,
2475
- recovery: "修复设计产物、补充用户确认并重新执行 sf_verify;不得只提交报告绕过缺口",
2476
- },
2477
- };
2478
- }
2479
- }
2480
- // 问题六十三: 模板契约验证 — 按文件逐一匹配契约并校验
2481
- const sacModule = await lazyStandardAssetContract();
2482
- const formalArtifactContract = sacModule.matchTemplateContract({
2483
- output_artifact_kind: ctx.artifact_output?.kind,
2484
- workflow_intent: verifyWorkflowIntent,
2485
- route_decision: ctx.route_decision?.workflow_intent,
2486
- });
2487
- if (formalArtifactContract || !sacModule.isLowRiskTask({
2488
- route_decision: verifyWorkflowIntent ?? ctx.classification?.route_decision?.workflow_intent,
2489
- workflow_intent: verifyWorkflowIntent,
2490
- changed_files: args.changed_files,
2491
- })) {
2492
- for (const changedFile of args.changed_files) {
2493
- const absFile = path.join(projectPath, changedFile);
2494
- if (!await fsp.access(absFile).then(() => true, () => false) || !/\.md$/.test(changedFile))
2495
- continue;
2496
- // 按实际文件路径匹配契约(不再使用 changed_files[0] 的契约校验全部文件)
2497
- const perFileContract = sacModule.matchTemplateContract({
2498
- output_artifact_kind: ctx.artifact_output?.kind,
2499
- workflow_intent: verifyWorkflowIntent,
2500
- route_decision: ctx.route_decision?.workflow_intent,
2501
- file_path: changedFile,
2502
- });
2503
- if (!perFileContract)
2504
- continue;
2505
- const content = await fsp.readFile(absFile, "utf-8");
2506
- // 草稿阻断下游消费 — 不再静默跳过
2507
- if (sacModule.isDraftDocument(content)) {
2508
- ctx.repair_reverify_directive = {
2509
- contract_id: perFileContract.asset_id,
2510
- file_path: changedFile,
2511
- status: "draft_blocked",
2512
- repair_suggestion: `文件 ${changedFile} 仍为草稿状态,草稿不可用于实现。请完善内容后重新验证。`,
2513
- blocked: true,
2514
- };
2515
- await taskContext.save(ctx);
2516
- return {
2517
- result: {
2518
- error: `草稿文件 ${changedFile} 不可用于实现,需完善后重新验证`,
2519
- status: "blocked",
2520
- diagnostic_code: "SF-CONTRACT-DRAFT",
2521
- template_contract_id: perFileContract.asset_id,
2522
- recovery: "完善草稿内容后重新执行 sf_verify",
2523
- },
2524
- };
2525
- }
2526
- const contractResult = sacModule.verifyOutputAgainstContract(perFileContract, content, projectPath);
2527
- if (!contractResult.passed) {
2528
- const repairDirective = sacModule.createRepairReverifyDirective(perFileContract, contractResult);
2529
- ctx.repair_reverify_directive = {
2530
- contract_id: perFileContract.asset_id,
2531
- file_path: changedFile,
2532
- status: "repair_required",
2533
- repair_suggestion: repairDirective.repair_suggestion,
2534
- blocked: true,
2535
- };
2536
- await taskContext.save(ctx);
2537
- return {
2538
- result: {
2539
- error: `文件 ${changedFile} 模板契约验证未通过,进入修复重验闭环`,
2540
- status: "blocked",
2541
- diagnostic_code: TOOL_DIAGNOSTIC_CODES.contractDraft,
2542
- template_contract_id: perFileContract.asset_id,
2543
- missing_fields: contractResult.missing_fields,
2544
- messages: contractResult.messages,
2545
- repair_suggestion: repairDirective.repair_suggestion,
2546
- recovery: "修复文档缺口后重新执行 sf_verify;不得只报告不修复",
2547
- },
2548
- };
2549
- }
2550
- }
2551
- // 全部契约验证通过 — 清零修复重验指令
2552
- if (ctx.repair_reverify_directive) {
2553
- delete ctx.repair_reverify_directive;
2554
- await taskContext.save(ctx);
2555
- }
2556
- }
2557
- // RouteDecision 合同验证 — 无条件,在状态预检之前
2558
- const rdFromCtx = ctx.route_decision ?? ctx.classification?.route_decision ?? null;
2559
- const wtFromCtx = ctx.workflow_trace ?? ctx.expansion?.workflow_trace ?? null;
2560
- const rdContractInput = {
2561
- route_decision: rdFromCtx,
2562
- workflow_trace: wtFromCtx,
2563
- expansion_input_materials: ctx.expansion?.input_materials?.map((m) => ({ path_or_ref: m.path_or_ref })),
2564
- expansion_output_artifact: ctx.artifact_output ? { kind: ctx.artifact_output.kind, path: ctx.artifact_output.path } : null,
2565
- expansion_constraints: ctx.expansion?.contract?.constraints,
2566
- };
2567
- const rdFindings = verifyRouteDecisionContract(rdContractInput);
2568
- const hasHardFail = rdFindings.some(f => f.severity === "hard_fail" || f.severity === "blocked");
2569
- if (hasHardFail) {
2570
- return {
2571
- result: {
2572
- error: "RouteDecision 合同检查失败",
2573
- route_decision_contract_findings: rdFindings,
2574
- status: "blocked",
2575
- },
2576
- };
2577
- }
2578
- const VALID_VERIFY_STATES = ["executing", "retrying"];
2579
- if (!VALID_VERIFY_STATES.includes(ctx.status)) {
2580
- return {
2581
- result: { error: `任务状态 ${ctx.status} 不可验证,需要 executing 或 retrying`, status: ctx.status },
2582
- };
2583
- }
2584
- const acceptanceItems = ctx.expansion
2585
- ? [...ctx.expansion.acceptance.automated, ...ctx.expansion.acceptance.manual]
2586
- : [];
2587
- // H4: 工作区完整性检查 — advisory 模式,仅警告不阻断
2588
- const integrity = await ioController.verify();
2589
- const h4Warning = !integrity.clean
2590
- ? { warning: `H4 advisory: ${integrity.message}`, dirty_files: integrity.dirty_files }
2591
- : undefined;
2592
- const verifyResult = (await lazyVerifier()).generateVerifyCommands(config, args.changed_files, acceptanceItems, ctx?.expansion?.workflow_trace?.route);
2593
- verifyResult.task_id = args.task_id;
2594
- // 创建 VerificationPlan(plan_only,非执行结果)
2595
- const vcModule = await lazyVerificationContract();
2596
- const allCommands = [
2597
- ...(verifyResult.checks?.build ?? []),
2598
- ...(verifyResult.checks?.tests ?? []),
2599
- ].map((c) => c.command);
2600
- const vPlan = vcModule.createVerificationPlan(args.task_id, allCommands, acceptanceItems.map((a) => a.description));
2601
- // sf_verify 仅生成计划,不执行命令 — 始终保存 not_executed
2602
- // 真实执行结果必须通过 recordVerificationExecution 单独录入
2603
- const vResult = vcModule.createNotExecutedResult(args.task_id, vPlan.plan_id, "sf_verify 生成命令,等待执行");
2604
- // 存储验证契约到任务上下文
2605
- const ctxForV = await taskContext.load(args.task_id);
2606
- if (ctxForV) {
2607
- ctxForV.verification_plan = vPlan;
2608
- ctxForV.verification_result = vResult;
2609
- await taskContext.save(ctxForV);
2610
- }
2611
- // 产物生命周期检查: draft → verified 需要 ArtifactVerificationResult.passed
2612
- let artifactVerificationResult;
2613
- let artifactFileMissing = false;
2614
- if (ctx.artifact_output && ctx.artifact_output.status === "draft") {
2615
- // 验证前解析产物文件并计算 hash
2616
- const artifact = ctx.artifact_output;
2617
- const fullPath = path.join(projectPath, artifact.path);
2618
- if (await fsp.access(fullPath).then(() => true, () => false)) {
2619
- const fileContent = await fsp.readFile(fullPath);
2620
- const hash = crypto.createHash("sha256").update(fileContent).digest("hex");
2621
- artifact.hash = `sha256:${hash}`;
2622
- if (!artifact.evidence_refs.some(r => r.startsWith("file:artifact:"))) {
2623
- artifact.evidence_refs.push(`file:artifact:path=${artifact.path} hash=sha256:${hash}`);
2624
- }
2625
- // 保存更新后的产物(含 hash)
2626
- const ctxForHash = await taskContext.load(args.task_id);
2627
- if (ctxForHash?.artifact_output) {
2628
- ctxForHash.artifact_output.hash = artifact.hash;
2629
- if (!ctxForHash.artifact_output.evidence_refs.some(r => r.startsWith("file:artifact:"))) {
2630
- ctxForHash.artifact_output.evidence_refs.push(`file:artifact:path=${artifact.path} hash=sha256:${hash}`);
2631
- }
2632
- await taskContext.save(ctxForHash);
2633
- }
2634
- }
2635
- else {
2636
- artifactFileMissing = true;
2637
- }
2638
- artifactVerificationResult = verifyArtifact(artifact.kind, artifact);
2639
- }
2640
- // 记录变更文件
2641
- // 写入护栏 — 检查变更文件是否在允许范围
2642
- if (args.changed_files.length > 0) {
2643
- const guardModule = await lazyEnforcementGuard();
2644
- const scopePaths = ctx.expansion?.scope?.allowed_paths ?? [];
2645
- for (const cf of args.changed_files) {
2646
- const writeFindings = guardModule.evaluateWriteGuard(ctx.classification?.route_decision?.route ?? "code_execution", cf, scopePaths, "command_execution_contract");
2647
- if (writeFindings.some((f) => f.blocked)) {
2648
- return {
2649
- result: {
2650
- error: `写入护栏阻断: ${writeFindings[0].reason_zh}`,
2651
- blocked_file: cf,
2652
- guard_id: writeFindings[0].guard_id,
2653
- },
2654
- };
2655
- }
2656
- }
2657
- }
2658
- await taskContext.setExecution(args.task_id, args.changed_files);
2659
- // 无实际文件变更但存在产物时标记 no_change_artifact
2660
- if (args.changed_files.length === 0 && ctx.artifact_output) {
2661
- const execCtx = await taskContext.load(args.task_id);
2662
- if (execCtx?.execution) {
2663
- execCtx.execution.no_change_artifact = true;
2664
- await taskContext.save(execCtx);
2665
- }
2666
- }
2667
- // 生成验证命令成功后再转换状态,避免操作失败导致任务卡在 verifying
2668
- if (ctx.status === "retrying") {
2669
- await taskContext.updateStatus(args.task_id, "executing");
2670
- }
2671
- await taskContext.updateStatus(args.task_id, "verifying");
2672
- // 存储验证结果
2673
- await taskContext.setVerification(args.task_id, verifyResult);
2674
- // 产物生命周期转换: draft → verified 仅在 ArtifactVerificationResult.passed 时
2675
- if (ctx.artifact_output && ctx.artifact_output.status === "draft" && artifactVerificationResult?.passed) {
2676
- const evidenceRef = `verification:${ctx.task_id}:checks=${artifactVerificationResult.checks.length}:summary=${artifactVerificationResult.summary.slice(0, 60)}`;
2677
- try {
2678
- await taskContext.updateArtifactStatus(args.task_id, {
2679
- status: "verified",
2680
- evidenceRef,
2681
- hasVerification: true,
2682
- });
2683
- }
2684
- catch {
2685
- // 转换被阻止 — 产物保持 draft,流水线继续
2686
- }
2687
- }
2688
- // 认知锚点上下文回放(按变更文件相关性)
2689
- const verifyAnchors = await loadRelevantAnchors({ file_paths: args.changed_files });
2690
- const verifyExtras = {};
2691
- if (h4Warning)
2692
- verifyExtras.h4_advisory = h4Warning;
2693
- if (verifyAnchors && verifyAnchors.length > 0)
2694
- verifyExtras.cognitive_anchors = verifyAnchors;
2695
- if (ctx.artifact_output && ctx.artifact_output.status === "draft" && artifactVerificationResult && !artifactVerificationResult.passed) {
2696
- const reason = artifactFileMissing
2697
- ? `产物文件不存在 (${ctx.artifact_output.path}),无法计算 hash`
2698
- : artifactVerificationResult.summary;
2699
- verifyExtras.artifact_warning = `产物验收检查未通过: ${reason}`;
2700
- verifyExtras.artifact_verification = artifactVerificationResult;
2701
- }
2702
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
2703
- const verifyPayload = Object.keys(verifyExtras).length > 0
2704
- ? { ...verifyResult, ...verifyExtras }
2705
- : { ...verifyResult };
2706
- // 附加验证契约引用到返回结果
2707
- verifyPayload.verification_plan = vPlan;
2708
- verifyPayload.verification_result = vResult;
2709
- // 问题六十:验证结论必须经过 FactClaimVerifier,不得把计划当结果
2710
- {
2711
- const { createEvidenceGroundingSystem, assessTaskRisk } = await import("../../engine/evidence_grounding_contract.js");
2712
- const _vRoute = ctx.route_decision?.route ?? ctx.classification?.route_decision?.route;
2713
- const _vRisk = assessTaskRisk(ctx.classification?.task_type, _vRoute, ctx.intent);
2714
- if (_vRisk !== "low") {
2715
- const _veg = createEvidenceGroundingSystem();
2716
- // 只有真实执行结果才能作为 validation_result 证据
2717
- const _hasRealPassed = ctx.verification_result && ctx.verification_result.status === "passed";
2718
- if (_hasRealPassed) {
2719
- _veg.registry.register({
2720
- source_type: "validation_result",
2721
- authority: "authoritative",
2722
- freshness: "current",
2723
- permission: "allowed",
2724
- scope: "verification",
2725
- description: `验证状态: ${ctx.verification_result.status}`,
2726
- source_ref: `verification:${args.task_id}`,
2727
- });
2728
- }
2729
- // 验证计划注册为 task_context,不冒充 validation_result
2730
- _veg.registry.register({
2731
- source_type: "task_context",
2732
- authority: "supporting",
2733
- freshness: "current",
2734
- permission: "allowed",
2735
- scope: "verification_plan",
2736
- description: `验证计划: ${vPlan ? "已生成" : "未生成"}`,
2737
- source_ref: `verification-plan:${args.task_id}`,
2738
- });
2739
- if (args.changed_files.length > 0) {
2740
- _veg.registry.register({
2741
- source_type: "project_file",
2742
- authority: "authoritative",
2743
- freshness: "current",
2744
- permission: "allowed",
2745
- scope: "changed_files",
2746
- description: `变更文件: ${args.changed_files.join(", ")}`,
2747
- source_ref: `files:${args.changed_files.join(",")}`,
2748
- });
2749
- }
2750
- const _vClaims = [{
2751
- id: "claim-verify-1",
2752
- category: "validation_result",
2753
- claim_text: "验证结果基于真实命令执行",
2754
- evidence_ids: _veg.registry.query({ source_type: "validation_result" }).map((e) => e.id),
2755
- is_uncertain: false,
2756
- risk_level: _vRisk,
2757
- }];
2758
- const _vVerResult = _veg.verifier.verify(_vClaims, _vRisk);
2759
- const _vMatrix = _veg.builder.buildContext(_vClaims, {
2760
- target_claims: _vClaims.map((c) => c.claim_text),
2761
- source_types: [], keywords: [], max_results: 10,
2762
- });
2763
- _vMatrix.task_id = args.task_id;
2764
- const _vGate = _veg.gate.evaluate(_vMatrix, _vRisk);
2765
- // 写回 TaskContext
2766
- await taskContext.setEvidenceGroundingResult(args.task_id, {
2767
- evidence_matrix: _vMatrix,
2768
- evidence_gate_result: _vGate,
2769
- unsupported_claims: _vGate.unsupported_claims,
2770
- conflict_resolutions: _vMatrix.conflicts,
2771
- });
2772
- if (_vVerResult.unsupported.length > 0) {
2773
- // 高风险:只有 plan 无 result → 写入 payload(不用 verifyExtras)
2774
- verifyPayload._evidence_status = "not_verified";
2775
- verifyPayload._evidence_reason = "验证结论需真实命令执行结果支撑,验证计划不能当作验证结果。请通过 sf_record_verification_execution 录入真实验证结果。";
2776
- if (_vRisk === "high" || _vRisk === "critical") {
2777
- verifyPayload._evidence_blocked = true;
2778
- }
2779
- else {
2780
- verifyPayload._evidence_advisory = "验证结论需真实命令执行结果支撑,验证计划不能当作验证结果";
2781
- }
2782
- }
2783
- }
2784
- }
2785
- // 验证后核心体验评估
2786
- try {
2787
- const hasVerificationEvidence = (verifyResult.checks?.build?.length ?? 0) > 0 || (verifyResult.checks?.tests?.length ?? 0) > 0;
2788
- const cepEvalResult = await assessCepAfterVerification({
2789
- task_id: args.task_id,
2790
- has_verification_evidence: hasVerificationEvidence,
2791
- });
2792
- // 将完整 CEP 结果写入 TaskContext
2793
- const cepModule = await import("../../engine/core_experience_principle.js");
2794
- const fullCepEval = cepModule.evaluateCoreExperiencePrinciple({
2795
- task_id: args.task_id, workflow_id: "sf_verify",
2796
- has_mainline_hooks: true, has_owner_contracts: true, natural_language_entry: true,
2797
- requires_internal_contract_knowledge: false, user_path_steps: 3,
2798
- has_failures: false, hard_fail_downgraded: false, forced_heavy_process: false,
2799
- has_sufficient_evidence: hasVerificationEvidence,
2800
- output_too_long_no_summary: false, report_only_no_repair: false,
2801
- failed_but_marked_done: false, auto_repair_overreach: false,
2802
- repair_reverified: false, outputs_raw_noise: false,
2803
- });
2804
- const ctxForCep = await taskContext.load(args.task_id);
2805
- if (ctxForCep) {
2806
- ctxForCep.core_experience_evaluation = fullCepEval;
2807
- await taskContext.save(ctxForCep);
2808
- }
2809
- }
2810
- catch (cepErr) {
2811
- internalWarn("CEP评估", "评估异常 (task=" + args.task_id + "):", cepErr?.message ?? cepErr);
2812
- }
2813
- return {
2814
- result: verifyPayload,
2815
- };
2816
- });
2817
- // ── sf_record_verification_execution: 录入真实验证执行结果(唯一 passed 入口) ──
2818
- registerSafeTool("sf_record_verification_execution", "录入真实验证执行结果,VerificationResult.status=passed 的唯一合法入口", RecordVerificationExecutionSchema, async (args) => {
2819
- const ctx = await taskContext.load(args.task_id);
2820
- if (!ctx) {
2821
- return { result: { error: "任务不存在" } };
2822
- }
2823
- // 必须有 VerificationPlan
2824
- const currentPlan = ctx.verification_plan;
2825
- if (!currentPlan) {
2826
- return { result: { error: "任务无 VerificationPlan,先执行 sf_verify 生成计划" } };
2827
- }
2828
- // plan_id 必须与 TaskContext 中当前 plan 一致
2829
- if (args.plan_id !== currentPlan.plan_id) {
2830
- return {
2831
- result: {
2832
- error: `plan_id 不匹配: 请求 "${args.plan_id}",当前任务计划 "${currentPlan.plan_id}" [${TOOL_DIAGNOSTIC_CODES.verifyPlanMismatch}]`,
2833
- diagnostic_code: TOOL_DIAGNOSTIC_CODES.verifyPlanMismatch,
2834
- },
2835
- };
2836
- }
2837
- const vcModule = await lazyVerificationContract();
2838
- const result = vcModule.recordVerificationExecution(args.task_id, args.plan_id, args.execution_records, currentPlan);
2839
- // 持久化到 TaskContext
2840
- const ctxForSave = await taskContext.load(args.task_id);
2841
- if (ctxForSave) {
2842
- ctxForSave.verification_result = result;
2843
- await taskContext.save(ctxForSave);
2844
- }
2845
- return { result };
2846
- });
2847
- // ── sf_learn: 从执行结果中提取知识,支持重试循环控制 ──
2848
- registerSafeTool("sf_learn", "从任务执行结果中提取知识,低置信度暂存,高置信度直接入库", LearnSchema, async (args) => {
2849
- const ctx = await taskContext.load(args.task_id);
2850
- if (!ctx) {
2851
- return {
2852
- result: { error: "任务不存在" },
2853
- };
2854
- }
2855
- const VALID_LEARN_STATES = ["verifying", "executing"];
2856
- if (!VALID_LEARN_STATES.includes(ctx.status)) {
2857
- return {
2858
- result: { error: `任务状态 ${ctx.status} 不可学习,需要 verifying 或 executing`, status: ctx.status },
2859
- };
2860
- }
2861
- // 如适用,记录失败
2862
- if (args.result === "failure" && args.failure_type) {
2863
- await taskContext.setExecution(args.task_id, [], {
2864
- attempt: (ctx.execution?.attempt_count ?? 0) + 1,
2865
- type: args.failure_type,
2866
- message: args.verify_output
2867
- ? `build=${args.verify_output.build_passed} tests=${args.verify_output.tests_passed}`
2868
- : "unknown failure",
2869
- timestamp: new Date().toISOString(),
2870
- });
2871
- // 创建 FailureReport(脱敏,非 raw error_output)
2872
- const frModule = await lazyFailureReport();
2873
- const failureClass = args.failure_type;
2874
- const errorOutput = args.verify_output
2875
- ? `build=${args.verify_output.build_passed} tests=${args.verify_output.tests_passed}`
2876
- : "unknown failure";
2877
- const retryCount = (ctx.execution?.attempt_count ?? 0) + 1;
2878
- const policy = frModule.getRecoveryPolicy(failureClass);
2879
- const failureReport = frModule.createFailureReport(args.task_id, failureClass, errorOutput, retryCount, policy?.max_retries ?? 0);
2880
- // 存储 FailureReport 到任务上下文
2881
- const ctxForFailure = await taskContext.load(args.task_id);
2882
- if (ctxForFailure) {
2883
- ctxForFailure.failure_report = failureReport;
2884
- await taskContext.save(ctxForFailure);
2885
- }
2886
- // verifier 不可用时创建 DegradationEvent
2887
- if (!args.verify_output) {
2888
- const degModule = await lazyDegradation();
2889
- const degradationEvent = degModule.createDegradationEvent(args.task_id, "verifier", "full", "验证器输出不可用,无法判断 build/test 结果", ["verification_execution"]);
2890
- if (degradationEvent) {
2891
- const ctxForDeg = await taskContext.load(args.task_id);
2892
- if (ctxForDeg) {
2893
- ctxForDeg.degradation_event = degradationEvent;
2894
- await taskContext.save(ctxForDeg);
2895
- }
2896
- }
2897
- }
2898
- }
2899
- // 转换到学习阶段
2900
- await taskContext.updateStatus(args.task_id, "learning");
2901
- const learnResult = await (await lazyEvolver()).evolve({
2902
- taskContext: ctx,
2903
- result: args.result,
2904
- verifyOutput: args.verify_output,
2905
- failureType: args.failure_type,
2906
- retryCount: ctx.execution?.attempt_count ?? 0,
2907
- }, projectPath);
2908
- // 确定最终状态: 重试或完成
2909
- const attemptCount = (ctx.execution?.attempt_count ?? 0) + (args.result === "failure" ? 1 : 0);
2910
- const maxAttempts = ctx.execution?.max_attempts ?? 3;
2911
- if (args.result === "failure" && attemptCount < maxAttempts && args.failure_type !== "deterministic") {
2912
- // 可重试: 转换到重试阶段
2913
- await taskContext.updateStatus(args.task_id, "retrying");
2914
- learnResult.retry_hint = `第 ${attemptCount}/${maxAttempts} 次尝试失败,${args.failure_type === "scope_insufficient" ? "需要扩大范围" : "请修复后重试"}`;
2915
- }
2916
- else {
2917
- // 检查主链路集成 — 即使 build/test 全绿,孤岛仍阻断 done
2918
- const integrationBlocked = ctx.verification?.main_path_integration
2919
- && !ctx.verification.main_path_integration.passed;
2920
- // 核心工程执行原则门禁 — required 原则失败不能进入 completed
2921
- const principlesBlocked = ctx.verification?.core_principles
2922
- && !ctx.verification.core_principles.overall_passed;
2923
- const finalStatus = args.result === "failure"
2924
- ? "failed"
2925
- : (integrationBlocked || principlesBlocked) ? "retrying" : "done";
2926
- await taskContext.updateStatus(args.task_id, finalStatus);
2927
- if (integrationBlocked && finalStatus === "retrying") {
2928
- learnResult.retry_hint = "主链路集成检查失败: 存在孤岛模块,请接入主链路后重试";
2929
- }
2930
- if (principlesBlocked && finalStatus === "retrying") {
2931
- const failedPrinciples = ctx.verification.core_principles.principles
2932
- .filter((p) => p.status === "failed")
2933
- .map((p) => p.principle_id);
2934
- learnResult.retry_hint = `核心工程执行原则检查失败: ${failedPrinciples.join(", ")},请修复后重试`;
2935
- }
2936
- }
2937
- return {
2938
- result: learnResult,
2939
- };
2940
- });
2941
- // ── sf_status: 任务状态查询(current/recent/resume/cancel) ──
2942
- registerSafeTool("sf_status", "查询当前任务状态、列出近期任务、恢复中断任务或取消任务", StatusSchema, async (args) => {
2943
- const action = args.action || "current";
2944
- // Job 操作 — advisory,独立于任务操作
2945
- if (args.job_action) {
2946
- if (!args.job_id) {
2947
- return {
2948
- result: { error: "job 操作需要 job_id" },
2949
- };
2950
- }
2951
- const jm = new (await lazyJob()).JobManager(taskContext.getStateDir());
2952
- const taskId = args.task_id ?? await jm.resolveTaskId(args.job_id) ?? "";
2953
- if (args.job_action === "job_status") {
2954
- const status = await jm.getJobStatus(args.job_id, taskId);
2955
- if (!status) {
2956
- return {
2957
- result: { error: `job ${args.job_id} 不存在或已过期` },
2958
- };
2959
- }
2960
- return {
2961
- result: { job: status },
2962
- };
2963
- }
2964
- if (args.job_action === "job_resume") {
2965
- const checkpoint = await jm.resumeFromCheckpoint(args.job_id, taskId);
2966
- if (!checkpoint) {
2967
- return {
2968
- result: { error: `job ${args.job_id} 无可恢复的 checkpoint` },
2969
- };
2970
- }
2971
- return {
2972
- result: {
2973
- advisory: "job 恢复为 advisory 操作,需确认 checkpoint 数据与当前状态一致",
2974
- job_id: checkpoint.job_id,
2975
- task_id: checkpoint.task_id,
2976
- phase: checkpoint.phase,
2977
- checkpoint_number: checkpoint.checkpoint_number,
2978
- cognitive_anchor: checkpoint.cognitive_anchor,
2979
- },
2980
- };
2981
- }
2982
- if (args.job_action === "job_cancel") {
2983
- const removed = await jm.cancelJob(args.job_id, taskId);
2984
- return {
2985
- result: {
2986
- advisory: "job 取消为 advisory 操作",
2987
- job_id: args.job_id,
2988
- cancelled: removed,
2989
- },
2990
- };
2991
- }
2992
- }
2993
- // 读取前自动将过期非终态任务标记为失败
2994
- try {
2995
- await taskContext.autoFailStale();
2996
- }
2997
- catch (e) {
2998
- internalWarn("autoFailStale", "出错:", e);
2999
- }
3000
- switch (action) {
3001
- case "current": {
3002
- const ctx = args.task_id
3003
- ? await taskContext.load(args.task_id)
3004
- : await taskContext.getCurrentTask();
3005
- if (!ctx) {
3006
- return {
3007
- result: { message: "当前无活跃任务" },
3008
- };
3009
- }
3010
- const resumable = taskContext.isResumable(ctx);
3011
- const result = {
3012
- task_id: ctx.task_id,
3013
- intent: ctx.intent,
3014
- status: ctx.status,
3015
- created_at: ctx.created_at,
3016
- resumable,
3017
- };
3018
- if (resumable) {
3019
- result.resume_hint = taskContext.getResumeHint(ctx);
3020
- }
3021
- if (ctx.classification) {
3022
- result.task_type = ctx.classification.task_type;
3023
- result.risk = ctx.classification.risk;
3024
- result.strategy = ctx.classification.strategy;
3025
- }
3026
- if (ctx.execution) {
3027
- result.changed_files = ctx.execution.changed_files;
3028
- result.attempt_count = ctx.execution.attempt_count;
3029
- }
3030
- // JobManager advisory: 查询关联 job 状态
3031
- try {
3032
- const jm = new (await lazyJob()).JobManager(taskContext.getStateDir());
3033
- const activeJobs = await jm.listActiveJobs();
3034
- const relatedJob = activeJobs.find((j) => j.task_id === ctx.task_id);
3035
- if (relatedJob) {
3036
- result.job = {
3037
- job_id: relatedJob.job_id,
3038
- phase: relatedJob.current_phase,
3039
- checkpoint_count: relatedJob.checkpoint_count,
3040
- is_alive: relatedJob.is_alive,
3041
- latest_anchor_summary: relatedJob.latest_anchor?.summary,
3042
- };
3043
- }
3044
- }
3045
- catch {
3046
- // JobManager advisory — 忽略错误
3047
- }
3048
- return {
3049
- result: result,
3050
- };
3051
- }
3052
- case "recent": {
3053
- const recent = await taskContext.listRecent(10);
3054
- return {
3055
- result: { tasks: recent },
3056
- };
3057
- }
3058
- case "resume": {
3059
- if (!args.task_id) {
3060
- return {
3061
- result: { error: "恢复任务需要 task_id" },
3062
- };
3063
- }
3064
- const ctx = await taskContext.load(args.task_id);
3065
- if (!ctx) {
3066
- return {
3067
- result: { error: "任务不存在" },
3068
- };
3069
- }
3070
- if (!taskContext.isResumable(ctx)) {
3071
- return {
3072
- result: { error: `任务状态 ${ctx.status} 不可恢复`, status: ctx.status },
3073
- };
3074
- }
3075
- const resumeResult = {
3076
- task_id: ctx.task_id,
3077
- intent: ctx.intent,
3078
- status: ctx.status,
3079
- resume_hint: taskContext.getResumeHint(ctx),
3080
- };
3081
- if (ctx.execution)
3082
- resumeResult.execution = ctx.execution;
3083
- const resumeAnchors = ctx.execution?.changed_files
3084
- ? await loadRelevantAnchors({ file_paths: ctx.execution.changed_files })
3085
- : undefined;
3086
- if (resumeAnchors && resumeAnchors.length > 0)
3087
- resumeResult.cognitive_anchors = resumeAnchors;
3088
- return { result: resumeResult };
3089
- }
3090
- case "cancel": {
3091
- if (!args.task_id) {
3092
- return {
3093
- result: { error: "取消任务需要 task_id" },
3094
- };
3095
- }
3096
- const cancelled = await taskContext.cancel(args.task_id);
3097
- return {
3098
- result: { task_id: args.task_id, cancelled },
3099
- };
3100
- }
3101
- case "retry_expand": {
3102
- if (!args.task_id) {
3103
- return {
3104
- result: { error: "重试 expand 需要 task_id" },
3105
- };
3106
- }
3107
- const retried = await taskContext.retryExpand(args.task_id);
3108
- if (!retried) {
3109
- return {
3110
- result: { error: "任务不存在、非 failed 状态或缺少 classification,无法重试 expand", task_id: args.task_id },
3111
- };
3112
- }
3113
- return {
3114
- result: { task_id: args.task_id, retried: true, hint: "任务已恢复到 expanding 状态,可重新调用 sf_expand" },
3115
- };
3116
- }
3117
- case "archive_stale": {
3118
- const stale = await detectStaleCurrentTask(taskContext.getStateDir());
3119
- const taskId = args.task_id ?? stale.task_id;
3120
- if (!taskId) {
3121
- return {
3122
- result: { error: "归档陈旧任务指针需要 task_id,且当前未检测到陈旧任务" },
3123
- };
3124
- }
3125
- if (!stale.is_stale || stale.task_id !== taskId) {
3126
- return {
3127
- result: {
3128
- error: "当前任务指针未被判定为陈旧,不执行归档",
3129
- task_id: taskId,
3130
- stale_task: stale.is_stale ? stale : null,
3131
- },
3132
- };
3133
- }
3134
- const archived = await archiveStaleCurrentPointer(taskContext.getStateDir(), taskId);
3135
- return {
3136
- result: {
3137
- task_id: taskId,
3138
- archived,
3139
- archived_pointer_only: true,
3140
- task_file_preserved: true,
3141
- },
3142
- };
3143
- }
3144
- default:
3145
- return {
3146
- result: { error: `未知操作: ${action}` },
3147
- };
3148
- }
3149
- });
3150
- // ── sf_plan: 复杂意图任务拆解为子任务列表 ──
3151
- registerSafeTool("sf_plan", "将复杂意图拆解为子任务列表。支持知识驱动的 pipeline_procedure 流程(自动绑定模板)和仓库边界拆分两种策略。仅在 complexity=high 时有效", PlanSchema, async (args) => {
3152
- const ctx = await taskContext.load(args.task_id);
3153
- if (!ctx?.classification) {
3154
- return {
3155
- result: { error: "任务不存在或尚未分类" },
3156
- };
3157
- }
3158
- const result = (await lazyPlanner()).planTask({
3159
- intent: ctx.intent,
3160
- classification: ctx.classification,
3161
- config,
3162
- knowledgeIndex,
3163
- });
3164
- result.task_id = args.task_id;
3165
- await taskContext.setPlanning(args.task_id, result);
3166
- return {
3167
- result: result,
3168
- };
3169
- });
3170
- // ── sf_plan_advance: 推进多阶段计划到下一步 ──
3171
- registerSafeTool("sf_plan_advance", "将多阶段计划推进到下一步。完成当前阶段后调用,自动更新 current_step_index 并返回下一阶段信息", PlanSchema, async (args) => {
3172
- const ctx = await taskContext.load(args.task_id);
3173
- if (!ctx?.planning || ctx.planning.sub_tasks.length === 0) {
3174
- return {
3175
- result: { error: "任务没有多阶段计划,请先调用 sf_plan" },
3176
- };
3177
- }
3178
- const plan = ctx.planning;
3179
- const previousStep = plan.sub_tasks[plan.current_step_index];
3180
- const previousStepTitle = previousStep?.title ?? "未知";
3181
- const nextIndex = plan.current_step_index + 1;
3182
- if (nextIndex >= plan.sub_tasks.length) {
3183
- return { result: {
3184
- task_id: args.task_id,
3185
- previous_step: previousStepTitle,
3186
- current_step_index: plan.current_step_index,
3187
- total_steps: plan.sub_tasks.length,
3188
- is_completed: true,
3189
- message: `所有 ${plan.sub_tasks.length} 个阶段已完成`,
3190
- } };
3191
- }
3192
- // 推进阶段索引
3193
- plan.current_step_index = nextIndex;
3194
- await taskContext.setPlanning(args.task_id, plan);
3195
- const nextStep = plan.sub_tasks[nextIndex];
3196
- return {
3197
- result: {
3198
- task_id: args.task_id,
3199
- previous_step: previousStepTitle,
3200
- current_step_index: nextIndex,
3201
- current_step: {
3202
- id: nextStep.id,
3203
- title: nextStep.title,
3204
- output_path: nextStep.output_path,
3205
- },
3206
- total_steps: plan.sub_tasks.length,
3207
- is_completed: false,
3208
- message: `阶段推进: ${previousStepTitle} → ${nextStep.title}`,
3209
- },
3210
- };
3211
- });
3212
- // ── sf_analyze: 影响范围分析,建议是否扩大作用域 ──
3213
- registerSafeTool("sf_analyze", "分析意图的影响范围,对比声明范围,提示是否需要扩大作用域。建议性,不强制", AnalyzeSchema, async (args) => {
3214
- const ctx = await taskContext.load(args.task_id);
3215
- if (!ctx?.expansion) {
3216
- return {
3217
- result: { error: "任务尚未膨胀,请先调用 sf_expand" },
3218
- };
3219
- }
3220
- const result = await (await lazyImpact()).analyzeImpact({
3221
- intent: ctx.intent,
3222
- classification: ctx.classification,
3223
- expansion: ctx.expansion,
3224
- config,
3225
- projectPath,
3226
- });
3227
- result.task_id = args.task_id;
3228
- // 决策契约 advisory: 校验 analyze 输出
3229
- const decisionContract = (await lazyDecision()).validateDecisionOutput(result);
3230
- const advisoryExtras = {};
3231
- if (!decisionContract.passed) {
3232
- advisoryExtras.decision_contract_advisory = decisionContract.advisory;
3233
- }
3234
- return { result: Object.keys(advisoryExtras).length > 0 ? { ...result, ...advisoryExtras } : result };
3235
- });
3236
- // ── sf_review: 代码审查(质量、安全、性能、技术债务) ──
3237
- registerSafeTool("sf_review", "审查代码变更的质量、安全、性能和技术债务。hotfix 场景可跳过。建议性,不强制修复", ReviewSchema, async (args) => {
3238
- const ctx = await taskContext.load(args.task_id);
3239
- if (!ctx) {
3240
- return {
3241
- result: { error: "任务不存在" },
3242
- };
3243
- }
3244
- const tracker = new (await lazyDebt()).DebtTracker(projectPath);
3245
- const result = await (await lazyReviewer()).reviewCode({
3246
- changedFiles: args.changed_files,
3247
- projectPath,
3248
- config,
3249
- classification: ctx.classification,
3250
- fileContents: args.file_contents,
3251
- knowledgeIndex,
3252
- uncertainty_triggers: ctx.expansion?.uncertainty_triggers,
3253
- }, tracker);
3254
- result.task_id = args.task_id;
3255
- await taskContext.setCodeReview(args.task_id, result);
3256
- const contractContents = { ...(args.file_contents ?? {}) };
3257
- for (const changedFile of args.changed_files) {
3258
- if (contractContents[changedFile] !== undefined)
3259
- continue;
3260
- const absoluteFile = path.resolve(projectPath, changedFile);
3261
- try {
3262
- if (isSameOrDescendantPath(absoluteFile, path.resolve(projectPath), { caseSensitive: false }) && (await fsp.stat(absoluteFile)).isFile()) {
3263
- contractContents[changedFile] = await fsp.readFile(absoluteFile, "utf-8");
3264
- }
3265
- }
3266
- catch {
3267
- // 无法读取的文件留给现有 reviewer 报告,不制造假结论。
3268
- }
3269
- }
3270
- const oodModule = await lazyOodSolid();
3271
- const solidFindings = oodModule.requiresOodSolidContract(ctx.intent, ctx.expansion?.workflow_trace?.route, args.changed_files)
3272
- || ctx.ood_solid_summary
3273
- ? [
3274
- ...oodModule.reviewSolidCode(contractContents),
3275
- ...oodModule.evaluateOverdesignRisk(ctx.intent, ctx.ood_solid_summary),
3276
- ]
3277
- : [];
3278
- const backendModule = await lazyBackendImplementation();
3279
- const backendFindings = backendModule.requiresBackendImplementationContract(ctx.intent, ctx.expansion?.workflow_trace?.route, args.changed_files)
3280
- || ctx.backend_implementation_work_package
3281
- ? backendModule.reviewBackendImplementationFiles(contractContents)
3282
- : [];
3283
- // 问题六十八: 代码可维护性与可观测性审查
3284
- const obsModule = await lazyCodeObservability();
3285
- const obsFindings = obsModule.requiresCodeObservabilityContract(ctx.intent, ctx.expansion?.workflow_trace?.route, args.changed_files)
3286
- || ctx.code_observability_work_package
3287
- ? obsModule.reviewCodeObservability(contractContents)
3288
- : [];
3289
- if (solidFindings.length > 0 || backendFindings.length > 0 || obsFindings.length > 0) {
3290
- const updatedCtx = await taskContext.load(args.task_id);
3291
- if (updatedCtx) {
3292
- updatedCtx.ood_solid_findings = solidFindings;
3293
- updatedCtx.backend_implementation_findings = backendFindings;
3294
- updatedCtx.code_observability_findings = obsFindings;
3295
- await taskContext.save(updatedCtx);
3296
- }
3297
- }
3298
- // 决策契约 advisory: 校验 review 输出
3299
- const decisionContract = (await lazyDecision()).validateDecisionOutput(result);
3300
- const reviewExtras = {};
3301
- if (!decisionContract.passed) {
3302
- reviewExtras.decision_contract_advisory = decisionContract.advisory;
3303
- }
3304
- if (solidFindings.length > 0)
3305
- reviewExtras.ood_solid_findings = solidFindings;
3306
- if (backendFindings.length > 0)
3307
- reviewExtras.backend_implementation_findings = backendFindings;
3308
- if (obsFindings.length > 0)
3309
- reviewExtras.code_observability_findings = obsFindings;
3310
- if (oodModule.hasBlockingSolidFindings(solidFindings) || backendModule.hasBlockingBackendFindings(backendFindings) || obsModule.hasBlockingObservabilityFindings(obsFindings)) {
3311
- reviewExtras.delivery_blocked = true;
3312
- reviewExtras.diagnostic_code = "SF-IMPLEMENTATION-CONTRACT-REVIEW-BLOCKED";
3313
- }
3314
- return { result: Object.keys(reviewExtras).length > 0 ? { ...result, ...reviewExtras } : result };
3315
- });
3316
- // ── sf_scaffold: 生成标准化代码骨架 ──
3317
- registerSafeTool("sf_scaffold", "根据项目模板生成标准化代码骨架(Controller/Service/DTO/测试等)。仅在 task_type=scaffold 时使用", ScaffoldSchema, async (args) => {
3318
- const ctx = await taskContext.load(args.task_id);
3319
- if (!ctx?.classification) {
3320
- return {
3321
- result: { error: "任务不存在或尚未分类" },
3322
- };
3323
- }
3324
- if (ctx.classification.task_type !== "scaffold") {
3325
- return {
3326
- result: {
3327
- error: "sf_scaffold 仅适用于 scaffold 类型任务",
3328
- current_type: ctx.classification.task_type,
3329
- },
3330
- };
3331
- }
3332
- const result = await (await lazyScaffolder()).generateScaffold({
3333
- intent: ctx.intent,
3334
- classification: ctx.classification,
3335
- config,
3336
- projectPath,
3337
- });
3338
- result.task_id = args.task_id;
3339
- return {
3340
- result: result,
3341
- };
3342
- });
3343
- // ── sf_deliver: 自动提交、推送、创建 PR ──
3344
- // ── sf_accept: 记录任务验收证据(本地验收 + 产物确认) ──
3345
- registerSafeTool("sf_accept", "记录任务验收证据,解除 sf_deliver 的本地验收门和产物确认门", AcceptSchema, async (args) => {
3346
- const ctx = await taskContext.load(args.task_id);
3347
- if (!ctx) {
3348
- return { result: { error: "任务不存在" } };
3349
- }
3350
- const runMode = args.run_mode;
3351
- const notes = String(args.acceptance_notes ?? "").trim();
3352
- const confirmedBy = String(args.confirmed_by ?? "").trim();
3353
- const confirmationRef = String(args.confirmation_ref ?? "").trim();
3354
- if (args.confirm !== true || !confirmedBy || !confirmationRef || !notes) {
3355
- return {
3356
- result: {
3357
- error: "验收必须包含显式确认、确认者、可审计确认引用和验收说明",
3358
- diagnostic_code: "SF-ACCEPT-CONFIRMATION-REQUIRED",
3359
- recovery_next_tools: ["sf_accept", "sf_status"],
3360
- recovery_forbidden_tools: ["sf_verify", "sf_scaffold", "sf_classify", "sf_expand"],
3361
- },
3362
- };
3363
- }
3364
- const currentVerification = ctx.verification_result;
3365
- if (currentVerification?.status !== "passed") {
3366
- return {
3367
- result: {
3368
- error: "验收前必须已有真实执行并通过的 verification_result",
3369
- diagnostic_code: "SF-ACCEPT-VERIFICATION-REQUIRED",
3370
- recovery_next_tools: ["sf_verify", "sf_record_verification_execution", "sf_status"],
3371
- recovery_forbidden_tools: ["sf_verify", "sf_scaffold", "sf_classify", "sf_expand"],
3372
- },
3373
- };
3374
- }
3375
- const evidenceRef = `acceptance:user_confirmation:${confirmationRef}`;
3376
- if (runMode === "manual_review") {
3377
- const acceptanceModule = await lazyLocalAcceptance();
3378
- if (!args.final_access) {
3379
- return {
3380
- result: {
3381
- error: "manual_review 验收缺少 final_access 真实访问证据",
3382
- diagnostic_code: "SF-ACCEPT-FINAL-ACCESS-REQUIRED",
3383
- recovery_next_tools: ["sf_accept", "sf_status"],
3384
- recovery_forbidden_tools: ["sf_verify", "sf_scaffold", "sf_classify", "sf_expand"],
3385
- },
3386
- };
3387
- }
3388
- const finalAccessResult = acceptanceModule.validateFinalAccess(args.final_access, "local_dev_server");
3389
- if (!finalAccessResult.passed) {
3390
- return {
3391
- result: {
3392
- error: `manual_review 验收证据不完整: ${finalAccessResult.blocking_reasons.join("; ")}`,
3393
- diagnostic_code: "SF-ACCEPT-FINAL-ACCESS-INVALID",
3394
- recovery_next_tools: ["sf_accept", "sf_status"],
3395
- recovery_forbidden_tools: ["sf_verify", "sf_scaffold", "sf_classify", "sf_expand"],
3396
- },
3397
- };
3398
- }
3399
- }
3400
- // 设置本地验收证据
3401
- ctx.local_acceptance_evidence = {
3402
- status: runMode === "manual_review" ? "passed" : "not_applicable",
3403
- run_mode: runMode,
3404
- confirmed_by: confirmedBy,
3405
- confirmation_ref: confirmationRef,
3406
- final_access: args.final_access ?? {
3407
- frontend_urls: [],
3408
- backend_urls: [],
3409
- docs_or_swagger_urls: [],
3410
- start_commands: [],
3411
- stop_commands: [],
3412
- running_status: "not_started",
3413
- manual_review_steps_zh: [notes],
3414
- known_limits_zh: [],
3415
- },
3416
- evidence_refs: [evidenceRef],
3417
- };
3418
- await taskContext.save(ctx);
3419
- let updatedCtx = ctx;
3420
- // 产物确认必须经过统一生命周期校验,不直接改写 status。
3421
- if (ctx.artifact_output && ctx.artifact_output.status === "verified") {
3422
- updatedCtx = await taskContext.updateArtifactStatus(args.task_id, {
3423
- status: "accepted",
3424
- evidenceRef,
3425
- hasAcceptance: true,
3426
- }) ?? ctx;
3427
- }
3428
- return {
3429
- result: {
3430
- task_id: args.task_id,
3431
- acceptance_status: "passed",
3432
- run_mode: runMode,
3433
- evidence_ref: evidenceRef,
3434
- artifact_transition: updatedCtx.artifact_output
3435
- ? `${updatedCtx.artifact_output.status}`
3436
- : "no_artifact",
3437
- },
3438
- };
3439
- });
3440
- // ── sf_deliver: 自动提交、推送、创建 PR ──
3441
- registerSafeTool("sf_deliver", "验收后自动提交代码、推送、创建 PR 和生成变更日志", DeliverSchema, async (args) => {
3442
- const ctx = await taskContext.load(args.task_id);
3443
- if (!ctx) {
3444
- return {
3445
- result: { error: "任务不存在" },
3446
- };
3447
- }
3448
- // H4: 交付前工作区完整性检查 — advisory 模式,仅警告不阻断
3449
- const deliverIntegrity = await ioController.verify();
3450
- const h4DeliverWarning = !deliverIntegrity.clean
3451
- ? { warning: `H4 advisory: ${deliverIntegrity.message}`, dirty_files: deliverIntegrity.dirty_files }
3452
- : undefined;
3453
- // 模板契约修复指令优先于通用产物状态提示,确保客户端获得可执行的修复重验路径。
3454
- if (ctx.repair_reverify_directive) {
3455
- return {
3456
- result: {
3457
- error: "存在未清零的模板契约修复指令,需完成修复重验后才能交付",
3458
- diagnostic_code: TOOL_DIAGNOSTIC_CODES.contractDraft,
3459
- repair_directive: ctx.repair_reverify_directive,
3460
- recovery: "修复文档缺口后重新执行 sf_verify,验证通过后 repair_reverify_directive 自动清零",
3461
- recovery_next_tools: ["sf_learn", "sf_deliver", "sf_status"],
3462
- recovery_forbidden_tools: ["sf_verify", "sf_scaffold", "sf_classify", "sf_expand"],
3463
- },
3464
- };
3465
- }
3466
- // 问题六十六/六十七: 审查或验证阶段产生的工程硬失败不得进入交付。
3467
- const oodModule = await lazyOodSolid();
3468
- if (oodModule.hasBlockingSolidFindings(ctx.ood_solid_findings ?? [])) {
3469
- return {
3470
- result: {
3471
- error: "OOD/SOLID 契约仍存在硬失败,不得交付",
3472
- diagnostic_code: TOOL_DIAGNOSTIC_CODES.oodDeliveryBlock,
3473
- findings: ctx.ood_solid_findings,
3474
- recovery: "按 finding 修复职责或依赖边界,并重新执行 sf_review 与 sf_verify",
3475
- },
3476
- };
3477
- }
3478
- const backendModule = await lazyBackendImplementation();
3479
- if (backendModule.hasBlockingBackendFindings(ctx.backend_implementation_findings ?? [])) {
3480
- return {
3481
- result: {
3482
- error: "后端实现工程契约仍存在硬失败,不得交付",
3483
- diagnostic_code: TOOL_DIAGNOSTIC_CODES.backendDeliveryBlock,
3484
- findings: ctx.backend_implementation_findings,
3485
- recovery: "按 finding 修复后端边界、安全或一致性问题,并重新执行 sf_review 与 sf_verify",
3486
- },
3487
- };
3488
- }
3489
- // 问题六十八: 代码可维护性与可观测性 P0 阻断交付。
3490
- const obsModule = await lazyCodeObservability();
3491
- const obsDeliveryBlock = obsModule.evaluateDeliveryBlock(ctx.code_observability_findings ?? []);
3492
- if (obsDeliveryBlock.blocked) {
3493
- return {
3494
- result: {
3495
- error: `代码可维护性/可观测性存在阻断: ${obsDeliveryBlock.reason_zh}`,
3496
- diagnostic_code: TOOL_DIAGNOSTIC_CODES.codeObservabilityFinding,
3497
- findings: obsDeliveryBlock.blocking_findings,
3498
- recovery: "按 finding 修复敏感信息泄漏、缺失日志或吞异常问题,并重新执行 sf_review 与 sf_verify",
3499
- },
3500
- };
3501
- }
3502
- // 产物状态门控: deliver 需要产物状态为 accepted 且有证据
3503
- if (ctx.artifact_output) {
3504
- const status = ctx.artifact_output.status;
3505
- if (status === "draft") {
3506
- return {
3507
- result: {
3508
- error: `产物状态为 ${status},需先通过验证 (verified) 并确认 (accepted) 才能交付`,
3509
- artifact_id: ctx.artifact_output.artifact_id,
3510
- current_status: status,
3511
- },
3512
- };
3513
- }
3514
- if (status === "verified") {
3515
- return {
3516
- result: {
3517
- error: `产物状态为 ${status},需人工确认或后续 workflow 采用后变为 accepted 才能交付`,
3518
- artifact_id: ctx.artifact_output.artifact_id,
3519
- current_status: status,
3520
- },
3521
- };
3522
- }
3523
- // accepted 必须有确认证据
3524
- if (status === "accepted") {
3525
- const hasAcceptanceEvidence = ctx.artifact_output.evidence_refs.some((r) => r.includes("acceptance") || r.includes("workflow_adoption"));
3526
- if (!hasAcceptanceEvidence) {
3527
- return {
3528
- result: {
3529
- error: `产物状态为 accepted 但缺少确认证据 (acceptance/workflow_adoption evidence_ref)`,
3530
- artifact_id: ctx.artifact_output.artifact_id,
3531
- current_status: status,
3532
- },
3533
- };
3534
- }
3535
- }
3536
- }
3537
- // 问题六十二: 依赖设计产物的任务只有 implementation_ready 后才可交付。
3538
- if (ctx.design_artifact_pack && ctx.design_artifact_pack.status !== "implementation_ready") {
3539
- return {
3540
- result: {
3541
- error: `设计产物包状态为 ${ctx.design_artifact_pack.status},未达到 implementation_ready,不得交付`,
3542
- diagnostic_code: "SF-DESIGN-PACK-NOT-READY",
3543
- findings: ctx.design_artifact_pack.findings,
3544
- recovery: "请完成设计产物真实复验并修复所有阻断项后重新交付",
3545
- },
3546
- };
3547
- }
3548
- if (ctx.traceability_binding && ctx.traceability_binding.status !== "bound") {
3549
- return {
3550
- result: {
3551
- error: "追踪绑定未闭合,不得交付编码结果",
3552
- diagnostic_code: TOOL_DIAGNOSTIC_CODES.traceabilityDeliveryBlocked,
3553
- traceability_binding: ctx.traceability_binding,
3554
- recovery: "补齐需求/原型/设计/切片/验收追踪矩阵并重新 sf_expand → sf_verify,通过后再 sf_deliver",
3555
- },
3556
- };
3557
- }
3558
- // 交付 lease 互斥检查
3559
- const leaseModule = await lazyWorkspaceLease();
3560
- const deliverLease = leaseModule.acquireLease(args.task_id, "delivery", [projectPath]);
3561
- if (deliverLease.lease?.status === "conflicted" || deliverLease.conflicts.length > 0) {
3562
- return {
3563
- result: {
3564
- error: `交付 lease 冲突: ${deliverLease.conflicts.map((c) => `${c.conflict_type}: ${c.conflict_path}`).join(", ")}`,
3565
- conflicts: deliverLease.conflicts,
3566
- },
3567
- };
3568
- }
3569
- // 交付就绪评估 — delivery_allowed=false 必须阻断交付
3570
- const drModule = await lazyDeliveryReadiness();
3571
- const guardModule = await lazyEnforcementGuard();
3572
- const currentVResult = ctx.verification_result;
3573
- const currentVPlan = ctx.verification_plan;
3574
- const guardFindings = guardModule.evaluateDeliveryReadinessGuard(currentVResult, currentVPlan);
3575
- // 问题五十一: 编码就绪门 — 交付前检查 coding readiness
3576
- const codingGate = await checkCodingReadinessGate({ ctx });
3577
- if (!codingGate.allowed) {
3578
- if (deliverLease.lease) {
3579
- leaseModule.releaseLease(deliverLease.lease.lease_id);
3580
- }
3581
- return {
3582
- result: {
3583
- error: `编码就绪检查未通过: ${codingGate.reason_zh}`,
3584
- missing_preconditions: codingGate.missing_preconditions,
3585
- status: "blocked",
3586
- recovery: "请先满足编码就绪条件(测试计划、验收标准、主链路入口)",
3587
- },
3588
- };
3589
- }
3590
- const metricsData = await (await lazyObservability()).collectDeliveryMetricSamples(taskContext.getStateDir());
3591
- // acceptanceConfig: 从项目配置推断 project_run_mode
3592
- const projectHasFrontend = config.tech_stack.frontend.lang && config.tech_stack.frontend.lang !== "none";
3593
- const projectHasBackend = config.tech_stack.backend.lang && config.tech_stack.backend.lang !== "none";
3594
- const readinessReport = drModule.evaluateDeliveryReadiness(args.task_id, currentVResult, guardFindings, true, // scope_check — 已在 sf_verify 写入护栏中检查
3595
- deliverLease.conflicts.length === 0, // lease_check — 无冲突即通过
3596
- true, // privacy_check — 已在任务创建时脱敏
3597
- true, // artifact_acceptance — 上面已检查产物状态
3598
- metricsData, projectHasFrontend ? { final_access: { frontend_urls: [], backend_urls: [], docs_or_swagger_urls: [], start_commands: [], stop_commands: [], running_status: "not_started", manual_review_steps_zh: [], known_limits_zh: [] }, project_run_mode: "local_dev_server" } : undefined);
3599
- // 保存就绪报告到任务上下文
3600
- const ctxForReadiness = await taskContext.load(args.task_id);
3601
- if (ctxForReadiness) {
3602
- ctxForReadiness.delivery_readiness = readinessReport;
3603
- await taskContext.save(ctxForReadiness);
3604
- }
3605
- if (!readinessReport.delivery_allowed) {
3606
- // 释放 lease 并阻断交付
3607
- if (deliverLease.lease) {
3608
- leaseModule.releaseLease(deliverLease.lease.lease_id);
3609
- }
3610
- return {
3611
- result: {
3612
- error: `交付就绪检查未通过: ${readinessReport.blocking_findings.map((f) => f.message_zh).join("; ")}`,
3613
- delivery_readiness: readinessReport,
3614
- },
3615
- };
3616
- }
3617
- // 问题五十二: 本地验收门 — 前端/全栈交付前必须有本地访问证据(仅在有施工指令契约时强制)
3618
- const hasInstructionContract = !!ctx?.instruction_contract;
3619
- if (hasInstructionContract) {
3620
- const localAcceptanceGate = await checkLocalAcceptanceGate({
3621
- ctx,
3622
- hasFrontend: !!projectHasFrontend,
3623
- hasBackend: !!projectHasBackend,
3624
- hasDockerCompose: false,
3625
- hasDockerfile: false,
3626
- });
3627
- if (!localAcceptanceGate.allowed) {
3628
- if (deliverLease.lease) {
3629
- leaseModule.releaseLease(deliverLease.lease.lease_id);
3630
- }
3631
- return {
3632
- result: {
3633
- error: `本地验收检查未通过: ${localAcceptanceGate.reason_zh}`,
3634
- required_but_missing: localAcceptanceGate.required_but_missing,
3635
- status: "blocked",
3636
- recovery: "请提供本地运行证据或说明 not_applicable 原因(如纯后端 API 项目)",
3637
- },
3638
- };
3639
- }
3640
- }
3641
- // 问题六十:交付结论必须经过 UnsupportedClaimGate
3642
- {
3643
- const { createEvidenceGroundingSystem, assessTaskRisk } = await import("../../engine/evidence_grounding_contract.js");
3644
- const _dRoute = ctx.route_decision?.route ?? ctx.classification?.route_decision?.route;
3645
- const _dRisk = assessTaskRisk(ctx.classification?.task_type, _dRoute, ctx.intent);
3646
- if (_dRisk !== "low") {
3647
- const _deg = createEvidenceGroundingSystem();
3648
- // 注册验证结果和交付上下文
3649
- if (currentVResult) {
3650
- _deg.registry.register({
3651
- source_type: "validation_result",
3652
- authority: "authoritative",
3653
- freshness: "current",
3654
- permission: "allowed",
3655
- scope: "verification",
3656
- description: `验证状态: ${currentVResult.status}`,
3657
- source_ref: `verification:${args.task_id}`,
3658
- });
3659
- }
3660
- _deg.registry.register({
3661
- source_type: "task_context",
3662
- authority: "authoritative",
3663
- freshness: "current",
3664
- permission: "allowed",
3665
- scope: "delivery",
3666
- description: "交付上下文",
3667
- source_ref: `task:${args.task_id}`,
3668
- });
3669
- const _dClaims = [
3670
- {
3671
- id: "claim-deliver-1",
3672
- category: "release_status",
3673
- claim_text: "交付基于真实验证结果",
3674
- evidence_ids: _deg.registry.query({ source_type: "validation_result" }).map((e) => e.id),
3675
- is_uncertain: false,
3676
- risk_level: _dRisk,
3677
- },
3678
- ];
3679
- const _dMatrix = _deg.builder.buildContext(_dClaims, { target_claims: ["交付验证"], source_types: ["validation_result", "task_context"], keywords: ["验证", "交付"], max_results: 10 });
3680
- _dMatrix.task_id = args.task_id;
3681
- const _dGateResult = _deg.gate.evaluate(_dMatrix, _dRisk);
3682
- // 写回 TaskContext(blocked 也保存)
3683
- await taskContext.setEvidenceGroundingResult(args.task_id, {
3684
- evidence_matrix: _dMatrix,
3685
- evidence_gate_result: _dGateResult,
3686
- unsupported_claims: _dGateResult.unsupported_claims,
3687
- conflict_resolutions: _dMatrix.conflicts,
3688
- });
3689
- if (!_dGateResult.allowed) {
3690
- if (deliverLease.lease) {
3691
- leaseModule.releaseLease(deliverLease.lease.lease_id);
3692
- }
3693
- return {
3694
- result: {
3695
- error: `证据驱动门禁未通过: ${_dGateResult.reason_zh}`,
3696
- diagnostic_code: _dGateResult.diagnostic_code,
3697
- unsupported_claims: _dGateResult.unsupported_claims,
3698
- },
3699
- };
3700
- }
3701
- }
3702
- }
3703
- // 交付前检查 false completion(通过提取的主链路函数)
3704
- const cepNfcResult = await assessCepBeforeDelivery({
3705
- task_id: args.task_id,
3706
- verification_passed: currentVResult?.status === "passed",
3707
- build_passed: (currentVResult?.passed_commands ?? 0) > 0,
3708
- browser_acceptance_passed: ctx.artifact_output?.status === "accepted" || ctx.artifact_output === undefined,
3709
- guard_passed: guardFindings.length === 0 || guardFindings.every((f) => f.severity !== "hard_fail"),
3710
- evidence_sufficient: (currentVResult?.evidence_ids?.length ?? 0) > 0,
3711
- current_status: ctx.status === "done" ? "完成" : ctx.status,
3712
- });
3713
- if (cepNfcResult.decision === "blocked" || cepNfcResult.decision === "回退") {
3714
- if (deliverLease.lease) {
3715
- leaseModule.releaseLease(deliverLease.lease.lease_id);
3716
- }
3717
- const ctxForCep = await taskContext.load(args.task_id);
3718
- if (ctxForCep) {
3719
- ctxForCep.core_experience_evaluation = {
3720
- task_id: args.task_id,
3721
- workflow_id: "sf_deliver",
3722
- evaluated_principles: ["auto_repair_no_fake_completion"],
3723
- violations: [{
3724
- principle: "auto_repair_no_fake_completion",
3725
- severity: "blocking",
3726
- reason_zh: cepNfcResult.reason_zh,
3727
- evidence_refs: [],
3728
- required_action: cepNfcResult.decision === "blocked" ? "block_delivery" : "回退",
3729
- }],
3730
- user_facing_summary_zh: `CEP 检查未通过: ${cepNfcResult.reason_zh}`,
3731
- internal_trace_refs: [],
3732
- passed: false,
3733
- };
3734
- await taskContext.save(ctxForCep);
3735
- }
3736
- return {
3737
- result: {
3738
- error: `CEP false completion 检查未通过: ${cepNfcResult.reason_zh}`,
3739
- cep_decision: cepNfcResult.decision,
3740
- },
3741
- };
3742
- }
3743
- const result = await (await lazyDelivery()).deliver({
3744
- taskContext: ctx,
3745
- config,
3746
- knowledgeIndex,
3747
- projectPath,
3748
- gitOps: (await lazyGitDeps()).realGitOps,
3749
- skipPush: args.skip_push,
3750
- skipPr: args.skip_pr,
3751
- });
3752
- await taskContext.setDelivery(args.task_id, result);
3753
- // 交付完成后释放 lease
3754
- if (deliverLease.lease) {
3755
- leaseModule.releaseLease(deliverLease.lease.lease_id);
3756
- }
3757
- return {
3758
- result: h4DeliverWarning ? { ...result, h4_advisory: h4DeliverWarning } : result,
3759
- };
3760
- });
3761
- // ── sf_coord_check: 预测性冲突检测和跨仓库协调 ──
3762
- registerSafeTool("sf_coord_check", "预测性冲突检测和跨仓库协调提示,检查分支状态、本地变更和潜在冲突", CoordCheckSchema, async (args) => {
3763
- const result = await (await lazyChangeCoord()).checkConflicts({
3764
- projectPath,
3765
- config,
3766
- branch: args.branch,
3767
- gitOps: (await lazyGitDeps()).realGitOps,
3768
- });
3769
- return {
3770
- result: result,
3771
- };
3772
- });
3773
- // ── sf_team_status: 团队活动流和工作负载查询 ──
3774
- registerSafeTool("sf_team_status", "查询团队活动流、成员工作负载、过期分支和知识库更新状态", TeamStatusSchema, async (args) => {
3775
- const result = await (await lazyTeam()).getTeamStatus({
3776
- projectPath,
3777
- config,
3778
- since: args.since,
3779
- gitOps: (await lazyGitDeps()).realGitOps,
3780
- knowledgeIndex: args.include_knowledge ? knowledgeIndex : undefined,
3781
- });
3782
- return {
3783
- result: result,
3784
- };
3785
- });
3786
- // ── sf_contract_check: API 契约变更检测 ──
3787
- registerSafeTool("sf_contract_check", "检测 API 契约变更(路由、DTO 字段等),评估破坏性影响和跨服务依赖", ContractCheckSchema, async (args) => {
3788
- let changedFiles = args.changed_files;
3789
- if (!changedFiles) {
3790
- const ctx = await taskContext.load(args.task_id);
3791
- changedFiles = ctx?.execution?.changed_files ?? [];
3792
- }
3793
- const result = await (await lazyContractGuard()).checkContractChanges({
3794
- changedFiles,
3795
- projectPath,
3796
- config,
3797
- gitOps: (await lazyGitDeps()).realGitOps,
3798
- });
3799
- return {
3800
- result: result,
3801
- };
3802
- });
3803
- // ── sf_onboard: 新人分步引导 ──
3804
- registerSafeTool("sf_onboard", "新人分步引导:项目概览 → 代码导览 → 知识回顾 → 首个任务建议", OnboardSchema, async (args) => {
3805
- const result = await (await lazyOnboarding()).onboard({
3806
- config,
3807
- projectPath,
3808
- knowledgeIndex,
3809
- gitOps: (await lazyGitDeps()).realGitOps,
3810
- currentStep: args.step,
3811
- reset: args.reset,
3812
- });
3813
- return {
3814
- result: result,
3815
- };
3816
- });
3817
- // ── sf_feasibility_check: 任务可行性评估 ──
3818
- registerSafeTool("sf_feasibility_check", "分析任务可行性:可行/风险/不可行三档评估,纯建议不阻断流程", FeasibilityCheckSchema, async (args) => {
3819
- const ctx = await taskContext.load(args.task_id);
3820
- if (!ctx?.classification) {
3821
- return {
3822
- result: { error: "任务不存在或未完成分类,请先调用 sf_classify" },
3823
- };
3824
- }
3825
- const result = (await lazyFeasibility()).checkFeasibility(ctx.classification, config);
3826
- return {
3827
- result: result,
3828
- };
3829
- });
3830
- // ── sf_debug: 智能排障(解析错误 → 根因分析 → 修复方案) ──
3831
- registerSafeTool("sf_debug", "智能排障:解析错误 → 追踪调用链 → 根因分析 → 修复方案 → 测试建议", DebugSchema, async (args) => {
3832
- const projectScope = [
3833
- ...config.scope.backend,
3834
- ...config.scope.frontend,
3835
- ];
3836
- const result = (await lazyDebugger()).debugError(args.error_output, args.task_id || `debug-${Date.now()}`, projectScope);
3837
- return {
3838
- result: result,
3839
- };
3840
- });
3841
- // ── sf_observability: 系统可观测和运行报告 ──
3842
- registerSafeTool("sf_observability", "系统可观测:运行指标、成本估算、告警检测、能力状态、周期报告", ObservabilitySchema, async (args) => {
3843
- const stateDir = taskContext.getStateDir();
3844
- const result = await (await lazyObservability()).generateReport(stateDir, args.period_days);
3845
- const capability = (await lazyCapability()).getSummary();
3846
- const output = { ...result, capability };
3847
- return {
3848
- result: output,
3849
- };
3850
- });
3851
- // ── sf_migration_check: 数据库迁移安全性分析 ──
3852
- registerSafeTool("sf_migration_check", "分析数据库迁移文件安全性:检测破坏性操作(DROP/DELETE/TRUNCATE)并生成回滚建议", MigrationCheckSchema, async (args) => {
3853
- const result = (await lazyMigration()).analyzeMigration(args.content, args.filename);
3854
- return {
3855
- result: result,
3856
- };
3857
- });
3858
- // ── sf_test_guide: 基于变更文件生成测试指引 ──
3859
- registerSafeTool("sf_test_guide", "根据变更文件类型生成测试指引:推荐测试类型、场景、Mock 点和断言模板", TestGuideSchema, async (args) => {
3860
- const result = (await lazyTestGen()).generateTestGuide(args.changed_files, [], config);
3861
- return {
3862
- result: result,
3863
- };
3864
- });
3865
- // ── sf_test_quality: 测试文件质量五维评分 ──
3866
- registerSafeTool("sf_test_quality", "评估测试文件质量:断言密度、边界覆盖、命名、重复率、场景覆盖五维评分", TestQualitySchema, async (args) => {
3867
- const result = (await lazyTestQuality()).analyzeTestQuality(args.content, args.filename);
3868
- return {
3869
- result: result,
3870
- };
3871
- });
3872
- // ── sf_dependency_scan: 依赖漏洞扫描 ──
3873
- registerSafeTool("sf_dependency_scan", "扫描依赖声明文件漏洞:已知 CVE 规则匹配、未锁定版本检测、支持 npm/maven/gradle", DependencyScanSchema, async (args) => {
3874
- const result = (await lazyDepScan()).scanDependencies(args.content, args.filename);
3875
- return {
3876
- result: result,
3877
- };
3878
- });
3879
- // ── sf_debt_report: 技术债务报告生成 ──
3880
- registerSafeTool("sf_debt_report", "生成技术债务报告:按分类/严重度聚合、30 天趋势、优先级排序 Top 5", {}, async () => {
3881
- const tracker = new (await lazyDebt()).DebtTracker(projectPath);
3882
- const result = await (await lazyDebtReport()).generateDebtReport(tracker);
3883
- return {
3884
- result: result,
3885
- };
3886
- });
3887
- // ── sf_explore: 自主技术选型与方案证伪 ──
3888
- registerSafeTool("sf_explore", "自主技术选型引擎:行业基准对比 + 四维权重矩阵 + 最优解宣誓 + 方案证伪 + A/B 决策诱导。禁止凭空捏造,必须基于行业标准", ExploreSchema, async (args) => {
3889
- let classification;
3890
- if (args.task_id) {
3891
- const ctx = await taskContext.load(args.task_id);
3892
- classification = ctx?.classification;
3893
- }
3894
- const result = (await lazyExploration()).exploreSolutions({
3895
- domain_query: args.domain_query,
3896
- projectConfig: config,
3897
- classification,
3898
- knowledgeIndex,
3899
- });
3900
- // 决策契约 advisory: sf_explore 应始终通过(10 字段已内置)
3901
- const decisionContract = (await lazyDecision()).validateDecisionOutput(result);
3902
- const exploreExtras = {};
3903
- if (!decisionContract.passed) {
3904
- exploreExtras.decision_contract_advisory = decisionContract.advisory;
3905
- }
3906
- return { result: Object.keys(exploreExtras).length > 0 ? { ...result, ...exploreExtras } : result };
3907
- });
3908
- // ── sf_knowledge_audit: 知识库健康审计 ──
3909
- registerSafeTool("sf_knowledge_audit", "审计知识库:识别过时条目、重复触发词、格式缺失、覆盖缺口。定期执行或手动触发", {}, async () => {
3910
- const result = await (await lazyKnowledge()).auditKnowledge(knowledgeIndex, config);
3911
- return {
3912
- result: result,
3913
- };
3914
- });
3915
- // ── sf_knowledge_add: 新增知识条目(默认保存为草稿) ──
3916
- const KnowledgeAddSchema = {
3917
- title: z.string().describe("知识条目标题(英文 kebab-case,如 payment-rules)"),
3918
- type: z.enum(["pattern", "procedure", "pipeline_procedure", "domain", "acceptance_template", "review_rule"]).describe("知识类型"),
3919
- scope: z.array(z.string()).describe("适用范围(如 [backend]、[frontend]、[backend, frontend])"),
3920
- when_triggers: z.string().describe("触发关键词(逗号分隔)"),
3921
- decision_rules: z.string().optional().describe("决策规则(每行一条)"),
3922
- save_to_drafts: z.boolean().optional().describe("是否保存为草稿(默认 true,需人工 review 后移入正式目录)"),
3923
- auto_enrich: z.boolean().optional().describe("是否返回行业最佳实践探索指引(默认 true,宿主 AI 将自动执行探索并填充内容)"),
3924
- confirm: z.boolean().optional().describe("显式确认写入知识库,必须为 true"),
3925
- authorized: z.boolean().optional().describe("confirm 的兼容别名"),
3926
- };
3927
- registerSafeTool("sf_knowledge_add", "新增知识条目。默认保存为草稿到 .soloforge/knowledge/drafts/,人工确认后移入正式目录", KnowledgeAddSchema, async (args) => {
3928
- const result = await (await lazyKnowledge()).addKnowledge({
3929
- title: args.title,
3930
- type: args.type,
3931
- scope: args.scope,
3932
- when_triggers: args.when_triggers,
3933
- decision_rules: args.decision_rules,
3934
- save_to_drafts: args.save_to_drafts,
3935
- auto_enrich: args.auto_enrich,
3936
- }, config);
3937
- return {
3938
- result: result,
3939
- };
3940
- });
3941
- // ── sf_knowledge_update: 更新已有知识条目(自动创建备份) ──
3942
- const KnowledgeUpdateSchema = {
3943
- entry_name: z.string().describe("要更新的知识条目名称(如 payment-rules)"),
3944
- when_triggers: z.string().optional().describe("新的触发关键词(替换现有)"),
3945
- add_decision_rules: z.array(z.string()).optional().describe("追加的决策规则"),
3946
- add_acceptance_criteria: z.array(z.string()).optional().describe("追加的验收项"),
3947
- status: z.enum(["active", "deprecated"]).optional().describe("更新条目状态"),
3948
- confirm: z.boolean().optional().describe("显式确认写入知识库,必须为 true"),
3949
- authorized: z.boolean().optional().describe("confirm 的兼容别名"),
3950
- };
3951
- registerSafeTool("sf_knowledge_update", "更新已有知识条目:追加规则、更新触发词、标记废弃。自动创建备份", KnowledgeUpdateSchema, async (args) => {
3952
- const result = await (await lazyKnowledge()).updateKnowledge({
3953
- entry_name: args.entry_name,
3954
- updates: {
3955
- when_triggers: args.when_triggers,
3956
- add_decision_rules: args.add_decision_rules,
3957
- add_acceptance_criteria: args.add_acceptance_criteria,
3958
- status: args.status,
3959
- },
3960
- }, knowledgeIndex, config);
3961
- // 重载知识索引
3962
- if (result.success) {
3963
- await knowledgeIndex.reload();
3964
- }
3965
- return {
3966
- result: result,
3967
- };
3968
- });
3969
- // ── sf_resume_workspace: 工作区状态唤醒(解决前端刷新导致UUID丢失) ──
3970
- registerSafeTool("sf_resume_workspace", "扫描 .soloforge/state/ 目录,恢复中断工单并播报当前进度。新会话启动时必须优先调用", {}, async () => {
3971
- const result = await (await lazyWorkspaceResumer()).scanAndResume(taskContext);
3972
- // 认知锚点:按恢复任务的 changed_files 相关性加载,禁止全量
3973
- if (result.task) {
3974
- const ctx = await taskContext.load(result.task.task_id);
3975
- const changedFiles = ctx?.execution?.changed_files;
3976
- if (changedFiles && changedFiles.length > 0) {
3977
- const anchors = await loadRelevantAnchors({ file_paths: changedFiles });
3978
- if (anchors && anchors.length > 0) {
3979
- result.cognitive_anchors = anchors;
3980
- }
3981
- }
3982
- }
3983
- // JobManager advisory: 查询活跃 jobs
3984
- try {
3985
- const jm = new (await lazyJob()).JobManager(taskContext.getStateDir());
3986
- const activeJobs = await jm.listActiveJobs();
3987
- if (activeJobs.length > 0) {
3988
- result.active_jobs = activeJobs.map((j) => ({
3989
- job_id: j.job_id,
3990
- task_id: j.task_id,
3991
- phase: j.current_phase,
3992
- is_alive: j.is_alive,
3993
- latest_anchor_summary: j.latest_anchor?.summary,
3994
- checkpoint_count: j.checkpoint_count,
3995
- }));
3996
- }
3997
- }
3998
- catch {
3999
- // JobManager advisory — 忽略错误
4000
- }
4001
- return {
4002
- result: result,
4003
- };
4004
- });
4005
- // ── sf_audit_sample: 从审计池按风险加权抽样生成抽检清单 ──
4006
- const AuditSampleSchema = {
4007
- seed: z.number().optional().describe("抽样种子(默认 0,同种子可复现)"),
4008
- };
4009
- registerSafeTool("sf_audit_sample", "从审计池按风险加权抽样,生成抽检清单(SamplingDecision 列表)。只读,不落盘,不生成逃逸报告,不改能力状态", AuditSampleSchema, async (args) => {
4010
- const stateDir = taskContext.getStateDir();
4011
- const pool = new (await lazyAuditPool()).AuditPool(stateDir);
4012
- const items = pool.list();
4013
- const seed = args.seed ?? 0;
4014
- const result = (await lazyAuditSampler()).sampleAuditItems(items, seed);
4015
- return {
4016
- result: result,
4017
- };
4018
- });
4019
- // ── sf_escape_report: 记录逃逸/误伤/工具故障报告 ──
4020
- const EscapeReportSchema = {
4021
- escape_id: z.string().describe("逃逸报告唯一 ID"),
4022
- task_id: z.string().describe("关联任务 ID"),
4023
- policy_id: z.string().describe("关联能力 policy ID"),
4024
- failure_type: z.enum(["rule_gap", "weak_test", "bad_evidence", "ai_escape", "human_miss", "tool_bug", "false_positive"]).describe("失败类型"),
4025
- expected_guard: z.string().describe("期望的守卫行为"),
4026
- actual_escape: z.string().describe("实际的逃逸行为"),
4027
- evidence: z.string().describe("证据"),
4028
- root_cause: z.string().describe("根因分析"),
4029
- fix_required: z.string().describe("修复要求"),
4030
- owner: z.string().describe("负责人"),
4031
- due_date: z.string().describe("修复截止日期"),
4032
- capability_action: z.enum(["keep", "downgrade", "disable", "promote_blocked"]).describe("建议的能力动作"),
4033
- created_at: z.string().optional().describe("报告时间(ISO,默认当前时间)"),
4034
- };
4035
- registerSafeTool("sf_escape_report", "记录逃逸、误伤或工具故障报告。只落盘记录,不自动降级,不改能力状态", EscapeReportSchema, async (args) => {
4036
- const stateDir = taskContext.getStateDir();
4037
- const store = new (await lazyEscape()).EscapeReportStore(stateDir);
4038
- const report = {
4039
- escape_id: args.escape_id,
4040
- task_id: args.task_id,
4041
- policy_id: args.policy_id,
4042
- failure_type: args.failure_type,
4043
- expected_guard: args.expected_guard,
4044
- actual_escape: args.actual_escape,
4045
- evidence: args.evidence,
4046
- root_cause: args.root_cause,
4047
- fix_required: args.fix_required,
4048
- owner: args.owner,
4049
- due_date: args.due_date,
4050
- capability_action: args.capability_action,
4051
- created_at: args.created_at ?? new Date().toISOString(),
4052
- };
4053
- store.append(report);
4054
- return {
4055
- result: { recorded: true, escape_id: report.escape_id },
4056
- };
4057
- });
4058
- // ── sf_capability_update: 根据复盘结果更新 Capability Registry ──
4059
- const CapabilityUpdateSchema = {
4060
- policy_id: z.string().describe("要更新的 policy ID(如 CAP-003)"),
4061
- target_state: z.enum(["enforced", "advisory", "experimental", "removed"]).describe("目标状态"),
4062
- reason: z.string().describe("变更原因"),
4063
- evidence_ids: z.array(z.string()).describe("支撑此变更的 escape report ID 列表"),
4064
- confirmed_by: z.string().describe("人工确认者标识(如操作者名字)"),
4065
- dry_run: z.boolean().optional().describe("dry_run 模式:只校验不持久化(默认 false)"),
4066
- confirm: z.boolean().describe("人工确认标志,必须为 true 才能执行变更"),
4067
- };
4068
- registerSafeTool("sf_capability_update", "根据复盘结果更新 Capability Registry 状态。支持 dry_run 校验、证据校验、人工确认。不会自动触发,必须显式调用", CapabilityUpdateSchema, async (args) => {
4069
- const stateDir = taskContext.getStateDir();
4070
- const escapeStore = new (await lazyEscape()).EscapeReportStore(stateDir);
4071
- const stateStore = new (await lazyCapState()).CapabilityStateStore(stateDir);
4072
- const escapeReports = escapeStore.list();
4073
- const capabilities = (await lazyCapability()).getAllCapabilities();
4074
- const cap = capabilities.find((c) => c.policy_id === args.policy_id);
4075
- const currentState = stateStore.getEffectiveState(args.policy_id, cap?.state ?? "experimental");
4076
- const result = stateStore.apply({
4077
- policy_id: args.policy_id,
4078
- target_state: args.target_state,
4079
- reason: args.reason,
4080
- evidence_ids: args.evidence_ids,
4081
- confirmed_by: args.confirmed_by,
4082
- dry_run: args.dry_run ?? false,
4083
- confirm: args.confirm,
4084
- }, currentState, cap?.id ?? null, escapeReports);
4085
- return {
4086
- result: result,
4087
- };
4088
- });
4089
- // ── sf_governance_report: 治理健康报告 ──
4090
- const GovernanceReportSchema = {
4091
- seed: z.number().optional().describe("抽样种子(用于计算 sampled_count,默认 0)"),
4092
- };
4093
- registerSafeTool("sf_governance_report", "生成治理健康报告:汇总审计池、逃逸报告、能力动作决策。只读,不改状态", GovernanceReportSchema, async (args) => {
4094
- const stateDir = taskContext.getStateDir();
4095
- const seed = args.seed ?? 0;
4096
- const pool = new (await lazyAuditPool()).AuditPool(stateDir);
4097
- const escapeStore = new (await lazyEscape()).EscapeReportStore(stateDir);
4098
- const auditItems = pool.list();
4099
- const auditStats = pool.stats();
4100
- const escapeReports = escapeStore.list();
4101
- const escapeStats = escapeStore.stats();
4102
- // 为所有能力生成动作决策(使用有效状态)
4103
- const capabilities = (await lazyCapability()).getAllCapabilities();
4104
- const stateStore = new (await lazyCapState()).CapabilityStateStore(stateDir);
4105
- const decisions = await Promise.all(capabilities.map(async (cap) => {
4106
- const effectiveState = stateStore.getEffectiveState(cap.policy_id, cap.state);
4107
- return (await lazyCapAdvisor()).decideAction(escapeReports, effectiveState, cap.policy_id);
4108
- }));
4109
- // 为 sampled_count 生成抽样决策
4110
- const sampleResult = (await lazyAuditSampler()).sampleAuditItems(auditItems, seed);
4111
- // 双层机制发现
4112
- const dlFindings = (await lazyDualLayer()).validateMechanismLayerMaps();
4113
- const dlMechanismCount = (await lazyDualLayer()).listMechanismLayerMaps().length;
4114
- // 收集近期任务的产物记录
4115
- const recentTasks = await taskContext.listRecent(20);
4116
- const artifacts = [];
4117
- for (const t of recentTasks) {
4118
- const tCtx = await taskContext.load(t.task_id);
4119
- if (tCtx?.artifact_output)
4120
- artifacts.push(tCtx.artifact_output);
4121
- }
4122
- // 收集配置解析报告 — 使用共享函数获取真实数据
4123
- let configReports = [];
4124
- let configEntries = [];
4125
- try {
4126
- const resolved = await (await lazyConfigPrecedence()).resolveCurrentProjectConfigReports(projectPath);
4127
- configReports = resolved.reports;
4128
- configEntries = resolved.entries;
4129
- }
4130
- catch (e) {
4131
- internalWarn("配置报告", "解析失败:", e instanceof Error ? e.message : String(e));
4132
- }
4133
- // 同时包含近期任务上下文中的报告
4134
- for (const t of recentTasks) {
4135
- const tCtx = await taskContext.load(t.task_id);
4136
- if (tCtx?.expansion?.config_resolution_reports) {
4137
- configReports.push(...tCtx.expansion.config_resolution_reports);
4138
- }
4139
- }
4140
- const report = (await lazyGovernance()).generateReport(auditStats, auditItems, escapeReports, escapeStats, decisions, new Date(), sampleResult.decisions, dlFindings, dlMechanismCount, artifacts.length > 0 ? artifacts : undefined, configReports.length > 0 ? configReports : undefined, configEntries.length > 0 ? configEntries : undefined);
4141
- return {
4142
- result: report,
4143
- };
4144
- });
4145
- // ── sf_audit_integration: 主链路集成审计 ──
4146
- const AuditIntegrationSchema = {
4147
- changed_files: z.array(z.string()).optional().describe("只审计指定的变更文件列表"),
4148
- json_output: z.boolean().optional().describe("以 JSON 格式输出(默认为人类可读文本)"),
4149
- };
4150
- registerSafeTool("sf_audit_integration", "审计生产代码的主链路集成状态,检测孤岛模块(只被测试导入、无生产代码调用的模块)", AuditIntegrationSchema, async (args) => {
4151
- const projectPath = config._projectPath || process.cwd();
4152
- // 使用作用域感知的生产文件收集(支持多仓库、多语言)
4153
- const { collectAllProductionFiles } = await import("../../engine/main_path_integration_contract.js");
4154
- const allProdFiles = collectAllProductionFiles(projectPath, config);
4155
- if (allProdFiles.length === 0) {
4156
- return {
4157
- result: { error: "未找到生产源文件" },
4158
- };
4159
- }
4160
- const targetFiles = args.changed_files
4161
- ? allProdFiles.filter((rel) => args.changed_files.some((cf) => rel === cf || rel.startsWith(cf.replace(/\.(ts|tsx|js|jsx|java|kt|go|py)$/, ""))))
4162
- : allProdFiles;
4163
- const contracts = (await lazyMainPath()).buildMainPathIntegrationContracts(projectPath, targetFiles, config);
4164
- const report = (await lazyMainPath()).auditIntegration(contracts);
4165
- if (args.json_output) {
4166
- return {
4167
- result: report,
4168
- };
4169
- }
4170
- const lines = [];
4171
- lines.push("主链路集成审计报告");
4172
- lines.push(`受检模块: ${targetFiles.length} | 孤岛: ${report.orphan_modules.length} | 仅测试: ${report.test_only_modules.length} | 仅注册: ${report.registry_only_modules.length}`);
4173
- lines.push("");
4174
- for (const finding of report.findings) {
4175
- const icon = finding.severity === "hard_fail" ? "X" : finding.severity === "warning" ? "~" : "i";
4176
- lines.push(`${icon} ${finding.module_path}: ${finding.reason}`);
4177
- if (finding.recommended_action) {
4178
- lines.push(` -> ${finding.recommended_action}`);
4179
- }
4180
- }
4181
- if (report.findings.length === 0) {
4182
- lines.push("所有受检模块已通过集成检查。");
4183
- }
4184
- return {
4185
- result: { text: lines.join("\n") },
4186
- };
4187
- });
4188
- // ── sf_navigation: 工作流导航 — 问题六十五 ──
4189
- const NavigationSchema = {
4190
- project_path: z.string().optional().describe("项目路径(可选,默认当前目录)"),
4191
- };
4192
- registerSafeTool("sf_navigation", "查询工作流导航: 当前项目阶段、任务阶段、下一步操作和禁止操作。用于\"下一步\"\"继续\"\"现在能写代码吗\"等模糊推进意图。不得靠模型经验回答,必须调用此工具获取真实导航状态", NavigationSchema, async (args) => {
4193
- const projectPath = args.project_path || config._projectPath || process.cwd();
4194
- const { planNextAction } = await import("../../engine/next_action_planner.js");
4195
- const plan = await planNextAction(projectPath);
4196
- return {
4197
- result: {
4198
- project_stage: plan.project_stage,
4199
- task_stage: plan.task_stage,
4200
- current_task_id: plan.current_task_id,
4201
- confidence: plan.confidence,
4202
- stage_evidence: plan.stage_evidence,
4203
- blocking_reasons: plan.blocking_reasons,
4204
- stale_task: plan.stale_task,
4205
- confirmation_decisions: plan.confirmation_decisions,
4206
- work_package: plan.work_package ? {
4207
- id: plan.work_package.id,
4208
- goal_zh: plan.work_package.goal_zh,
4209
- description_zh: plan.work_package.description_zh,
4210
- action: plan.work_package.action,
4211
- tool_name: plan.work_package.tool_name,
4212
- must_read: plan.work_package.must_read,
4213
- forbidden_changes: plan.work_package.forbidden_changes,
4214
- expected_outputs: plan.work_package.expected_outputs,
4215
- acceptance_commands: plan.work_package.acceptance_commands,
4216
- } : null,
4217
- disallowed_actions: plan.disallowed_actions,
4218
- recommended_commands: plan.recommended_commands,
4219
- recommended_prompt_zh: plan.recommended_prompt_zh,
4220
- },
4221
- };
4222
- });
4223
- }
8
+ export { registerTools } from "../../server/tools/index.js";
9
+ export { createToolRegistrar } from "../../server/tools/middleware.js";
4224
10
  //# sourceMappingURL=tools.js.map