@dommaker/harness 0.16.6 → 0.16.8

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 (641) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +54 -14
  3. package/bin/harness.js +56 -96
  4. package/dist/architecture/constraint-engine.d.ts.map +1 -1
  5. package/dist/architecture/constraint-engine.js +0 -4
  6. package/dist/architecture/constraint-engine.js.map +1 -1
  7. package/dist/architecture/cross-project-checker.d.ts.map +1 -1
  8. package/dist/architecture/cross-project-checker.js +5 -25
  9. package/dist/architecture/cross-project-checker.js.map +1 -1
  10. package/dist/cli/commands/analyze-sessions.d.ts +2 -0
  11. package/dist/cli/commands/analyze-sessions.d.ts.map +1 -1
  12. package/dist/cli/commands/analyze-sessions.js +25 -181
  13. package/dist/cli/commands/analyze-sessions.js.map +1 -1
  14. package/dist/cli/commands/check.d.ts +1 -0
  15. package/dist/cli/commands/check.d.ts.map +1 -1
  16. package/dist/cli/commands/check.js +24 -216
  17. package/dist/cli/commands/check.js.map +1 -1
  18. package/dist/cli/commands/doc-freshness-check.d.ts.map +1 -1
  19. package/dist/cli/commands/doc-freshness-check.js +14 -28
  20. package/dist/cli/commands/doc-freshness-check.js.map +1 -1
  21. package/dist/cli/commands/flow.d.ts.map +1 -1
  22. package/dist/cli/commands/flow.js +2 -1
  23. package/dist/cli/commands/flow.js.map +1 -1
  24. package/dist/cli/commands/init.js +2 -2
  25. package/dist/cli/commands/init.js.map +1 -1
  26. package/dist/cli/commands/posteval-plan.d.ts.map +1 -1
  27. package/dist/cli/commands/posteval-plan.js +0 -1
  28. package/dist/cli/commands/posteval-plan.js.map +1 -1
  29. package/dist/cli/commands/release.js +1 -1
  30. package/dist/cli/commands/release.js.map +1 -1
  31. package/dist/cli/commands/report.d.ts.map +1 -1
  32. package/dist/cli/commands/report.js +2 -0
  33. package/dist/cli/commands/report.js.map +1 -1
  34. package/dist/cli/commands/spec-baseline-check.d.ts.map +1 -1
  35. package/dist/cli/commands/spec-baseline-check.js +12 -23
  36. package/dist/cli/commands/spec-baseline-check.js.map +1 -1
  37. package/dist/cli/commands/sync-docs/agents-syncer.d.ts +19 -0
  38. package/dist/cli/commands/sync-docs/agents-syncer.d.ts.map +1 -0
  39. package/dist/cli/commands/sync-docs/agents-syncer.js +288 -0
  40. package/dist/cli/commands/sync-docs/agents-syncer.js.map +1 -0
  41. package/dist/cli/commands/sync-docs/capabilities-syncer.d.ts +37 -0
  42. package/dist/cli/commands/sync-docs/capabilities-syncer.d.ts.map +1 -0
  43. package/dist/cli/commands/sync-docs/capabilities-syncer.js +235 -0
  44. package/dist/cli/commands/sync-docs/capabilities-syncer.js.map +1 -0
  45. package/dist/cli/commands/sync-docs/context-syncer.d.ts +17 -0
  46. package/dist/cli/commands/sync-docs/context-syncer.d.ts.map +1 -0
  47. package/dist/cli/commands/sync-docs/context-syncer.js +143 -0
  48. package/dist/cli/commands/sync-docs/context-syncer.js.map +1 -0
  49. package/dist/cli/commands/{sync-docs.d.ts → sync-docs/index.d.ts} +9 -2
  50. package/dist/cli/commands/sync-docs/index.d.ts.map +1 -0
  51. package/dist/cli/commands/sync-docs/index.js +338 -0
  52. package/dist/cli/commands/sync-docs/index.js.map +1 -0
  53. package/dist/cli/commands/sync-docs/preserve-block.d.ts +24 -0
  54. package/dist/cli/commands/sync-docs/preserve-block.d.ts.map +1 -0
  55. package/dist/cli/commands/sync-docs/preserve-block.js +55 -0
  56. package/dist/cli/commands/sync-docs/preserve-block.js.map +1 -0
  57. package/dist/cli/commands/sync-docs/project-reader.d.ts +41 -0
  58. package/dist/cli/commands/sync-docs/project-reader.d.ts.map +1 -0
  59. package/dist/cli/commands/sync-docs/project-reader.js +183 -0
  60. package/dist/cli/commands/sync-docs/project-reader.js.map +1 -0
  61. package/dist/cli/commands/update-user-model.d.ts +2 -0
  62. package/dist/cli/commands/update-user-model.d.ts.map +1 -1
  63. package/dist/cli/commands/update-user-model.js +19 -90
  64. package/dist/cli/commands/update-user-model.js.map +1 -1
  65. package/dist/cli/commands/validate.d.ts +3 -0
  66. package/dist/cli/commands/validate.d.ts.map +1 -1
  67. package/dist/cli/commands/validate.js +6 -39
  68. package/dist/cli/commands/validate.js.map +1 -1
  69. package/dist/cli/session-mining/corrections.d.ts +17 -0
  70. package/dist/cli/session-mining/corrections.d.ts.map +1 -0
  71. package/dist/cli/session-mining/corrections.js +58 -0
  72. package/dist/cli/session-mining/corrections.js.map +1 -0
  73. package/dist/cli/session-mining/index.d.ts +13 -0
  74. package/dist/cli/session-mining/index.d.ts.map +1 -0
  75. package/dist/{core/spec → cli/session-mining}/index.js +9 -3
  76. package/dist/cli/session-mining/index.js.map +1 -0
  77. package/dist/cli/session-mining/text.d.ts +31 -0
  78. package/dist/cli/session-mining/text.d.ts.map +1 -0
  79. package/dist/cli/session-mining/text.js +126 -0
  80. package/dist/cli/session-mining/text.js.map +1 -0
  81. package/dist/cli/session-mining/transcript.d.ts +28 -0
  82. package/dist/cli/session-mining/transcript.d.ts.map +1 -0
  83. package/dist/cli/session-mining/transcript.js +123 -0
  84. package/dist/cli/session-mining/transcript.js.map +1 -0
  85. package/dist/constraints/lifecycle-runner.d.ts +1 -1
  86. package/dist/constraints/lifecycle-runner.d.ts.map +1 -1
  87. package/dist/context/compaction.d.ts.map +1 -1
  88. package/dist/context/compaction.js +2 -3
  89. package/dist/context/compaction.js.map +1 -1
  90. package/dist/context/knowledge-injector.d.ts.map +1 -1
  91. package/dist/context/tool-output-budget.d.ts +1 -1
  92. package/dist/context/tool-output-budget.d.ts.map +1 -1
  93. package/dist/context/tool-output-budget.js +1 -1
  94. package/dist/context/tool-output-budget.js.map +1 -1
  95. package/dist/core/constraints/capabilities-parser.d.ts +24 -0
  96. package/dist/core/constraints/capabilities-parser.d.ts.map +1 -0
  97. package/dist/core/constraints/capabilities-parser.js +95 -0
  98. package/dist/core/constraints/capabilities-parser.js.map +1 -0
  99. package/dist/core/constraints/checker.d.ts +37 -100
  100. package/dist/core/constraints/checker.d.ts.map +1 -1
  101. package/dist/core/constraints/checker.js +150 -737
  102. package/dist/core/constraints/checker.js.map +1 -1
  103. package/dist/core/constraints/checkers/always-pass.d.ts +17 -0
  104. package/dist/core/constraints/checkers/always-pass.d.ts.map +1 -0
  105. package/dist/core/constraints/checkers/always-pass.js +23 -0
  106. package/dist/core/constraints/checkers/always-pass.js.map +1 -0
  107. package/dist/core/constraints/checkers/capability-sync.d.ts +10 -0
  108. package/dist/core/constraints/checkers/capability-sync.d.ts.map +1 -0
  109. package/dist/core/constraints/checkers/capability-sync.js +60 -0
  110. package/dist/core/constraints/checkers/capability-sync.js.map +1 -0
  111. package/dist/core/constraints/checkers/context-doc-sync.d.ts +6 -0
  112. package/dist/core/constraints/checkers/context-doc-sync.d.ts.map +1 -0
  113. package/dist/core/constraints/checkers/context-doc-sync.js +35 -0
  114. package/dist/core/constraints/checkers/context-doc-sync.js.map +1 -0
  115. package/dist/core/constraints/checkers/docs-freshness.d.ts +10 -0
  116. package/dist/core/constraints/checkers/docs-freshness.d.ts.map +1 -0
  117. package/dist/core/constraints/checkers/docs-freshness.js +111 -0
  118. package/dist/core/constraints/checkers/docs-freshness.js.map +1 -0
  119. package/dist/core/constraints/checkers/guideline-flags.d.ts +9 -0
  120. package/dist/core/constraints/checkers/guideline-flags.d.ts.map +1 -0
  121. package/dist/core/constraints/checkers/guideline-flags.js +13 -0
  122. package/dist/core/constraints/checkers/guideline-flags.js.map +1 -0
  123. package/dist/core/constraints/checkers/index.d.ts +17 -0
  124. package/dist/core/constraints/checkers/index.d.ts.map +1 -0
  125. package/dist/core/constraints/checkers/index.js +82 -0
  126. package/dist/core/constraints/checkers/index.js.map +1 -0
  127. package/dist/core/constraints/checkers/iron-flags.d.ts +14 -0
  128. package/dist/core/constraints/checkers/iron-flags.d.ts.map +1 -0
  129. package/dist/core/constraints/checkers/iron-flags.js +24 -0
  130. package/dist/core/constraints/checkers/iron-flags.js.map +1 -0
  131. package/dist/core/constraints/checkers/no-any-type.d.ts +6 -0
  132. package/dist/core/constraints/checkers/no-any-type.d.ts.map +1 -0
  133. package/dist/core/constraints/checkers/no-any-type.js +42 -0
  134. package/dist/core/constraints/checkers/no-any-type.js.map +1 -0
  135. package/dist/core/constraints/checkers/no-bypass-checkpoint.d.ts +6 -0
  136. package/dist/core/constraints/checkers/no-bypass-checkpoint.d.ts.map +1 -0
  137. package/dist/core/constraints/checkers/no-bypass-checkpoint.js +40 -0
  138. package/dist/core/constraints/checkers/no-bypass-checkpoint.js.map +1 -0
  139. package/dist/core/constraints/checkers/no-excuse-patterns.d.ts +6 -0
  140. package/dist/core/constraints/checkers/no-excuse-patterns.d.ts.map +1 -0
  141. package/dist/core/constraints/checkers/no-excuse-patterns.js +25 -0
  142. package/dist/core/constraints/checkers/no-excuse-patterns.js.map +1 -0
  143. package/dist/core/constraints/checkers/no-fuzzy-completion-claim.d.ts +6 -0
  144. package/dist/core/constraints/checkers/no-fuzzy-completion-claim.d.ts.map +1 -0
  145. package/dist/core/constraints/checkers/no-fuzzy-completion-claim.js +34 -0
  146. package/dist/core/constraints/checkers/no-fuzzy-completion-claim.js.map +1 -0
  147. package/dist/core/constraints/checkers/no-performative-agreement.d.ts +8 -0
  148. package/dist/core/constraints/checkers/no-performative-agreement.d.ts.map +1 -0
  149. package/dist/core/constraints/checkers/no-performative-agreement.js +23 -0
  150. package/dist/core/constraints/checkers/no-performative-agreement.js.map +1 -0
  151. package/dist/core/constraints/checkers/no-simplification-without-approval.d.ts +6 -0
  152. package/dist/core/constraints/checkers/no-simplification-without-approval.d.ts.map +1 -0
  153. package/dist/core/constraints/checkers/no-simplification-without-approval.js +30 -0
  154. package/dist/core/constraints/checkers/no-simplification-without-approval.js.map +1 -0
  155. package/dist/core/constraints/checkers/no-test-simplification.d.ts +6 -0
  156. package/dist/core/constraints/checkers/no-test-simplification.d.ts.map +1 -0
  157. package/dist/core/constraints/checkers/no-test-simplification.js +29 -0
  158. package/dist/core/constraints/checkers/no-test-simplification.js.map +1 -0
  159. package/dist/core/constraints/checkers/test-coverage.d.ts +6 -0
  160. package/dist/core/constraints/checkers/test-coverage.d.ts.map +1 -0
  161. package/dist/core/constraints/checkers/test-coverage.js +33 -0
  162. package/dist/core/constraints/checkers/test-coverage.js.map +1 -0
  163. package/dist/core/constraints/checkers/types.d.ts +43 -0
  164. package/dist/core/constraints/checkers/types.d.ts.map +1 -0
  165. package/dist/core/constraints/checkers/types.js +23 -0
  166. package/dist/core/constraints/checkers/types.js.map +1 -0
  167. package/dist/core/constraints/checkers/yagni.d.ts +8 -0
  168. package/dist/core/constraints/checkers/yagni.d.ts.map +1 -0
  169. package/dist/core/constraints/checkers/yagni.js +96 -0
  170. package/dist/core/constraints/checkers/yagni.js.map +1 -0
  171. package/dist/core/constraints/context-builder.d.ts +67 -0
  172. package/dist/core/constraints/context-builder.d.ts.map +1 -0
  173. package/dist/core/constraints/context-builder.js +294 -0
  174. package/dist/core/constraints/context-builder.js.map +1 -0
  175. package/dist/core/constraints/definitions/guidelines.d.ts +7 -0
  176. package/dist/core/constraints/definitions/guidelines.d.ts.map +1 -0
  177. package/dist/core/constraints/definitions/guidelines.js +641 -0
  178. package/dist/core/constraints/definitions/guidelines.js.map +1 -0
  179. package/dist/core/constraints/definitions/iron-laws.d.ts +7 -0
  180. package/dist/core/constraints/definitions/iron-laws.d.ts.map +1 -0
  181. package/dist/core/constraints/definitions/iron-laws.js +322 -0
  182. package/dist/core/constraints/definitions/iron-laws.js.map +1 -0
  183. package/dist/core/constraints/definitions/tips.d.ts +7 -0
  184. package/dist/core/constraints/definitions/tips.d.ts.map +1 -0
  185. package/dist/core/constraints/definitions/tips.js +62 -0
  186. package/dist/core/constraints/definitions/tips.js.map +1 -0
  187. package/dist/core/constraints/definitions.d.ts +8 -21
  188. package/dist/core/constraints/definitions.d.ts.map +1 -1
  189. package/dist/core/constraints/definitions.js +15 -1048
  190. package/dist/core/constraints/definitions.js.map +1 -1
  191. package/dist/core/constraints/doc-freshness/runner.d.ts.map +1 -1
  192. package/dist/core/constraints/doc-freshness/runner.js +0 -1
  193. package/dist/core/constraints/doc-freshness/runner.js.map +1 -1
  194. package/dist/core/constraints/index.d.ts +4 -5
  195. package/dist/core/constraints/index.d.ts.map +1 -1
  196. package/dist/core/constraints/index.js +1 -16
  197. package/dist/core/constraints/index.js.map +1 -1
  198. package/dist/core/constraints/interceptor.d.ts.map +1 -1
  199. package/dist/core/constraints/interceptor.js.map +1 -1
  200. package/dist/core/index.js +0 -1
  201. package/dist/core/index.js.map +1 -1
  202. package/dist/core/project-config-loader.d.ts +6 -4
  203. package/dist/core/project-config-loader.d.ts.map +1 -1
  204. package/dist/core/project-config-loader.js +46 -13
  205. package/dist/core/project-config-loader.js.map +1 -1
  206. package/dist/core/validators/check-handlers/command.d.ts +7 -0
  207. package/dist/core/validators/check-handlers/command.d.ts.map +1 -0
  208. package/dist/core/validators/check-handlers/command.js +58 -0
  209. package/dist/core/validators/check-handlers/command.js.map +1 -0
  210. package/dist/core/validators/check-handlers/file.d.ts +10 -0
  211. package/dist/core/validators/check-handlers/file.d.ts.map +1 -0
  212. package/dist/core/validators/check-handlers/file.js +128 -0
  213. package/dist/core/validators/check-handlers/file.js.map +1 -0
  214. package/dist/core/validators/check-handlers/http.d.ts +7 -0
  215. package/dist/core/validators/check-handlers/http.d.ts.map +1 -0
  216. package/dist/core/validators/check-handlers/http.js +88 -0
  217. package/dist/core/validators/check-handlers/http.js.map +1 -0
  218. package/dist/core/validators/check-handlers/output.d.ts +15 -0
  219. package/dist/core/validators/check-handlers/output.d.ts.map +1 -0
  220. package/dist/core/validators/check-handlers/output.js +152 -0
  221. package/dist/core/validators/check-handlers/output.js.map +1 -0
  222. package/dist/core/validators/checkpoint.d.ts +4 -72
  223. package/dist/core/validators/checkpoint.d.ts.map +1 -1
  224. package/dist/core/validators/checkpoint.js +21 -400
  225. package/dist/core/validators/checkpoint.js.map +1 -1
  226. package/dist/core/validators/cso.js +1 -1
  227. package/dist/core/validators/cso.js.map +1 -1
  228. package/dist/core/validators/passes-gate.js +2 -2
  229. package/dist/core/validators/passes-gate.js.map +1 -1
  230. package/dist/dashboard/stats.d.ts.map +1 -1
  231. package/dist/dashboard/types.d.ts.map +1 -1
  232. package/dist/evolution/auto-evolve.d.ts +1 -2
  233. package/dist/evolution/auto-evolve.d.ts.map +1 -1
  234. package/dist/evolution/auto-evolve.js +2 -1
  235. package/dist/evolution/auto-evolve.js.map +1 -1
  236. package/dist/failure/types.d.ts +5 -85
  237. package/dist/failure/types.d.ts.map +1 -1
  238. package/dist/failure/types.js +19 -115
  239. package/dist/failure/types.js.map +1 -1
  240. package/dist/gates/contract.d.ts.map +1 -1
  241. package/dist/gates/contract.js.map +1 -1
  242. package/dist/gates/index.d.ts.map +1 -1
  243. package/dist/gates/index.js.map +1 -1
  244. package/dist/gates/performance.js +1 -1
  245. package/dist/gates/performance.js.map +1 -1
  246. package/dist/gates/security.d.ts.map +1 -1
  247. package/dist/gates/security.js +1 -1
  248. package/dist/gates/security.js.map +1 -1
  249. package/dist/hooks/bootstrap.d.ts.map +1 -1
  250. package/dist/hooks/bootstrap.js +6 -48
  251. package/dist/hooks/bootstrap.js.map +1 -1
  252. package/dist/index.d.ts +0 -1
  253. package/dist/index.d.ts.map +1 -1
  254. package/dist/index.js +3 -1
  255. package/dist/index.js.map +1 -1
  256. package/dist/knowledge/audit.d.ts.map +1 -1
  257. package/dist/knowledge/doctor.d.ts.map +1 -1
  258. package/dist/knowledge/doctor.js.map +1 -1
  259. package/dist/knowledge/import.d.ts.map +1 -1
  260. package/dist/knowledge/import.js +1 -1
  261. package/dist/knowledge/import.js.map +1 -1
  262. package/dist/knowledge/index-generator.d.ts.map +1 -1
  263. package/dist/knowledge/index-generator.js +0 -1
  264. package/dist/knowledge/index-generator.js.map +1 -1
  265. package/dist/knowledge/ingest.d.ts.map +1 -1
  266. package/dist/knowledge/ingest.js +1 -1
  267. package/dist/knowledge/ingest.js.map +1 -1
  268. package/dist/knowledge/lint.d.ts +1 -1
  269. package/dist/knowledge/lint.d.ts.map +1 -1
  270. package/dist/knowledge/lint.js +2 -2
  271. package/dist/knowledge/lint.js.map +1 -1
  272. package/dist/knowledge/primitives/code-structure.d.ts.map +1 -1
  273. package/dist/knowledge/primitives/code-structure.js +29 -12
  274. package/dist/knowledge/primitives/code-structure.js.map +1 -1
  275. package/dist/knowledge/query.d.ts.map +1 -1
  276. package/dist/knowledge/query.js.map +1 -1
  277. package/dist/knowledge/store.d.ts.map +1 -1
  278. package/dist/llm/adapter.d.ts +3 -3
  279. package/dist/llm/adapter.d.ts.map +1 -1
  280. package/dist/llm/adapter.js +3 -3
  281. package/dist/llm/adapter.js.map +1 -1
  282. package/dist/monitoring/analyzer-base.d.ts +50 -0
  283. package/dist/monitoring/analyzer-base.d.ts.map +1 -0
  284. package/dist/monitoring/analyzer-base.js +146 -0
  285. package/dist/monitoring/analyzer-base.js.map +1 -0
  286. package/dist/monitoring/constraint-doctor.d.ts +3 -46
  287. package/dist/monitoring/constraint-doctor.d.ts.map +1 -1
  288. package/dist/monitoring/constraint-doctor.js +11 -113
  289. package/dist/monitoring/constraint-doctor.js.map +1 -1
  290. package/dist/monitoring/constraint-evolver.d.ts +9 -63
  291. package/dist/monitoring/constraint-evolver.d.ts.map +1 -1
  292. package/dist/monitoring/constraint-evolver.js +8 -10
  293. package/dist/monitoring/constraint-evolver.js.map +1 -1
  294. package/dist/monitoring/diagnosis-rules.d.ts +18 -0
  295. package/dist/monitoring/diagnosis-rules.d.ts.map +1 -0
  296. package/dist/monitoring/diagnosis-rules.js +119 -0
  297. package/dist/monitoring/diagnosis-rules.js.map +1 -0
  298. package/dist/monitoring/knowledge-doctor.d.ts.map +1 -1
  299. package/dist/monitoring/knowledge-doctor.js.map +1 -1
  300. package/dist/monitoring/performance-analyzer.d.ts +0 -12
  301. package/dist/monitoring/performance-analyzer.d.ts.map +1 -1
  302. package/dist/monitoring/performance-analyzer.js +13 -93
  303. package/dist/monitoring/performance-analyzer.js.map +1 -1
  304. package/dist/monitoring/performance-collector.d.ts +0 -8
  305. package/dist/monitoring/performance-collector.d.ts.map +1 -1
  306. package/dist/monitoring/performance-collector.js +0 -21
  307. package/dist/monitoring/performance-collector.js.map +1 -1
  308. package/dist/monitoring/trace-analyzer.d.ts +0 -8
  309. package/dist/monitoring/trace-analyzer.d.ts.map +1 -1
  310. package/dist/monitoring/trace-analyzer.js +9 -91
  311. package/dist/monitoring/trace-analyzer.js.map +1 -1
  312. package/dist/presets/index.d.ts +1 -1
  313. package/dist/presets/index.d.ts.map +1 -1
  314. package/dist/presets/index.js +1 -4
  315. package/dist/presets/index.js.map +1 -1
  316. package/dist/presets/standard.d.ts +0 -9
  317. package/dist/presets/standard.d.ts.map +1 -1
  318. package/dist/presets/standard.js +1 -16
  319. package/dist/presets/standard.js.map +1 -1
  320. package/dist/safety/output-guardrail.d.ts +0 -1
  321. package/dist/safety/output-guardrail.d.ts.map +1 -1
  322. package/dist/safety/output-guardrail.js +0 -3
  323. package/dist/safety/output-guardrail.js.map +1 -1
  324. package/dist/tools/registry.d.ts.map +1 -1
  325. package/dist/types/constraint.d.ts +5 -59
  326. package/dist/types/constraint.d.ts.map +1 -1
  327. package/dist/types/constraint.js +1 -39
  328. package/dist/types/constraint.js.map +1 -1
  329. package/dist/types/failure.d.ts +89 -0
  330. package/dist/types/failure.d.ts.map +1 -0
  331. package/dist/types/failure.js +121 -0
  332. package/dist/types/failure.js.map +1 -0
  333. package/dist/types/index.d.ts +2 -3
  334. package/dist/types/index.d.ts.map +1 -1
  335. package/dist/types/index.js +7 -6
  336. package/dist/types/index.js.map +1 -1
  337. package/dist/types/monitoring-types.d.ts +114 -0
  338. package/dist/types/monitoring-types.d.ts.map +1 -0
  339. package/dist/types/monitoring-types.js +10 -0
  340. package/dist/types/monitoring-types.js.map +1 -0
  341. package/dist/utils/detect-source-roots.js.map +1 -1
  342. package/dist/utils/file-walk.d.ts +33 -0
  343. package/dist/utils/file-walk.d.ts.map +1 -0
  344. package/dist/utils/file-walk.js +89 -0
  345. package/dist/utils/file-walk.js.map +1 -0
  346. package/dist/verification/rules-based.d.ts.map +1 -1
  347. package/dist/verification/rules-based.js.map +1 -1
  348. package/package.json +3 -7
  349. package/src/__tests__/checker-extra.test.ts +0 -30
  350. package/src/__tests__/checker.test.ts +0 -33
  351. package/src/__tests__/checkpoint.test.ts +46 -46
  352. package/src/__tests__/constraint-evolver.test.ts +22 -21
  353. package/src/__tests__/doctor-evolver.test.ts +3 -3
  354. package/src/__tests__/iron-laws.test.ts +0 -27
  355. package/src/__tests__/presets.test.ts +1 -40
  356. package/src/architecture/constraint-engine.ts +0 -5
  357. package/src/architecture/cross-project-checker.ts +6 -24
  358. package/src/cli/commands/__tests__/check.test.ts +3 -1
  359. package/src/cli/commands/__tests__/sync-docs.test.ts +77 -0
  360. package/src/cli/commands/__tests__/validate.test.ts +5 -0
  361. package/src/cli/commands/analyze-sessions.ts +31 -185
  362. package/src/cli/commands/check.ts +26 -225
  363. package/src/cli/commands/doc-freshness-check.ts +14 -25
  364. package/src/cli/commands/flow.ts +5 -3
  365. package/src/cli/commands/init.ts +3 -3
  366. package/src/cli/commands/posteval-plan.ts +0 -1
  367. package/src/cli/commands/release.ts +1 -1
  368. package/src/cli/commands/report.ts +2 -0
  369. package/src/cli/commands/spec-baseline-check.ts +12 -19
  370. package/src/cli/commands/sync-docs/agents-syncer.ts +280 -0
  371. package/src/cli/commands/sync-docs/capabilities-syncer.ts +229 -0
  372. package/src/cli/commands/sync-docs/context-syncer.ts +108 -0
  373. package/src/cli/commands/sync-docs/index.ts +355 -0
  374. package/src/cli/commands/sync-docs/preserve-block.ts +59 -0
  375. package/src/cli/commands/sync-docs/project-reader.ts +163 -0
  376. package/src/cli/commands/update-user-model.ts +23 -87
  377. package/src/cli/commands/validate.ts +6 -40
  378. package/src/cli/session-mining/corrections.ts +56 -0
  379. package/src/cli/session-mining/index.ts +13 -0
  380. package/src/cli/session-mining/text.ts +117 -0
  381. package/src/cli/session-mining/transcript.ts +107 -0
  382. package/src/constraints/__tests__/lifecycle-runner.test.ts +1 -1
  383. package/src/constraints/lifecycle-runner.ts +1 -1
  384. package/src/context/compaction.ts +2 -3
  385. package/src/context/knowledge-injector.ts +1 -1
  386. package/src/context/tool-output-budget.ts +1 -1
  387. package/src/core/constraints/capabilities-parser.ts +70 -0
  388. package/src/core/constraints/checker.ts +170 -779
  389. package/src/core/constraints/checkers/always-pass.ts +22 -0
  390. package/src/core/constraints/checkers/capability-sync.ts +71 -0
  391. package/src/core/constraints/checkers/context-doc-sync.ts +36 -0
  392. package/src/core/constraints/checkers/docs-freshness.ts +116 -0
  393. package/src/core/constraints/checkers/guideline-flags.ts +30 -0
  394. package/src/core/constraints/checkers/index.ts +114 -0
  395. package/src/core/constraints/checkers/iron-flags.ts +62 -0
  396. package/src/core/constraints/checkers/no-any-type.ts +42 -0
  397. package/src/core/constraints/checkers/no-bypass-checkpoint.ts +40 -0
  398. package/src/core/constraints/checkers/no-excuse-patterns.ts +24 -0
  399. package/src/core/constraints/checkers/no-fuzzy-completion-claim.ts +33 -0
  400. package/src/core/constraints/checkers/no-performative-agreement.ts +22 -0
  401. package/src/core/constraints/checkers/no-simplification-without-approval.ts +29 -0
  402. package/src/core/constraints/checkers/no-test-simplification.ts +28 -0
  403. package/src/core/constraints/checkers/test-coverage.ts +35 -0
  404. package/src/core/constraints/checkers/types.ts +54 -0
  405. package/src/core/constraints/checkers/yagni.ts +65 -0
  406. package/src/core/constraints/context-builder.ts +262 -0
  407. package/src/core/constraints/definitions/guidelines.ts +668 -0
  408. package/src/core/constraints/definitions/iron-laws.ts +333 -0
  409. package/src/core/constraints/definitions/tips.ts +63 -0
  410. package/src/core/constraints/definitions.ts +9 -1086
  411. package/src/core/constraints/doc-freshness/runner.ts +2 -3
  412. package/src/core/constraints/index.ts +1 -27
  413. package/src/core/constraints/interceptor.ts +0 -2
  414. package/src/core/index.ts +1 -1
  415. package/src/core/project-config-loader.ts +49 -13
  416. package/src/core/validators/check-handlers/command.ts +58 -0
  417. package/src/core/validators/check-handlers/file.ts +104 -0
  418. package/src/core/validators/check-handlers/http.ts +88 -0
  419. package/src/core/validators/check-handlers/output.ts +165 -0
  420. package/src/core/validators/checkpoint.ts +32 -407
  421. package/src/core/validators/cso.ts +1 -1
  422. package/src/core/validators/passes-gate.ts +2 -2
  423. package/src/dashboard/stats.ts +1 -1
  424. package/src/dashboard/types.ts +1 -1
  425. package/src/evolution/__tests__/auto-evolve.test.ts +1 -2
  426. package/src/evolution/auto-evolve.ts +3 -3
  427. package/src/failure/types.ts +5 -161
  428. package/src/gates/contract.ts +0 -1
  429. package/src/gates/index.ts +0 -2
  430. package/src/gates/performance.ts +1 -1
  431. package/src/gates/security.ts +1 -3
  432. package/src/hooks/bootstrap.ts +6 -16
  433. package/src/index.ts +4 -1
  434. package/src/knowledge/__tests__/lifecycle.test.ts +4 -1
  435. package/src/knowledge/audit.ts +1 -1
  436. package/src/knowledge/doctor.ts +0 -1
  437. package/src/knowledge/import.ts +2 -2
  438. package/src/knowledge/index-generator.ts +0 -1
  439. package/src/knowledge/ingest.ts +1 -2
  440. package/src/knowledge/lint.ts +2 -2
  441. package/src/knowledge/primitives/__tests__/code-structure-degrade.test.ts +24 -0
  442. package/src/knowledge/primitives/code-structure.ts +36 -12
  443. package/src/knowledge/query.ts +0 -3
  444. package/src/knowledge/store.ts +1 -1
  445. package/src/llm/adapter.ts +3 -3
  446. package/src/monitoring/analyzer-base.ts +112 -0
  447. package/src/monitoring/constraint-doctor.ts +14 -175
  448. package/src/monitoring/constraint-evolver.ts +20 -92
  449. package/src/monitoring/diagnosis-rules.ts +132 -0
  450. package/src/monitoring/knowledge-doctor.ts +0 -1
  451. package/src/monitoring/performance-analyzer.ts +22 -72
  452. package/src/monitoring/performance-collector.ts +0 -22
  453. package/src/monitoring/trace-analyzer.ts +17 -73
  454. package/src/presets/__tests__/standard.test.ts +2 -17
  455. package/src/presets/index.ts +1 -3
  456. package/src/presets/standard.ts +1 -26
  457. package/src/safety/output-guardrail.ts +0 -4
  458. package/src/tools/registry.ts +1 -1
  459. package/src/types/__tests__/types.test.ts +1 -33
  460. package/src/types/constraint.ts +6 -75
  461. package/src/types/failure.ts +165 -0
  462. package/src/types/index.ts +7 -5
  463. package/src/types/monitoring-types.ts +150 -0
  464. package/src/utils/detect-source-roots.ts +1 -1
  465. package/src/utils/file-walk.ts +78 -0
  466. package/src/verification/rules-based.ts +0 -1
  467. package/bin/harness-knowledge-capture.js +0 -99
  468. package/bin/harness-knowledge-check.js +0 -164
  469. package/bin/harness-knowledge-track.js +0 -118
  470. package/dist/cli/commands/sync-docs.d.ts.map +0 -1
  471. package/dist/cli/commands/sync-docs.js +0 -1074
  472. package/dist/cli/commands/sync-docs.js.map +0 -1
  473. package/dist/constraints/index.d.ts +0 -4
  474. package/dist/constraints/index.d.ts.map +0 -1
  475. package/dist/constraints/index.js +0 -20
  476. package/dist/constraints/index.js.map +0 -1
  477. package/dist/core/constraints/doc-freshness/auto-fix.d.ts +0 -23
  478. package/dist/core/constraints/doc-freshness/auto-fix.d.ts.map +0 -1
  479. package/dist/core/constraints/doc-freshness/auto-fix.js +0 -59
  480. package/dist/core/constraints/doc-freshness/auto-fix.js.map +0 -1
  481. package/dist/core/constraints/prompt-injection.d.ts +0 -16
  482. package/dist/core/constraints/prompt-injection.d.ts.map +0 -1
  483. package/dist/core/constraints/prompt-injection.js +0 -69
  484. package/dist/core/constraints/prompt-injection.js.map +0 -1
  485. package/dist/core/spec/index.d.ts +0 -7
  486. package/dist/core/spec/index.d.ts.map +0 -1
  487. package/dist/core/spec/index.js.map +0 -1
  488. package/dist/governance/executor.d.ts +0 -45
  489. package/dist/governance/executor.d.ts.map +0 -1
  490. package/dist/governance/executor.js +0 -243
  491. package/dist/governance/executor.js.map +0 -1
  492. package/dist/governance/index.d.ts +0 -9
  493. package/dist/governance/index.d.ts.map +0 -1
  494. package/dist/governance/index.js +0 -13
  495. package/dist/governance/index.js.map +0 -1
  496. package/dist/governance/types.d.ts +0 -46
  497. package/dist/governance/types.d.ts.map +0 -1
  498. package/dist/governance/types.js +0 -9
  499. package/dist/governance/types.js.map +0 -1
  500. package/dist/tools/definitions/definitions/core/code/fingerprint.sh +0 -273
  501. package/dist/tools/definitions/definitions/core/code/fingerprint.yml +0 -72
  502. package/dist/tools/definitions/definitions/core/code/parse.yml +0 -68
  503. package/dist/tools/definitions/definitions/core/code/register-language.sh +0 -475
  504. package/dist/tools/definitions/definitions/core/code/register-language.yml +0 -74
  505. package/dist/tools/definitions/definitions/core/docker/build.yml +0 -73
  506. package/dist/tools/definitions/definitions/core/docker/run.yml +0 -81
  507. package/dist/tools/definitions/definitions/core/file/copy.yml +0 -88
  508. package/dist/tools/definitions/definitions/core/file/read.yml +0 -69
  509. package/dist/tools/definitions/definitions/core/file/write.yml +0 -75
  510. package/dist/tools/definitions/definitions/core/git/branch.yml +0 -61
  511. package/dist/tools/definitions/definitions/core/git/cleanup-worktree.yml +0 -50
  512. package/dist/tools/definitions/definitions/core/git/clone.yml +0 -69
  513. package/dist/tools/definitions/definitions/core/git/commit.yml +0 -65
  514. package/dist/tools/definitions/definitions/core/git/push.yml +0 -79
  515. package/dist/tools/definitions/definitions/core/git/worktree.yml +0 -96
  516. package/dist/tools/definitions/definitions/core/notification/notify.sh +0 -152
  517. package/dist/tools/definitions/definitions/core/notification/notify.yml +0 -60
  518. package/dist/tools/definitions/definitions/core/npm/build.yml +0 -75
  519. package/dist/tools/definitions/definitions/core/npm/install.yml +0 -58
  520. package/dist/tools/definitions/definitions/core/npm/test.yml +0 -75
  521. package/dist/tools/definitions/definitions/core/validation/check-reuse.yml +0 -170
  522. package/dist/tools/definitions/definitions/core/validation/validate-handlers.yml +0 -118
  523. package/dist/tools/definitions/definitions/core/validation/validate-readme-stats.yml +0 -155
  524. package/dist/tools/definitions/definitions/core/validation/validate-yaml-syntax.yml +0 -134
  525. package/dist/tools/definitions/definitions/ext/browser/browser-automate.sh +0 -255
  526. package/dist/tools/definitions/definitions/ext/browser/browser-automate.yml +0 -166
  527. package/dist/tools/definitions/definitions/ext/browser/browser-close.sh +0 -104
  528. package/dist/tools/definitions/definitions/ext/browser/browser-close.yml +0 -55
  529. package/dist/tools/definitions/definitions/ext/browser/browser-mcp-debug.sh +0 -682
  530. package/dist/tools/definitions/definitions/ext/browser/browser-mcp-debug.yml +0 -167
  531. package/dist/tools/definitions/definitions/ext/browser/browser-start.sh +0 -101
  532. package/dist/tools/definitions/definitions/ext/browser/browser-start.yml +0 -62
  533. package/dist/tools/definitions/definitions/registry.json +0 -795
  534. package/dist/tools/definitions/definitions/std/README.md +0 -350
  535. package/dist/tools/definitions/definitions/std/analysis/analyze-codebase.yml +0 -72
  536. package/dist/tools/definitions/definitions/std/analysis/analyze-diff.yml +0 -182
  537. package/dist/tools/definitions/definitions/std/analysis/analyze-git-diff.yml +0 -70
  538. package/dist/tools/definitions/definitions/std/analysis/analyze-impact.yml +0 -78
  539. package/dist/tools/definitions/definitions/std/analysis/analyze-requirements.yml +0 -105
  540. package/dist/tools/definitions/definitions/std/analysis/brainstorm-options.yml +0 -106
  541. package/dist/tools/definitions/definitions/std/analysis/build-graph.yml +0 -154
  542. package/dist/tools/definitions/definitions/std/analysis/clarify-requirements.yml +0 -90
  543. package/dist/tools/definitions/definitions/std/analysis/detect-context.yml +0 -109
  544. package/dist/tools/definitions/definitions/std/analysis/detect-layers.yml +0 -125
  545. package/dist/tools/definitions/definitions/std/analysis/generate-tour.yml +0 -102
  546. package/dist/tools/definitions/definitions/std/analysis/search-enhance.yml +0 -105
  547. package/dist/tools/definitions/definitions/std/backlog/add.yml +0 -51
  548. package/dist/tools/definitions/definitions/std/backlog/decide.yml +0 -39
  549. package/dist/tools/definitions/definitions/std/backlog/github-sync.yml +0 -161
  550. package/dist/tools/definitions/definitions/std/backlog/list.yml +0 -53
  551. package/dist/tools/definitions/definitions/std/backlog/load.yml +0 -46
  552. package/dist/tools/definitions/definitions/std/backlog/resolve.yml +0 -37
  553. package/dist/tools/definitions/definitions/std/backlog/update.yml +0 -42
  554. package/dist/tools/definitions/definitions/std/bugfix/diagnose.yml +0 -68
  555. package/dist/tools/definitions/definitions/std/bugfix/fix.yml +0 -66
  556. package/dist/tools/definitions/definitions/std/bugfix/verify.yml +0 -69
  557. package/dist/tools/definitions/definitions/std/constraint/check-decomposition.yml +0 -103
  558. package/dist/tools/definitions/definitions/std/constraint/check-feature-list.yml +0 -77
  559. package/dist/tools/definitions/definitions/std/constraint/check-progress.yml +0 -97
  560. package/dist/tools/definitions/definitions/std/constraint/generate-report.yml +0 -147
  561. package/dist/tools/definitions/definitions/std/deploy/commit-push.yml +0 -33
  562. package/dist/tools/definitions/definitions/std/deploy/deploy-backend.yml +0 -37
  563. package/dist/tools/definitions/definitions/std/deploy/deploy-frontend.yml +0 -37
  564. package/dist/tools/definitions/definitions/std/deploy/rollback.yml +0 -148
  565. package/dist/tools/definitions/definitions/std/design/analyze-architecture-impact.yml +0 -113
  566. package/dist/tools/definitions/definitions/std/design/design-api.yml +0 -55
  567. package/dist/tools/definitions/definitions/std/design/design-architecture.yml +0 -97
  568. package/dist/tools/definitions/definitions/std/design/design-db.yml +0 -81
  569. package/dist/tools/definitions/definitions/std/design/generate-spec.yml +0 -182
  570. package/dist/tools/definitions/definitions/std/development/develop-api.yml +0 -85
  571. package/dist/tools/definitions/definitions/std/development/develop-backend.yml +0 -88
  572. package/dist/tools/definitions/definitions/std/development/develop-frontend.yml +0 -87
  573. package/dist/tools/definitions/definitions/std/development/develop-shared-types.yml +0 -74
  574. package/dist/tools/definitions/definitions/std/development/develop-task.yml +0 -122
  575. package/dist/tools/definitions/definitions/std/development/develop-tests.yml +0 -76
  576. package/dist/tools/definitions/definitions/std/development/execute-batch.yml +0 -152
  577. package/dist/tools/definitions/definitions/std/development/fix-issues.yml +0 -100
  578. package/dist/tools/definitions/definitions/std/development/implement-task.yml +0 -124
  579. package/dist/tools/definitions/definitions/std/development/review-fix-cycle.yml +0 -232
  580. package/dist/tools/definitions/definitions/std/evolution/implement.yml +0 -125
  581. package/dist/tools/definitions/definitions/std/evolution/prioritize.yml +0 -112
  582. package/dist/tools/definitions/definitions/std/evolution/report-gap.yml +0 -166
  583. package/dist/tools/definitions/definitions/std/file/read.yml +0 -21
  584. package/dist/tools/definitions/definitions/std/governance/aggregate-opinions.sh +0 -201
  585. package/dist/tools/definitions/definitions/std/governance/aggregate-opinions.yml +0 -79
  586. package/dist/tools/definitions/definitions/std/governance/audit-task.yml +0 -178
  587. package/dist/tools/definitions/definitions/std/governance/cast-vote.yml +0 -129
  588. package/dist/tools/definitions/definitions/std/governance/collect-issues.yml +0 -16
  589. package/dist/tools/definitions/definitions/std/governance/create-signed-document.yml +0 -23
  590. package/dist/tools/definitions/definitions/std/governance/create-voting-session.yml +0 -101
  591. package/dist/tools/definitions/definitions/std/governance/define-stance.sh +0 -243
  592. package/dist/tools/definitions/definitions/std/governance/define-stance.yml +0 -82
  593. package/dist/tools/definitions/definitions/std/governance/generate-review-report.yml +0 -23
  594. package/dist/tools/definitions/definitions/std/governance/impeach.yml +0 -179
  595. package/dist/tools/definitions/definitions/std/governance/multi-stance-review.yml +0 -154
  596. package/dist/tools/definitions/definitions/std/governance/prepare-artifact.yml +0 -20
  597. package/dist/tools/definitions/definitions/std/governance/review-spec-approval.yml +0 -262
  598. package/dist/tools/definitions/definitions/std/governance/rollback.yml +0 -186
  599. package/dist/tools/definitions/definitions/std/governance/stance-review.yml +0 -149
  600. package/dist/tools/definitions/definitions/std/governance/track-effect.yml +0 -199
  601. package/dist/tools/definitions/definitions/std/governance/vote-tally.yml +0 -144
  602. package/dist/tools/definitions/definitions/std/patch/execute.yml +0 -51
  603. package/dist/tools/definitions/definitions/std/planning/generate-tasks.yml +0 -36
  604. package/dist/tools/definitions/definitions/std/planning/load-tasks.yml +0 -44
  605. package/dist/tools/definitions/definitions/std/planning/split-batch.yml +0 -481
  606. package/dist/tools/definitions/definitions/std/planning/split-tasks.yml +0 -359
  607. package/dist/tools/definitions/definitions/std/planning/update-tasks.yml +0 -51
  608. package/dist/tools/definitions/definitions/std/planning/validate-tasks.yml +0 -46
  609. package/dist/tools/definitions/definitions/std/project/decide-next-workflow.yml +0 -38
  610. package/dist/tools/definitions/definitions/std/project/load-state.yml +0 -31
  611. package/dist/tools/definitions/definitions/std/project/save-state.yml +0 -32
  612. package/dist/tools/definitions/definitions/std/quality/check-quality.yml +0 -241
  613. package/dist/tools/definitions/definitions/std/quality/debug-systematic.yml +0 -163
  614. package/dist/tools/definitions/definitions/std/quality/handle-feedback.yml +0 -108
  615. package/dist/tools/definitions/definitions/std/quality/review-code.yml +0 -128
  616. package/dist/tools/definitions/definitions/std/quality/review-spec.yml +0 -140
  617. package/dist/tools/definitions/definitions/std/quality/review-task.yml +0 -190
  618. package/dist/tools/definitions/definitions/std/quality/run-tests.yml +0 -80
  619. package/dist/tools/definitions/definitions/std/quick/analyze.yml +0 -56
  620. package/dist/tools/definitions/definitions/std/quick/implement.yml +0 -67
  621. package/dist/tools/definitions/definitions/std/quick/verify.yml +0 -71
  622. package/dist/tools/definitions/definitions/std/verification/verify_completion.yml +0 -113
  623. package/dist/tools/definitions/definitions/std/verification/wait-condition.yml +0 -107
  624. package/dist/types/iron-law.d.ts +0 -25
  625. package/dist/types/iron-law.d.ts.map +0 -1
  626. package/dist/types/iron-law.js +0 -16
  627. package/dist/types/iron-law.js.map +0 -1
  628. package/src/cli/commands/sync-docs.ts +0 -1175
  629. package/src/constraints/index.ts +0 -3
  630. package/src/core/constraints/__tests__/prompt-injection.test.ts +0 -89
  631. package/src/core/constraints/doc-freshness/auto-fix.ts +0 -69
  632. package/src/core/constraints/prompt-injection.ts +0 -73
  633. package/src/core/spec/index.ts +0 -7
  634. package/src/governance/CONTEXT.md +0 -22
  635. package/src/governance/__tests__/executor.test.ts +0 -249
  636. package/src/governance/executor.ts +0 -229
  637. package/src/governance/index.ts +0 -13
  638. package/src/governance/types.ts +0 -53
  639. package/src/tools/core/package.json +0 -7
  640. package/src/tools/core/pnpm-lock.yaml +0 -232
  641. package/src/types/iron-law.ts +0 -50
@@ -13,8 +13,6 @@
13
13
  * - PerformanceAnalyzer: 分析操作耗时
14
14
  */
15
15
 
16
- import * as fs from 'fs';
17
- import * as path from 'path';
18
16
  import type {
19
17
  PerformanceTrace,
20
18
  PerformanceSummary,
@@ -22,6 +20,16 @@ import type {
22
20
  PerformanceAnalyzerConfig,
23
21
  } from '../types/performance';
24
22
  import { PerformanceCollector } from './performance-collector';
23
+ import {
24
+ groupByKey,
25
+ timeRangeOf,
26
+ calcAverage,
27
+ calcPercentile,
28
+ splitByTime,
29
+ writeSummaryJson,
30
+ readSummaryJson,
31
+ MIN_TREND_SAMPLES,
32
+ } from './analyzer-base';
25
33
 
26
34
  /**
27
35
  * 默认配置
@@ -62,17 +70,13 @@ export class PerformanceAnalyzer {
62
70
  */
63
71
  summarize(traces: PerformanceTrace[]): PerformanceSummary[] {
64
72
  // 按操作类型分组
65
- const grouped = this.groupByOperation(traces);
73
+ const grouped = groupByKey(traces, t => t.operation);
66
74
 
67
75
  const summaries: PerformanceSummary[] = [];
68
76
 
69
77
  for (const [operation, group] of grouped) {
70
78
  // 计算时间范围
71
- const timestamps = group.map(t => t.timestamp);
72
- const timeRange = {
73
- start: Math.min(...timestamps),
74
- end: Math.max(...timestamps),
75
- };
79
+ const timeRange = timeRangeOf(group.map(t => t.timestamp));
76
80
 
77
81
  // 单次遍历计算核心统计
78
82
  const totalCalls = group.length;
@@ -90,11 +94,11 @@ export class PerformanceAnalyzer {
90
94
 
91
95
  // 计算耗时统计
92
96
  const durations = group.map(t => t.duration);
93
- const avgDuration = this.calcAverage(durations);
97
+ const avgDuration = calcAverage(durations);
94
98
  const maxDuration = Math.max(...durations);
95
99
  const minDuration = Math.min(...durations);
96
- const p95Duration = this.calcPercentile(durations, 95);
97
- const p99Duration = this.calcPercentile(durations, 99);
100
+ const p95Duration = calcPercentile(durations, 95);
101
+ const p99Duration = calcPercentile(durations, 99);
98
102
 
99
103
  // 计算趋势
100
104
  const recentTrend = this.calculateTrend(group);
@@ -255,42 +259,22 @@ export class PerformanceAnalyzer {
255
259
  });
256
260
  }
257
261
 
258
- /**
259
- * 按操作类型分组
260
- */
261
- private groupByOperation(traces: PerformanceTrace[]): Map<string, PerformanceTrace[]> {
262
- const grouped = new Map<string, PerformanceTrace[]>();
263
-
264
- for (const trace of traces) {
265
- const existing = grouped.get(trace.operation) || [];
266
- existing.push(trace);
267
- grouped.set(trace.operation, existing);
268
- }
269
-
270
- return grouped;
271
- }
272
-
273
262
  /**
274
263
  * 计算趋势
275
264
  *
276
265
  * 对比前半段和后半段的平均耗时
277
266
  */
278
267
  private calculateTrend(traces: PerformanceTrace[]): 'stable' | 'rising' | 'falling' {
279
- if (traces.length < 10) {
268
+ if (traces.length < MIN_TREND_SAMPLES) {
280
269
  return 'stable';
281
270
  }
282
271
 
283
- // 按时间排序
284
- const sorted = [...traces].sort((a, b) => a.timestamp - b.timestamp);
285
-
286
- // 分成前后两半
287
- const half = Math.floor(sorted.length / 2);
288
- const firstHalf = sorted.slice(0, half);
289
- const secondHalf = sorted.slice(half);
272
+ // 分成前后两半(按时间排序)
273
+ const [firstHalf, secondHalf] = splitByTime(traces);
290
274
 
291
275
  // 计算前半段和后半段的平均耗时
292
- const firstAvg = this.calcAverage(firstHalf.map(t => t.duration));
293
- const secondAvg = this.calcAverage(secondHalf.map(t => t.duration));
276
+ const firstAvg = calcAverage(firstHalf.map(t => t.duration));
277
+ const secondAvg = calcAverage(secondHalf.map(t => t.duration));
294
278
 
295
279
  // 计算变化率
296
280
  const delta = secondAvg - firstAvg;
@@ -306,52 +290,18 @@ export class PerformanceAnalyzer {
306
290
  }
307
291
  }
308
292
 
309
- /**
310
- * 计算平均值
311
- */
312
- private calcAverage(values: number[]): number {
313
- if (values.length === 0) return 0;
314
- return values.reduce((sum, v) => sum + v, 0) / values.length;
315
- }
316
-
317
- /**
318
- * 计算百分位数
319
- */
320
- private calcPercentile(values: number[], percentile: number): number {
321
- if (values.length === 0) return 0;
322
-
323
- const sorted = [...values].sort((a, b) => a - b);
324
- const index = Math.ceil((percentile / 100) * sorted.length) - 1;
325
-
326
- return sorted[Math.max(0, index)];
327
- }
328
-
329
293
  /**
330
294
  * 保存汇总结果
331
295
  */
332
296
  saveSummary(summaries: PerformanceSummary[]): void {
333
- const dir = path.dirname(this.config.summaryFile!);
334
- if (!fs.existsSync(dir)) {
335
- fs.mkdirSync(dir, { recursive: true });
336
- }
337
-
338
- fs.writeFileSync(
339
- this.config.summaryFile!,
340
- JSON.stringify(summaries, null, 2),
341
- 'utf-8'
342
- );
297
+ writeSummaryJson(this.config.summaryFile!, summaries);
343
298
  }
344
299
 
345
300
  /**
346
301
  * 加载上次汇总结果
347
302
  */
348
303
  loadSummary(): PerformanceSummary[] | null {
349
- if (!fs.existsSync(this.config.summaryFile!)) {
350
- return null;
351
- }
352
-
353
- const content = fs.readFileSync(this.config.summaryFile!, 'utf-8');
354
- return JSON.parse(content) as PerformanceSummary[];
304
+ return readSummaryJson<PerformanceSummary[]>(this.config.summaryFile!);
355
305
  }
356
306
 
357
307
  /**
@@ -324,25 +324,3 @@ export class PerformanceCollector {
324
324
  };
325
325
  }
326
326
  }
327
-
328
- /**
329
- * 全局单例(可选)
330
- */
331
- let globalCollector: PerformanceCollector | null = null;
332
-
333
- /**
334
- * 获取全局收集器
335
- */
336
- export function getPerformanceCollector(): PerformanceCollector {
337
- if (!globalCollector) {
338
- globalCollector = new PerformanceCollector();
339
- }
340
- return globalCollector;
341
- }
342
-
343
- /**
344
- * 配置全局收集器
345
- */
346
- export function configurePerformanceCollector(config: Partial<PerformanceCollectorConfig>): void {
347
- globalCollector = new PerformanceCollector(config);
348
- }
@@ -9,16 +9,22 @@
9
9
  * - 趋势分析(对比上一周期)
10
10
  */
11
11
 
12
- import * as fs from 'fs';
13
- import * as path from 'path';
14
12
  import type {
15
13
  ExecutionTrace,
16
14
  TraceSummary,
17
15
  TraceAnomaly,
18
- TraceFilter,
19
16
  TraceAnalyzerConfig,
20
17
  } from '../types/trace';
21
18
  import { TraceCollector } from './traces';
19
+ import {
20
+ groupByKey,
21
+ timeRangeOf,
22
+ findMostCommon,
23
+ splitByTime,
24
+ writeSummaryJson,
25
+ readSummaryJson,
26
+ MIN_TREND_SAMPLES,
27
+ } from './analyzer-base';
22
28
 
23
29
  /**
24
30
  * 默认配置
@@ -59,7 +65,7 @@ export class TraceAnalyzer {
59
65
  */
60
66
  summarize(traces: ExecutionTrace[]): TraceSummary[] {
61
67
  // 按约束 ID 分组
62
- const grouped = this.groupByConstraint(traces);
68
+ const grouped = groupByKey(traces, t => t.constraintId);
63
69
 
64
70
  const summaries: TraceSummary[] = [];
65
71
 
@@ -68,11 +74,7 @@ export class TraceAnalyzer {
68
74
  const level = group[0].level;
69
75
 
70
76
  // 计算时间范围
71
- const timestamps = group.map(t => t.timestamp);
72
- const timeRange = {
73
- start: Math.min(...timestamps),
74
- end: Math.max(...timestamps),
75
- };
77
+ const timeRange = timeRangeOf(group.map(t => t.timestamp));
76
78
 
77
79
  // 单次遍历计算核心统计
78
80
  const totalChecks = group.length;
@@ -93,7 +95,7 @@ export class TraceAnalyzer {
93
95
  const exceptionTraces = group.filter(t => t.exceptionApplied);
94
96
  const exceptionCount = exceptionTraces.length;
95
97
  const exceptionTypes = exceptionTraces.map(t => t.exceptionApplied!);
96
- const mostCommonException = this.findMostCommon(exceptionTypes);
98
+ const mostCommonException = findMostCommon(exceptionTypes);
97
99
 
98
100
  // 计算趋势
99
101
  const recentTrend = this.calculateTrend(group);
@@ -265,38 +267,18 @@ export class TraceAnalyzer {
265
267
  });
266
268
  }
267
269
 
268
- /**
269
- * 按约束 ID 分组
270
- */
271
- private groupByConstraint(traces: ExecutionTrace[]): Map<string, ExecutionTrace[]> {
272
- const grouped = new Map<string, ExecutionTrace[]>();
273
-
274
- for (const trace of traces) {
275
- const existing = grouped.get(trace.constraintId) || [];
276
- existing.push(trace);
277
- grouped.set(trace.constraintId, existing);
278
- }
279
-
280
- return grouped;
281
- }
282
-
283
270
  /**
284
271
  * 计算趋势
285
272
  *
286
273
  * 对比前半段和后半段的通过率
287
274
  */
288
275
  private calculateTrend(traces: ExecutionTrace[]): 'stable' | 'rising' | 'falling' {
289
- if (traces.length < 10) {
276
+ if (traces.length < MIN_TREND_SAMPLES) {
290
277
  return 'stable';
291
278
  }
292
279
 
293
- // 按时间排序
294
- const sorted = [...traces].sort((a, b) => a.timestamp - b.timestamp);
295
-
296
- // 分成前后两半
297
- const half = Math.floor(sorted.length / 2);
298
- const firstHalf = sorted.slice(0, half);
299
- const secondHalf = sorted.slice(half);
280
+ // 分成前后两半(按时间排序)
281
+ const [firstHalf, secondHalf] = splitByTime(traces);
300
282
 
301
283
  // 计算前半段和后半段的通过率
302
284
  const firstPassRate = this.calcPassRate(firstHalf);
@@ -324,56 +306,18 @@ export class TraceAnalyzer {
324
306
  return passCount / traces.length;
325
307
  }
326
308
 
327
- /**
328
- * 找出最常见元素
329
- */
330
- private findMostCommon(items: string[]): string | undefined {
331
- if (items.length === 0) return undefined;
332
-
333
- const counts = new Map<string, number>();
334
- for (const item of items) {
335
- counts.set(item, (counts.get(item) || 0) + 1);
336
- }
337
-
338
- let maxCount = 0;
339
- let mostCommon: string | undefined;
340
-
341
- for (const [item, count] of counts) {
342
- if (count > maxCount) {
343
- maxCount = count;
344
- mostCommon = item;
345
- }
346
- }
347
-
348
- return mostCommon;
349
- }
350
-
351
309
  /**
352
310
  * 保存汇总结果
353
311
  */
354
312
  saveSummary(summaries: TraceSummary[]): void {
355
- const dir = path.dirname(this.config.summaryFile!);
356
- if (!fs.existsSync(dir)) {
357
- fs.mkdirSync(dir, { recursive: true });
358
- }
359
-
360
- fs.writeFileSync(
361
- this.config.summaryFile!,
362
- JSON.stringify(summaries, null, 2),
363
- 'utf-8'
364
- );
313
+ writeSummaryJson(this.config.summaryFile!, summaries);
365
314
  }
366
315
 
367
316
  /**
368
317
  * 加载上次汇总结果
369
318
  */
370
319
  loadSummary(): TraceSummary[] | null {
371
- if (!fs.existsSync(this.config.summaryFile!)) {
372
- return null;
373
- }
374
-
375
- const content = fs.readFileSync(this.config.summaryFile!, 'utf-8');
376
- return JSON.parse(content) as TraceSummary[];
320
+ return readSummaryJson<TraceSummary[]>(this.config.summaryFile!);
377
321
  }
378
322
 
379
323
  /**
@@ -1,10 +1,10 @@
1
1
  /**
2
- * Tests for standard.ts — applyPreset, getPreset, getIronLawPreset
2
+ * Tests for standard.ts — applyPreset, getPreset
3
3
  *
4
4
  * Pure logic, no I/O — tests preset selection and constraint filtering.
5
5
  */
6
6
 
7
- import { applyPreset, getPreset, getIronLawPreset } from '../standard';
7
+ import { applyPreset, getPreset } from '../standard';
8
8
 
9
9
  describe('getPreset', () => {
10
10
  it('returns strict preset', () => {
@@ -87,18 +87,3 @@ describe('applyPreset with PresetConfig object', () => {
87
87
  expect(config.disabled.length).toBeGreaterThan(0);
88
88
  });
89
89
  });
90
-
91
- describe('getIronLawPreset (deprecated)', () => {
92
- it('returns iron law config for strict preset', () => {
93
- const config = getIronLawPreset('strict');
94
- expect(config.preset).toBe('strict');
95
- expect(config.enabled).toBe(true);
96
- expect(config.ironLaws.length).toBeGreaterThan(5);
97
- });
98
-
99
- it('returns iron law config for relaxed preset', () => {
100
- const config = getIronLawPreset('relaxed');
101
- expect(config.preset).toBe('relaxed');
102
- expect(config.ironLaws).toHaveLength(3);
103
- });
104
- });
@@ -8,9 +8,7 @@ export {
8
8
  RELAXED_PRESET,
9
9
  getPreset,
10
10
  applyPreset,
11
- // 向后兼容
12
- STANDARD_IRON_LAWS_CONFIG,
13
- getIronLawPreset,
11
+
14
12
  } from './standard';
15
13
 
16
14
  export type { PresetConfig } from './standard';
@@ -4,7 +4,7 @@
4
4
  * 预设定义哪些约束被启用
5
5
  */
6
6
 
7
- import type { ConstraintLevel, Constraint } from '../types/constraint';
7
+ import type { Constraint } from '../types/constraint';
8
8
  import type { MergedConstraintsConfig } from '../types/project-config';
9
9
  import { IRON_LAWS, GUIDELINES, TIPS } from '../core/constraints/definitions';
10
10
 
@@ -135,29 +135,4 @@ export function getPreset(name: string): PresetConfig {
135
135
  default:
136
136
  return STANDARD_PRESET;
137
137
  }
138
- }
139
-
140
- // ========================================
141
- // 向后兼容
142
- // ========================================
143
-
144
- import type { IronLawConfig } from '../types/iron-law';
145
-
146
- /**
147
- * @deprecated 使用 PresetConfig 代替
148
- */
149
- export { STANDARD_PRESET as STANDARD_IRON_LAWS_CONFIG };
150
-
151
- /**
152
- * @deprecated 使用 getPreset 代替
153
- */
154
- export function getIronLawPreset(preset: string): IronLawConfig {
155
- const config = getPreset(preset);
156
- return {
157
- preset: preset as 'strict' | 'standard' | 'relaxed',
158
- enabled: true,
159
- ironLaws: config.ironLaws
160
- ? Object.values(IRON_LAWS).filter(c => config.ironLaws!.includes(c.id))
161
- : Object.values(IRON_LAWS),
162
- };
163
138
  }
@@ -26,16 +26,12 @@ const DEFAULT_SENSITIVE_PATTERNS: RegExp[] = [
26
26
  /(?:mongodb|postgres|mysql|redis):\/\/[^\s'"]+/gi,
27
27
  ];
28
28
 
29
- const DEFAULT_MIN_QUALITY_SCORE = 0.6;
30
-
31
29
  export class OutputGuardrail {
32
30
  private sensitivePatterns: RegExp[];
33
- private minQualityScore: number;
34
31
  private checkKnowledgeRefs: boolean;
35
32
 
36
33
  constructor(config?: OutputGuardrailConfig) {
37
34
  this.sensitivePatterns = config?.sensitivePatterns ?? DEFAULT_SENSITIVE_PATTERNS;
38
- this.minQualityScore = config?.minQualityScore ?? DEFAULT_MIN_QUALITY_SCORE;
39
35
  this.checkKnowledgeRefs = config?.checkKnowledgeRefs ?? false;
40
36
  }
41
37
 
@@ -4,7 +4,7 @@
4
4
  * 工具注册/发现/执行
5
5
  */
6
6
 
7
- import type { ToolDefinition, ToolCategory, ToolHandler, ToolResult } from './types';
7
+ import type { ToolDefinition, ToolCategory, ToolResult } from './types';
8
8
 
9
9
  export class ToolRegistry {
10
10
  private tools: Map<string, ToolDefinition>;
@@ -5,29 +5,13 @@
5
5
  import { describe, it, expect } from '@jest/globals';
6
6
 
7
7
  // 从 barrel index.ts 导入,覆盖 re-export 行
8
- import {
9
- ConstraintViolationError,
10
- IronLawViolationError,
11
- } from '..';
12
-
13
- // 从 iron-law.ts 导入,覆盖 value re-export
14
- import { IronLawViolationError as IronLawViolationErrorDirect } from '../iron-law';
8
+ import { ConstraintViolationError } from '..';
15
9
 
16
10
  describe('types barrel exports', () => {
17
11
  it('ConstraintViolationError 应该可从 index 导入', () => {
18
12
  expect(ConstraintViolationError).toBeDefined();
19
13
  expect(typeof ConstraintViolationError).toBe('function');
20
14
  });
21
-
22
- it('IronLawViolationError 应该可从 index 导入(向后兼容)', () => {
23
- expect(IronLawViolationError).toBeDefined();
24
- expect(IronLawViolationError.prototype).toBeInstanceOf(ConstraintViolationError);
25
- });
26
-
27
- it('IronLawViolationError 应该可从 iron-law.ts 直接导入', () => {
28
- expect(IronLawViolationErrorDirect).toBeDefined();
29
- expect(IronLawViolationErrorDirect).toBe(ConstraintViolationError);
30
- });
31
15
  });
32
16
 
33
17
  describe('ConstraintViolationError', () => {
@@ -68,19 +52,3 @@ describe('ConstraintViolationError', () => {
68
52
  expect(error.message).toBe('Constraint violation');
69
53
  });
70
54
  });
71
-
72
- describe('IronLawViolationError', () => {
73
- it('应该继承 ConstraintViolationError', () => {
74
- const error = new IronLawViolationError({
75
- id: 'test',
76
- level: 'iron_law',
77
- satisfied: false,
78
- message: '铁律违规',
79
- checkedAt: new Date(),
80
- });
81
-
82
- expect(error).toBeInstanceOf(ConstraintViolationError);
83
- expect(error.name).toBe('IronLawViolationError');
84
- expect(error.message).toBe('铁律违规');
85
- });
86
- });
@@ -18,35 +18,11 @@ export type ConstraintId = string;
18
18
  export type ConstraintLevel = 'iron_law' | 'guideline' | 'tip';
19
19
 
20
20
  /**
21
- * 约束触发条件
22
- */
23
- /**
24
- * 约束触发器(开放扩展)
21
+ * 约束触发条件(开放扩展)
25
22
  *
26
23
  * 从硬编码 union type 改为 string,consumer 可传入任意 trigger。
27
24
  * 无需修改 harness 即可添加领域特定 trigger。
28
- *
29
- * 以下为推荐的抽象 trigger 常量。领域概念(如 deploy、
30
- * config_update 等)由 consumer 自行管理。
31
25
  */
32
-
33
- export const CODE_IMPLEMENTATION = 'code_implementation' as const;
34
- export const FILE_MODIFICATION = 'file_modification' as const;
35
- export const FILE_CREATION = 'file_creation' as const;
36
- export const FILE_DELETION = 'file_deletion' as const;
37
- export const MODULE_CREATION = 'module_creation' as const;
38
- export const MODULE_MODIFICATION = 'module_modification' as const;
39
- export const MODULE_DELETION = 'module_deletion' as const;
40
- export const MODULE_EXTENSION = 'module_extension' as const;
41
- export const API_CHANGE = 'api_change' as const;
42
- export const EXPORT_CHANGE = 'export_change' as const;
43
- export const TEST_CREATION = 'test_creation' as const;
44
- export const COMMIT = 'commit' as const;
45
- export const PUSH = 'push' as const;
46
- export const MERGE = 'merge' as const;
47
- export const DESIGN_REQUEST = 'design_request' as const;
48
- export const ARCHITECTURE_CHANGE = 'architecture_change' as const;
49
-
50
26
  export type ConstraintTrigger = string;
51
27
 
52
28
  /**
@@ -87,33 +63,6 @@ export interface Constraint {
87
63
  exceptions?: string[];
88
64
  }
89
65
 
90
- // ========================================
91
- // 向后兼容的类型别名
92
- // ========================================
93
-
94
- /**
95
- * @deprecated 使用 ConstraintId 代替
96
- */
97
- export type IronLawId = ConstraintId;
98
-
99
- /**
100
- * @deprecated 使用 ConstraintLevel 代替
101
- */
102
- export type IronLawSeverity = 'error' | 'warning' | 'info';
103
-
104
- /**
105
- * @deprecated 使用 ConstraintTrigger 代替
106
- */
107
- export type IronLawTrigger = ConstraintTrigger;
108
-
109
- /**
110
- * @deprecated 使用 Constraint 代替
111
- */
112
- export interface IronLaw extends Constraint {
113
- /** @deprecated 使用 level 代替 */
114
- severity?: IronLawSeverity;
115
- }
116
-
117
66
  /**
118
67
  * 约束检查结果
119
68
  */
@@ -140,14 +89,6 @@ export interface ConstraintResult {
140
89
  checkedAt: Date;
141
90
  }
142
91
 
143
- /**
144
- * @deprecated 使用 ConstraintResult 代替
145
- */
146
- export interface IronLawResult extends ConstraintResult {
147
- /** @deprecated */
148
- law?: Constraint;
149
- }
150
-
151
92
  /**
152
93
  * 约束检查上下文
153
94
  */
@@ -283,11 +224,6 @@ export interface ConstraintContext {
283
224
  executionContext?: any;
284
225
  }
285
226
 
286
- /**
287
- * @deprecated 使用 ConstraintContext 代替
288
- */
289
- export type IronLawContext = ConstraintContext;
290
-
291
227
  /**
292
228
  * 约束违规错误
293
229
  */
@@ -301,16 +237,6 @@ export class ConstraintViolationError extends Error {
301
237
  }
302
238
  }
303
239
 
304
- /**
305
- * @deprecated 使用 ConstraintViolationError 代替
306
- */
307
- export class IronLawViolationError extends ConstraintViolationError {
308
- constructor(result: ConstraintResult) {
309
- super(result);
310
- this.name = 'IronLawViolationError';
311
- }
312
- }
313
-
314
240
  /**
315
241
  * 三层约束检查结果
316
242
  */
@@ -333,3 +259,8 @@ export interface ConstraintCheckResult {
333
259
  /** 提示数量 */
334
260
  tipCount: number;
335
261
  }
262
+
263
+ /**
264
+ * studio 兼容别名(P0 护栏):等价于 ConstraintContext
265
+ */
266
+ export type IronLawContext = ConstraintContext;