@dommaker/harness 0.16.9 → 0.17.1

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 (337) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +33 -32
  3. package/bin/harness.js +33 -20
  4. package/dist/cli/commands/check.d.ts +3 -2
  5. package/dist/cli/commands/check.d.ts.map +1 -1
  6. package/dist/cli/commands/check.js +69 -36
  7. package/dist/cli/commands/check.js.map +1 -1
  8. package/dist/cli/commands/constraints-report.d.ts +42 -0
  9. package/dist/cli/commands/constraints-report.d.ts.map +1 -0
  10. package/dist/cli/commands/constraints-report.js +233 -0
  11. package/dist/cli/commands/constraints-report.js.map +1 -0
  12. package/dist/cli/commands/constraints-retire.d.ts +71 -0
  13. package/dist/cli/commands/constraints-retire.d.ts.map +1 -0
  14. package/dist/cli/commands/constraints-retire.js +384 -0
  15. package/dist/cli/commands/constraints-retire.js.map +1 -0
  16. package/dist/cli/commands/constraints.d.ts +1 -1
  17. package/dist/cli/commands/constraints.d.ts.map +1 -1
  18. package/dist/cli/commands/constraints.js +4 -4
  19. package/dist/cli/commands/constraints.js.map +1 -1
  20. package/dist/cli/commands/index.d.ts +2 -1
  21. package/dist/cli/commands/index.d.ts.map +1 -1
  22. package/dist/cli/commands/index.js +10 -4
  23. package/dist/cli/commands/index.js.map +1 -1
  24. package/dist/cli/commands/init.d.ts +20 -0
  25. package/dist/cli/commands/init.d.ts.map +1 -1
  26. package/dist/cli/commands/init.js +81 -59
  27. package/dist/cli/commands/init.js.map +1 -1
  28. package/dist/cli/commands/report.js +4 -4
  29. package/dist/cli/commands/report.js.map +1 -1
  30. package/dist/cli/commands/status.d.ts.map +1 -1
  31. package/dist/cli/commands/status.js +3 -4
  32. package/dist/cli/commands/status.js.map +1 -1
  33. package/dist/cli/commands/sync-docs/capabilities-syncer.d.ts +5 -1
  34. package/dist/cli/commands/sync-docs/capabilities-syncer.d.ts.map +1 -1
  35. package/dist/cli/commands/sync-docs/capabilities-syncer.js +2 -10
  36. package/dist/cli/commands/sync-docs/capabilities-syncer.js.map +1 -1
  37. package/dist/cli/commands/validate.d.ts.map +1 -1
  38. package/dist/cli/commands/validate.js +1 -5
  39. package/dist/cli/commands/validate.js.map +1 -1
  40. package/dist/core/constraints/capabilities-parser.d.ts +7 -0
  41. package/dist/core/constraints/capabilities-parser.d.ts.map +1 -1
  42. package/dist/core/constraints/capabilities-parser.js +13 -0
  43. package/dist/core/constraints/capabilities-parser.js.map +1 -1
  44. package/dist/core/constraints/checker.d.ts +13 -5
  45. package/dist/core/constraints/checker.d.ts.map +1 -1
  46. package/dist/core/constraints/checker.js +62 -25
  47. package/dist/core/constraints/checker.js.map +1 -1
  48. package/dist/core/constraints/checkers/capability-sync.d.ts +9 -2
  49. package/dist/core/constraints/checkers/capability-sync.d.ts.map +1 -1
  50. package/dist/core/constraints/checkers/capability-sync.js +55 -22
  51. package/dist/core/constraints/checkers/capability-sync.js.map +1 -1
  52. package/dist/core/constraints/checkers/context-doc-sync.d.ts +3 -0
  53. package/dist/core/constraints/checkers/context-doc-sync.d.ts.map +1 -1
  54. package/dist/core/constraints/checkers/context-doc-sync.js +8 -2
  55. package/dist/core/constraints/checkers/context-doc-sync.js.map +1 -1
  56. package/dist/core/constraints/checkers/docs-freshness.d.ts +1 -0
  57. package/dist/core/constraints/checkers/docs-freshness.d.ts.map +1 -1
  58. package/dist/core/constraints/checkers/docs-freshness.js +39 -0
  59. package/dist/core/constraints/checkers/docs-freshness.js.map +1 -1
  60. package/dist/core/constraints/checkers/index.d.ts +8 -4
  61. package/dist/core/constraints/checkers/index.d.ts.map +1 -1
  62. package/dist/core/constraints/checkers/index.js +29 -46
  63. package/dist/core/constraints/checkers/index.js.map +1 -1
  64. package/dist/core/constraints/checkers/iron-flags.d.ts +6 -7
  65. package/dist/core/constraints/checkers/iron-flags.d.ts.map +1 -1
  66. package/dist/core/constraints/checkers/iron-flags.js +10 -17
  67. package/dist/core/constraints/checkers/iron-flags.js.map +1 -1
  68. package/dist/core/constraints/checkers/no-hardcoded-credentials.d.ts +13 -0
  69. package/dist/core/constraints/checkers/no-hardcoded-credentials.d.ts.map +1 -0
  70. package/dist/core/constraints/checkers/no-hardcoded-credentials.js +91 -0
  71. package/dist/core/constraints/checkers/no-hardcoded-credentials.js.map +1 -0
  72. package/dist/core/constraints/checkers/types.d.ts +15 -4
  73. package/dist/core/constraints/checkers/types.d.ts.map +1 -1
  74. package/dist/core/constraints/checkers/types.js +16 -4
  75. package/dist/core/constraints/checkers/types.js.map +1 -1
  76. package/dist/core/constraints/context-builder.d.ts +6 -3
  77. package/dist/core/constraints/context-builder.d.ts.map +1 -1
  78. package/dist/core/constraints/context-builder.js +29 -20
  79. package/dist/core/constraints/context-builder.js.map +1 -1
  80. package/dist/core/constraints/definitions/guidelines.d.ts +6 -2
  81. package/dist/core/constraints/definitions/guidelines.d.ts.map +1 -1
  82. package/dist/core/constraints/definitions/guidelines.js +29 -572
  83. package/dist/core/constraints/definitions/guidelines.js.map +1 -1
  84. package/dist/core/constraints/definitions/iron-laws.d.ts +6 -2
  85. package/dist/core/constraints/definitions/iron-laws.d.ts.map +1 -1
  86. package/dist/core/constraints/definitions/iron-laws.js +48 -231
  87. package/dist/core/constraints/definitions/iron-laws.js.map +1 -1
  88. package/dist/core/constraints/definitions/prompts.d.ts +12 -0
  89. package/dist/core/constraints/definitions/prompts.d.ts.map +1 -0
  90. package/dist/core/constraints/definitions/prompts.js +405 -0
  91. package/dist/core/constraints/definitions/prompts.js.map +1 -0
  92. package/dist/core/constraints/definitions.d.ts +15 -9
  93. package/dist/core/constraints/definitions.d.ts.map +1 -1
  94. package/dist/core/constraints/definitions.js +18 -12
  95. package/dist/core/constraints/definitions.js.map +1 -1
  96. package/dist/core/constraints/index.d.ts +3 -2
  97. package/dist/core/constraints/index.d.ts.map +1 -1
  98. package/dist/core/constraints/index.js +8 -2
  99. package/dist/core/constraints/index.js.map +1 -1
  100. package/dist/core/constraints/injection-drift.d.ts +48 -0
  101. package/dist/core/constraints/injection-drift.d.ts.map +1 -0
  102. package/dist/core/constraints/injection-drift.js +140 -0
  103. package/dist/core/constraints/injection-drift.js.map +1 -0
  104. package/dist/core/constraints/injection-renderer.d.ts +23 -0
  105. package/dist/core/constraints/injection-renderer.d.ts.map +1 -0
  106. package/dist/core/constraints/injection-renderer.js +44 -0
  107. package/dist/core/constraints/injection-renderer.js.map +1 -0
  108. package/dist/core/constraints/interceptor.d.ts.map +1 -1
  109. package/dist/core/constraints/interceptor.js +3 -2
  110. package/dist/core/constraints/interceptor.js.map +1 -1
  111. package/dist/core/constraints/usage-report.d.ts +95 -0
  112. package/dist/core/constraints/usage-report.d.ts.map +1 -0
  113. package/dist/core/constraints/usage-report.js +206 -0
  114. package/dist/core/constraints/usage-report.js.map +1 -0
  115. package/dist/core/effective-constraints.d.ts +47 -0
  116. package/dist/core/effective-constraints.d.ts.map +1 -0
  117. package/dist/core/effective-constraints.js +60 -0
  118. package/dist/core/effective-constraints.js.map +1 -0
  119. package/dist/core/index.d.ts +1 -0
  120. package/dist/core/index.d.ts.map +1 -1
  121. package/dist/core/index.js +2 -0
  122. package/dist/core/index.js.map +1 -1
  123. package/dist/core/project-config-loader.d.ts +17 -2
  124. package/dist/core/project-config-loader.d.ts.map +1 -1
  125. package/dist/core/project-config-loader.js +55 -8
  126. package/dist/core/project-config-loader.js.map +1 -1
  127. package/dist/dashboard/data.d.ts +1 -9
  128. package/dist/dashboard/data.d.ts.map +1 -1
  129. package/dist/dashboard/data.js +7 -15
  130. package/dist/dashboard/data.js.map +1 -1
  131. package/dist/dashboard/types.d.ts +13 -1
  132. package/dist/dashboard/types.d.ts.map +1 -1
  133. package/dist/index.d.ts +0 -4
  134. package/dist/index.d.ts.map +1 -1
  135. package/dist/index.js +1 -13
  136. package/dist/index.js.map +1 -1
  137. package/dist/monitoring/index.d.ts +0 -2
  138. package/dist/monitoring/index.d.ts.map +1 -1
  139. package/dist/monitoring/index.js +0 -2
  140. package/dist/monitoring/index.js.map +1 -1
  141. package/dist/monitoring/knowledge-evolver.d.ts +1 -1
  142. package/dist/monitoring/knowledge-evolver.js +1 -1
  143. package/dist/monitoring/trace-analyzer.d.ts +1 -1
  144. package/dist/monitoring/trace-analyzer.d.ts.map +1 -1
  145. package/dist/monitoring/trace-analyzer.js +16 -10
  146. package/dist/monitoring/trace-analyzer.js.map +1 -1
  147. package/dist/monitoring/traces.d.ts +2 -1
  148. package/dist/monitoring/traces.d.ts.map +1 -1
  149. package/dist/monitoring/traces.js +5 -3
  150. package/dist/monitoring/traces.js.map +1 -1
  151. package/dist/presets/standard.d.ts +3 -1
  152. package/dist/presets/standard.d.ts.map +1 -1
  153. package/dist/presets/standard.js +18 -8
  154. package/dist/presets/standard.js.map +1 -1
  155. package/dist/types/constraint.d.ts +51 -11
  156. package/dist/types/constraint.d.ts.map +1 -1
  157. package/dist/types/constraint.js +8 -4
  158. package/dist/types/constraint.js.map +1 -1
  159. package/dist/types/index.d.ts +1 -1
  160. package/dist/types/index.d.ts.map +1 -1
  161. package/dist/types/index.js.map +1 -1
  162. package/dist/types/monitoring-types.d.ts +2 -63
  163. package/dist/types/monitoring-types.d.ts.map +1 -1
  164. package/dist/types/monitoring-types.js +2 -2
  165. package/dist/types/project-config.d.ts +26 -1
  166. package/dist/types/project-config.d.ts.map +1 -1
  167. package/dist/types/trace.d.ts +16 -7
  168. package/dist/types/trace.d.ts.map +1 -1
  169. package/dist/types/trace.js +8 -0
  170. package/dist/types/trace.js.map +1 -1
  171. package/package.json +1 -1
  172. package/src/CONTEXT.md +2 -2
  173. package/src/__tests__/checker-extra.test.ts +228 -333
  174. package/src/__tests__/checker.test.ts +87 -724
  175. package/src/__tests__/constraint-doctor.test.ts +5 -5
  176. package/src/__tests__/doctor-extra.test.ts +164 -0
  177. package/src/__tests__/effective-constraints.test.ts +147 -0
  178. package/src/__tests__/extend-exceptions.test.ts +3 -3
  179. package/src/__tests__/iron-laws.test.ts +115 -91
  180. package/src/__tests__/no-hardcoded-credentials.test.ts +90 -0
  181. package/src/__tests__/presets.test.ts +7 -7
  182. package/src/__tests__/project-config-loader-extra.test.ts +41 -4
  183. package/src/__tests__/skip-semantics.test.ts +322 -0
  184. package/src/cli/commands/CONTEXT.md +5 -3
  185. package/src/cli/commands/__tests__/check-drift.test.ts +127 -0
  186. package/src/cli/commands/__tests__/check-skip-output.test.ts +128 -0
  187. package/src/cli/commands/__tests__/check.test.ts +14 -25
  188. package/src/cli/commands/__tests__/constraints-report.test.ts +327 -0
  189. package/src/cli/commands/__tests__/constraints-retire.test.ts +283 -0
  190. package/src/cli/commands/__tests__/init-injection.test.ts +234 -0
  191. package/src/cli/commands/__tests__/status-extra.test.ts +11 -11
  192. package/src/cli/commands/__tests__/status.test.ts +1 -1
  193. package/src/cli/commands/check.ts +72 -38
  194. package/src/cli/commands/constraints-report.ts +234 -0
  195. package/src/cli/commands/constraints-retire.ts +443 -0
  196. package/src/cli/commands/constraints.ts +5 -5
  197. package/src/cli/commands/index.ts +2 -1
  198. package/src/cli/commands/init.ts +94 -66
  199. package/src/cli/commands/report.ts +6 -6
  200. package/src/cli/commands/status.ts +3 -4
  201. package/src/cli/commands/sync-docs/capabilities-syncer.ts +5 -7
  202. package/src/cli/commands/validate.ts +1 -5
  203. package/src/core/CONTEXT.md +7 -4
  204. package/src/core/constraints/__tests__/injection-drift.test.ts +164 -0
  205. package/src/core/constraints/__tests__/interceptor.test.ts +4 -0
  206. package/src/core/constraints/capabilities-parser.ts +13 -0
  207. package/src/core/constraints/checker.ts +73 -28
  208. package/src/core/constraints/checkers/capability-sync.ts +72 -29
  209. package/src/core/constraints/checkers/context-doc-sync.ts +9 -2
  210. package/src/core/constraints/checkers/docs-freshness.ts +43 -0
  211. package/src/core/constraints/checkers/index.ts +38 -71
  212. package/src/core/constraints/checkers/iron-flags.ts +13 -49
  213. package/src/core/constraints/checkers/no-hardcoded-credentials.ts +93 -0
  214. package/src/core/constraints/checkers/types.ts +27 -5
  215. package/src/core/constraints/context-builder.ts +28 -19
  216. package/src/core/constraints/definitions/guidelines.ts +29 -597
  217. package/src/core/constraints/definitions/iron-laws.ts +48 -239
  218. package/src/core/constraints/definitions/prompts.ts +419 -0
  219. package/src/core/constraints/definitions.ts +18 -11
  220. package/src/core/constraints/index.ts +10 -1
  221. package/src/core/constraints/injection-drift.ts +139 -0
  222. package/src/core/constraints/injection-renderer.ts +44 -0
  223. package/src/core/constraints/interceptor.ts +3 -2
  224. package/src/core/constraints/usage-report.ts +254 -0
  225. package/src/core/effective-constraints.ts +85 -0
  226. package/src/core/index.ts +4 -1
  227. package/src/core/project-config-loader.ts +59 -9
  228. package/src/dashboard/__tests__/data.test.ts +5 -12
  229. package/src/dashboard/data.ts +9 -19
  230. package/src/dashboard/types.ts +18 -1
  231. package/src/index.ts +0 -12
  232. package/src/knowledge/CONTEXT.md +2 -2
  233. package/src/monitoring/CONTEXT.md +3 -4
  234. package/src/monitoring/index.ts +0 -2
  235. package/src/monitoring/knowledge-evolver.ts +1 -1
  236. package/src/monitoring/trace-analyzer.ts +15 -10
  237. package/src/monitoring/traces.ts +10 -6
  238. package/src/presets/__tests__/standard.test.ts +11 -9
  239. package/src/presets/standard.ts +24 -15
  240. package/src/types/constraint.ts +59 -14
  241. package/src/types/index.ts +1 -3
  242. package/src/types/monitoring-types.ts +2 -84
  243. package/src/types/project-config.ts +30 -1
  244. package/src/types/trace.ts +18 -7
  245. package/src/verification/CONTEXT.md +1 -1
  246. package/dist/cli/commands/flow.d.ts +0 -22
  247. package/dist/cli/commands/flow.d.ts.map +0 -1
  248. package/dist/cli/commands/flow.js +0 -275
  249. package/dist/cli/commands/flow.js.map +0 -1
  250. package/dist/constraints/lifecycle-runner.d.ts +0 -52
  251. package/dist/constraints/lifecycle-runner.d.ts.map +0 -1
  252. package/dist/constraints/lifecycle-runner.js +0 -151
  253. package/dist/constraints/lifecycle-runner.js.map +0 -1
  254. package/dist/constraints/registry.d.ts +0 -27
  255. package/dist/constraints/registry.d.ts.map +0 -1
  256. package/dist/constraints/registry.js +0 -128
  257. package/dist/constraints/registry.js.map +0 -1
  258. package/dist/constraints/types.d.ts +0 -53
  259. package/dist/constraints/types.d.ts.map +0 -1
  260. package/dist/constraints/types.js +0 -8
  261. package/dist/constraints/types.js.map +0 -1
  262. package/dist/core/constraints/checkers/always-pass.d.ts +0 -17
  263. package/dist/core/constraints/checkers/always-pass.d.ts.map +0 -1
  264. package/dist/core/constraints/checkers/always-pass.js +0 -23
  265. package/dist/core/constraints/checkers/always-pass.js.map +0 -1
  266. package/dist/core/constraints/checkers/guideline-flags.d.ts +0 -9
  267. package/dist/core/constraints/checkers/guideline-flags.d.ts.map +0 -1
  268. package/dist/core/constraints/checkers/guideline-flags.js +0 -13
  269. package/dist/core/constraints/checkers/guideline-flags.js.map +0 -1
  270. package/dist/core/constraints/checkers/no-any-type.d.ts +0 -6
  271. package/dist/core/constraints/checkers/no-any-type.d.ts.map +0 -1
  272. package/dist/core/constraints/checkers/no-any-type.js +0 -42
  273. package/dist/core/constraints/checkers/no-any-type.js.map +0 -1
  274. package/dist/core/constraints/checkers/no-excuse-patterns.d.ts +0 -6
  275. package/dist/core/constraints/checkers/no-excuse-patterns.d.ts.map +0 -1
  276. package/dist/core/constraints/checkers/no-excuse-patterns.js +0 -25
  277. package/dist/core/constraints/checkers/no-excuse-patterns.js.map +0 -1
  278. package/dist/core/constraints/checkers/no-fuzzy-completion-claim.d.ts +0 -6
  279. package/dist/core/constraints/checkers/no-fuzzy-completion-claim.d.ts.map +0 -1
  280. package/dist/core/constraints/checkers/no-fuzzy-completion-claim.js +0 -34
  281. package/dist/core/constraints/checkers/no-fuzzy-completion-claim.js.map +0 -1
  282. package/dist/core/constraints/checkers/no-performative-agreement.d.ts +0 -8
  283. package/dist/core/constraints/checkers/no-performative-agreement.d.ts.map +0 -1
  284. package/dist/core/constraints/checkers/no-performative-agreement.js +0 -23
  285. package/dist/core/constraints/checkers/no-performative-agreement.js.map +0 -1
  286. package/dist/core/constraints/checkers/no-simplification-without-approval.d.ts +0 -6
  287. package/dist/core/constraints/checkers/no-simplification-without-approval.d.ts.map +0 -1
  288. package/dist/core/constraints/checkers/no-simplification-without-approval.js +0 -30
  289. package/dist/core/constraints/checkers/no-simplification-without-approval.js.map +0 -1
  290. package/dist/core/constraints/checkers/test-coverage.d.ts +0 -6
  291. package/dist/core/constraints/checkers/test-coverage.d.ts.map +0 -1
  292. package/dist/core/constraints/checkers/test-coverage.js +0 -33
  293. package/dist/core/constraints/checkers/test-coverage.js.map +0 -1
  294. package/dist/core/constraints/checkers/yagni.d.ts +0 -8
  295. package/dist/core/constraints/checkers/yagni.d.ts.map +0 -1
  296. package/dist/core/constraints/checkers/yagni.js +0 -96
  297. package/dist/core/constraints/checkers/yagni.js.map +0 -1
  298. package/dist/core/constraints/definitions/tips.d.ts +0 -7
  299. package/dist/core/constraints/definitions/tips.d.ts.map +0 -1
  300. package/dist/core/constraints/definitions/tips.js +0 -62
  301. package/dist/core/constraints/definitions/tips.js.map +0 -1
  302. package/dist/evolution/auto-evolve.d.ts +0 -35
  303. package/dist/evolution/auto-evolve.d.ts.map +0 -1
  304. package/dist/evolution/auto-evolve.js +0 -64
  305. package/dist/evolution/auto-evolve.js.map +0 -1
  306. package/dist/evolution/index.d.ts +0 -2
  307. package/dist/evolution/index.d.ts.map +0 -1
  308. package/dist/evolution/index.js +0 -18
  309. package/dist/evolution/index.js.map +0 -1
  310. package/dist/monitoring/constraint-evolver.d.ts +0 -120
  311. package/dist/monitoring/constraint-evolver.d.ts.map +0 -1
  312. package/dist/monitoring/constraint-evolver.js +0 -410
  313. package/dist/monitoring/constraint-evolver.js.map +0 -1
  314. package/src/__tests__/constraint-evolver.test.ts +0 -405
  315. package/src/__tests__/doctor-evolver.test.ts +0 -381
  316. package/src/cli/commands/__tests__/flow.test.ts +0 -343
  317. package/src/cli/commands/flow.ts +0 -277
  318. package/src/constraints/__tests__/lifecycle-runner.test.ts +0 -246
  319. package/src/constraints/__tests__/registry.test.ts +0 -196
  320. package/src/constraints/lifecycle-runner.ts +0 -184
  321. package/src/constraints/registry.ts +0 -134
  322. package/src/constraints/types.ts +0 -59
  323. package/src/core/constraints/checkers/always-pass.ts +0 -22
  324. package/src/core/constraints/checkers/guideline-flags.ts +0 -30
  325. package/src/core/constraints/checkers/no-any-type.ts +0 -42
  326. package/src/core/constraints/checkers/no-excuse-patterns.ts +0 -24
  327. package/src/core/constraints/checkers/no-fuzzy-completion-claim.ts +0 -33
  328. package/src/core/constraints/checkers/no-performative-agreement.ts +0 -22
  329. package/src/core/constraints/checkers/no-simplification-without-approval.ts +0 -29
  330. package/src/core/constraints/checkers/test-coverage.ts +0 -35
  331. package/src/core/constraints/checkers/yagni.ts +0 -65
  332. package/src/core/constraints/definitions/tips.ts +0 -63
  333. package/src/evolution/CONTEXT.md +0 -22
  334. package/src/evolution/__tests__/auto-evolve.test.ts +0 -319
  335. package/src/evolution/auto-evolve.ts +0 -98
  336. package/src/evolution/index.ts +0 -1
  337. package/src/monitoring/constraint-evolver.ts +0 -501
@@ -1,410 +0,0 @@
1
- "use strict";
2
- /**
3
- * 约束提案流程
4
- *
5
- * 根据诊断结果提出约束修改建议
6
- *
7
- * 成本控制:
8
- * - 仅在诊断有结论时触发
9
- * - 精简 prompt
10
- * - ~3000 Token/次
11
- */
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.ConstraintEvolver = void 0;
14
- exports.createEvolver = createEvolver;
15
- /**
16
- * Constraint Evolver - 约束进化器
17
- *
18
- * 使用方式:
19
- * ```typescript
20
- * const evolver = new ConstraintEvolver();
21
- * const proposal = await evolver.propose(diagnosis);
22
- *
23
- * // 审核
24
- * const review = evolver.review(proposal);
25
- *
26
- * // 如果接受,实施
27
- * if (review.accepted) {
28
- * evolver.implement(proposal);
29
- * }
30
- * ```
31
- */
32
- class ConstraintEvolver {
33
- proposalsDir;
34
- constraintLookup;
35
- constructor(proposalsDir, constraintLookup) {
36
- this.proposalsDir = proposalsDir || '.harness/proposals';
37
- this.constraintLookup = constraintLookup;
38
- }
39
- /**
40
- * 根据诊断生成提案
41
- *
42
- * 如果诊断不需要变更,返回 null
43
- */
44
- async propose(diagnosis) {
45
- if (!diagnosis.needsChange) {
46
- return null;
47
- }
48
- // 找到最适合的建议
49
- const topRecommendation = diagnosis.recommendations[0];
50
- if (!topRecommendation) {
51
- return null;
52
- }
53
- // 生成提案
54
- const proposal = {
55
- id: `proposal-${diagnosis.constraintId}-${Date.now()}`,
56
- proposedAt: Date.now(),
57
- diagnosisId: diagnosis.anomalyId,
58
- constraintId: diagnosis.constraintId,
59
- type: this.mapRecommendationType(topRecommendation.type),
60
- content: this.generateProposalContent(diagnosis, topRecommendation),
61
- reasoning: diagnosis.rootCause.primary,
62
- expectedOutcome: topRecommendation.expectedOutcome,
63
- risk: this.assessRisk(diagnosis, topRecommendation),
64
- implementation: this.estimateImplementation(diagnosis.constraintId),
65
- status: 'proposed',
66
- };
67
- return proposal;
68
- }
69
- /**
70
- * 批量生成提案
71
- */
72
- async proposeBatch(diagnoses) {
73
- const proposals = await Promise.all(diagnoses.map(d => this.propose(d)));
74
- return proposals.filter((p) => p !== null);
75
- }
76
- /**
77
- * 审核提案
78
- *
79
- * 基于规则的审核(不消耗 Token)
80
- */
81
- review(proposal) {
82
- // 检查约束层级影响
83
- const constraint = this.findConstraint(proposal.constraintId);
84
- const level = constraint?.level;
85
- // Iron Law 修改需要谨慎
86
- if (level === 'iron_law' && proposal.type !== 'add_exception') {
87
- return {
88
- accepted: false,
89
- comment: 'Iron Law 约束的修改需要人工审核,建议仅添加例外条件',
90
- modifications: {
91
- type: 'add_exception',
92
- },
93
- };
94
- }
95
- // 高风险提案需要人工审核
96
- if (proposal.risk.level === 'high') {
97
- return {
98
- accepted: false,
99
- comment: '高风险提案需要人工审核',
100
- };
101
- }
102
- // 检查提案合理性
103
- if (!proposal.content.proposed || !proposal.content.description) {
104
- return {
105
- accepted: false,
106
- comment: '提案内容不完整',
107
- };
108
- }
109
- // 低风险 + 合理内容 → 自动接受
110
- if (proposal.risk.level === 'low' && proposal.implementation.testsRequired) {
111
- return {
112
- accepted: true,
113
- comment: '低风险提案,建议实施后验证效果',
114
- };
115
- }
116
- // 中风险 → 需要审核
117
- return {
118
- accepted: false,
119
- comment: '中等风险提案,建议人工审核后再实施',
120
- };
121
- }
122
- /**
123
- * 实施提案(返回实施建议,不自动修改代码)
124
- */
125
- implement(proposal) {
126
- const instructions = [];
127
- const filesToModify = [];
128
- const testsToRun = [];
129
- // 根据提案类型生成实施指导
130
- switch (proposal.type) {
131
- case 'add_exception':
132
- instructions.push(`在约束 ${proposal.constraintId} 的 exceptions 数组中添加新例外条件`);
133
- instructions.push(`例外条件: ${proposal.content.proposed}`);
134
- filesToModify.push('src/core/constraints/definitions.ts');
135
- testsToRun.push('src/__tests__/iron-laws.test.ts');
136
- break;
137
- case 'remove_exception':
138
- instructions.push(`从约束 ${proposal.constraintId} 的 exceptions 数组中移除例外条件`);
139
- instructions.push(`移除: ${proposal.content.proposed}`);
140
- filesToModify.push('src/core/constraints/definitions.ts');
141
- testsToRun.push('src/__tests__/iron-laws.test.ts');
142
- break;
143
- case 'adjust_trigger':
144
- instructions.push(`调整约束 ${proposal.constraintId} 的 trigger 条件`);
145
- instructions.push(`当前: ${proposal.content.current}`);
146
- instructions.push(`建议: ${proposal.content.proposed}`);
147
- filesToModify.push('src/core/constraints/definitions.ts');
148
- testsToRun.push('src/__tests__/iron-laws.test.ts');
149
- break;
150
- case 'change_level':
151
- instructions.push(`更改约束 ${proposal.constraintId} 的层级`);
152
- instructions.push(`当前: ${proposal.content.current}`);
153
- instructions.push(`建议: ${proposal.content.proposed}`);
154
- instructions.push(`注意:这会改变约束的强制程度`);
155
- filesToModify.push('src/core/constraints/definitions.ts');
156
- testsToRun.push('src/__tests__/iron-laws.test.ts');
157
- break;
158
- case 'modify_message':
159
- instructions.push(`修改约束 ${proposal.constraintId} 的提示消息`);
160
- filesToModify.push('src/core/constraints/definitions.ts');
161
- break;
162
- case 'new_constraint':
163
- instructions.push(`创建新约束 ${proposal.content.proposed.id}`);
164
- instructions.push(`层级: ${proposal.content.proposed.level}`);
165
- instructions.push(`规则: ${proposal.content.proposed.rule}`);
166
- filesToModify.push('src/core/constraints/definitions.ts');
167
- filesToModify.push('src/types/constraint.ts');
168
- testsToRun.push('src/__tests__/iron-laws.test.ts');
169
- break;
170
- }
171
- // 添加通用步骤
172
- instructions.push('运行测试验证变更');
173
- instructions.push('更新文档说明变更内容');
174
- return {
175
- instructions,
176
- filesToModify,
177
- testsToRun,
178
- };
179
- }
180
- /**
181
- * 保存提案
182
- */
183
- saveProposal(proposal) {
184
- const fs = require('fs');
185
- const path = require('path');
186
- const proposalFile = path.join(this.proposalsDir, `${proposal.id}.json`);
187
- // 确保目录存在
188
- if (!fs.existsSync(this.proposalsDir)) {
189
- fs.mkdirSync(this.proposalsDir, { recursive: true });
190
- }
191
- // 保存提案
192
- fs.writeFileSync(proposalFile, JSON.stringify(proposal, null, 2), 'utf-8');
193
- // 保存人类可读版本
194
- const mdFile = path.join(this.proposalsDir, `${proposal.id}.md`);
195
- fs.writeFileSync(mdFile, this.generateProposalMarkdown(proposal), 'utf-8');
196
- }
197
- /**
198
- * 加载提案
199
- */
200
- loadProposal(proposalId) {
201
- const fs = require('fs');
202
- const path = require('path');
203
- const proposalFile = path.join(this.proposalsDir, `${proposalId}.json`);
204
- const content = fs.readFileSync(proposalFile, 'utf-8');
205
- return JSON.parse(content);
206
- }
207
- /**
208
- * 列出所有提案
209
- */
210
- listProposals(status) {
211
- const fs = require('fs');
212
- const path = require('path');
213
- if (!fs.existsSync(this.proposalsDir)) {
214
- return [];
215
- }
216
- const files = fs.readdirSync(this.proposalsDir)
217
- .filter((f) => f.endsWith('.json'));
218
- const proposals = files.map((f) => {
219
- const content = fs.readFileSync(path.join(this.proposalsDir, f), 'utf-8');
220
- return JSON.parse(content);
221
- });
222
- if (status) {
223
- return proposals.filter((p) => p.status === status);
224
- }
225
- return proposals;
226
- }
227
- /**
228
- * 更新提案状态
229
- */
230
- updateProposalStatus(proposalId, status, reviewComment) {
231
- const proposal = this.loadProposal(proposalId);
232
- proposal.status = status;
233
- if (reviewComment) {
234
- proposal.reviewComment = reviewComment;
235
- }
236
- this.saveProposal(proposal);
237
- }
238
- // ========================================
239
- // 私有方法
240
- // ========================================
241
- /**
242
- * 映射建议类型到提案类型
243
- */
244
- mapRecommendationType(type) {
245
- const map = {
246
- 'add_exception': 'add_exception',
247
- 'adjust_threshold': 'adjust_trigger',
248
- 'modify_constraint': 'modify_message',
249
- 'user_training': 'modify_message', // 用户培训不需要修改约束
250
- };
251
- return map[type] || 'modify_message';
252
- }
253
- /**
254
- * 生成提案内容
255
- */
256
- generateProposalContent(diagnosis, recommendation) {
257
- const constraint = this.findConstraint(diagnosis.constraintId);
258
- switch (recommendation.type) {
259
- case 'add_exception':
260
- return {
261
- current: constraint?.exceptions || [],
262
- proposed: this.suggestException(diagnosis),
263
- description: `为约束 ${diagnosis.constraintId} 添加新例外条件`,
264
- };
265
- case 'adjust_threshold':
266
- return {
267
- current: constraint?.trigger,
268
- proposed: this.suggestTrigger(diagnosis),
269
- description: `调整约束 ${diagnosis.constraintId} 的触发条件`,
270
- };
271
- case 'modify_constraint':
272
- return {
273
- current: constraint?.message,
274
- proposed: this.suggestMessage(diagnosis),
275
- description: `修改约束 ${diagnosis.constraintId} 的提示消息`,
276
- };
277
- default:
278
- return {
279
- proposed: recommendation.content,
280
- description: recommendation.content,
281
- };
282
- }
283
- }
284
- /**
285
- * 建议例外条件
286
- */
287
- suggestException(diagnosis) {
288
- // 根据诊断生成例外建议
289
- const constraintId = diagnosis.constraintId;
290
- // 基于约束类型的预设例外
291
- const presetExceptions = {
292
- 'no_fix_without_root_cause': ['simple_typo', 'config_error', 'missing_config'],
293
- 'no_code_without_test': ['config_file', 'type_definition', 'simple_accessor'],
294
- 'simplest_solution_first': ['scalability_required', 'security_required', 'performance_required'],
295
- };
296
- const presets = presetExceptions[constraintId] || [];
297
- if (presets.length > 0) {
298
- return presets[0]; // 返回第一个预设例外
299
- }
300
- // 通用例外建议
301
- return `custom_exception_for_${constraintId}`;
302
- }
303
- /**
304
- * 建议触发条件
305
- */
306
- suggestTrigger(diagnosis) {
307
- // 根据约束类型建议更精确的触发条件
308
- return `specific_trigger_for_${diagnosis.constraintId}`;
309
- }
310
- /**
311
- * 建议提示消息
312
- */
313
- suggestMessage(diagnosis) {
314
- // 根据诊断生成更清晰的提示消息
315
- return `${diagnosis.rootCause.primary} - 建议检查约束定义`;
316
- }
317
- /**
318
- * 风险评估
319
- */
320
- assessRisk(diagnosis, recommendation) {
321
- // 根据影响程度和实施成本评估风险
322
- const severity = diagnosis.impact.severity;
323
- const cost = recommendation.implementationCost;
324
- if (severity === 'high' && cost === 'high') {
325
- return {
326
- level: 'high',
327
- description: '高影响 + 高成本,需要谨慎评估',
328
- rollbackPlan: '保留原约束定义,通过配置切换',
329
- };
330
- }
331
- if (severity === 'high' || cost === 'high') {
332
- return {
333
- level: 'medium',
334
- description: '影响较大或成本较高',
335
- rollbackPlan: '记录原值,必要时回滚',
336
- };
337
- }
338
- return {
339
- level: 'low',
340
- description: '低风险变更',
341
- };
342
- }
343
- /**
344
- * 估算实施信息
345
- */
346
- estimateImplementation(_constraintId) {
347
- return {
348
- files: ['src/core/constraints/definitions.ts'],
349
- linesChanged: 10, // 通常只需修改几行
350
- testsRequired: true,
351
- };
352
- }
353
- /**
354
- * 查找约束定义(经注入的 lookup;未注入时返回 null)
355
- */
356
- findConstraint(constraintId) {
357
- return this.constraintLookup?.(constraintId) ?? null;
358
- }
359
- /**
360
- * 生成提案 Markdown
361
- */
362
- generateProposalMarkdown(proposal) {
363
- const lines = [];
364
- lines.push(`# Constraint Proposal: ${proposal.id}`);
365
- lines.push('');
366
- lines.push(`- **Constraint**: ${proposal.constraintId}`);
367
- lines.push(`- **Type**: ${proposal.type}`);
368
- lines.push(`- **Status**: ${proposal.status}`);
369
- lines.push(`- **Proposed**: ${new Date(proposal.proposedAt).toISOString()}`);
370
- lines.push('');
371
- lines.push(`## Content`);
372
- lines.push('');
373
- lines.push(`**Description**: ${proposal.content.description}`);
374
- if (proposal.content.current) {
375
- lines.push(`**Current**: ${JSON.stringify(proposal.content.current)}`);
376
- }
377
- lines.push(`**Proposed**: ${JSON.stringify(proposal.content.proposed)}`);
378
- lines.push('');
379
- lines.push(`## Reasoning`);
380
- lines.push('');
381
- lines.push(proposal.reasoning);
382
- lines.push('');
383
- lines.push(`## Expected Outcome`);
384
- lines.push('');
385
- lines.push(proposal.expectedOutcome);
386
- lines.push('');
387
- lines.push(`## Risk Assessment`);
388
- lines.push('');
389
- lines.push(`- **Level**: ${proposal.risk.level}`);
390
- lines.push(`- **Description**: ${proposal.risk.description}`);
391
- if (proposal.risk.rollbackPlan) {
392
- lines.push(`- **Rollback**: ${proposal.risk.rollbackPlan}`);
393
- }
394
- lines.push('');
395
- lines.push(`## Implementation`);
396
- lines.push('');
397
- lines.push(`- **Files**: ${proposal.implementation.files.join(', ')}`);
398
- lines.push(`- **Lines Changed**: ~${proposal.implementation.linesChanged}`);
399
- lines.push(`- **Tests Required**: ${proposal.implementation.testsRequired ? 'Yes' : 'No'}`);
400
- return lines.join('\n');
401
- }
402
- }
403
- exports.ConstraintEvolver = ConstraintEvolver;
404
- /**
405
- * 创建进化器
406
- */
407
- function createEvolver(proposalsDir, constraintLookup) {
408
- return new ConstraintEvolver(proposalsDir, constraintLookup);
409
- }
410
- //# sourceMappingURL=constraint-evolver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constraint-evolver.js","sourceRoot":"","sources":["../../src/monitoring/constraint-evolver.ts"],"names":[],"mappings":"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"}