@dommaker/harness 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (349) hide show
  1. package/CHANGELOG.md +19 -2
  2. package/README.md +2 -4
  3. package/bin/harness.js +12 -37
  4. package/dist/cli/commands/check.d.ts +2 -2
  5. package/dist/cli/commands/check.d.ts.map +1 -1
  6. package/dist/cli/commands/check.js +7 -32
  7. package/dist/cli/commands/check.js.map +1 -1
  8. package/dist/cli/commands/definitions.d.ts +2 -0
  9. package/dist/cli/commands/definitions.d.ts.map +1 -1
  10. package/dist/cli/commands/definitions.js.map +1 -1
  11. package/dist/cli/commands/init.d.ts.map +1 -1
  12. package/dist/cli/commands/init.js +6 -37
  13. package/dist/cli/commands/init.js.map +1 -1
  14. package/dist/cli/commands/knowledge.d.ts.map +1 -1
  15. package/dist/cli/commands/knowledge.js +1 -12
  16. package/dist/cli/commands/knowledge.js.map +1 -1
  17. package/dist/cli/commands/report.d.ts.map +1 -1
  18. package/dist/cli/commands/report.js +0 -2
  19. package/dist/cli/commands/report.js.map +1 -1
  20. package/dist/cli/commands/status.d.ts.map +1 -1
  21. package/dist/cli/commands/status.js +2 -11
  22. package/dist/cli/commands/status.js.map +1 -1
  23. package/dist/context/index.d.ts +9 -6
  24. package/dist/context/index.d.ts.map +1 -1
  25. package/dist/context/index.js +18 -20
  26. package/dist/context/index.js.map +1 -1
  27. package/dist/core/constraints/capabilities-parser.d.ts +3 -2
  28. package/dist/core/constraints/capabilities-parser.d.ts.map +1 -1
  29. package/dist/core/constraints/capabilities-parser.js +25 -47
  30. package/dist/core/constraints/capabilities-parser.js.map +1 -1
  31. package/dist/core/constraints/checker.d.ts +32 -33
  32. package/dist/core/constraints/checker.d.ts.map +1 -1
  33. package/dist/core/constraints/checker.js +38 -128
  34. package/dist/core/constraints/checker.js.map +1 -1
  35. package/dist/core/constraints/checkers/index.d.ts +2 -1
  36. package/dist/core/constraints/checkers/index.d.ts.map +1 -1
  37. package/dist/core/constraints/checkers/index.js +3 -0
  38. package/dist/core/constraints/checkers/index.js.map +1 -1
  39. package/dist/core/constraints/checkers/types.d.ts +25 -0
  40. package/dist/core/constraints/checkers/types.d.ts.map +1 -1
  41. package/dist/core/constraints/checkers/types.js +24 -0
  42. package/dist/core/constraints/checkers/types.js.map +1 -1
  43. package/dist/core/constraints/definitions/guidelines.d.ts.map +1 -1
  44. package/dist/core/constraints/definitions/guidelines.js +0 -2
  45. package/dist/core/constraints/definitions/guidelines.js.map +1 -1
  46. package/dist/core/constraints/definitions/prompts.d.ts.map +1 -1
  47. package/dist/core/constraints/definitions/prompts.js +0 -5
  48. package/dist/core/constraints/definitions/prompts.js.map +1 -1
  49. package/dist/core/constraints/index.d.ts +1 -2
  50. package/dist/core/constraints/index.d.ts.map +1 -1
  51. package/dist/core/constraints/index.js +1 -7
  52. package/dist/core/constraints/index.js.map +1 -1
  53. package/dist/core/constraints/usage-report.d.ts +1 -2
  54. package/dist/core/constraints/usage-report.d.ts.map +1 -1
  55. package/dist/core/constraints/usage-report.js +2 -5
  56. package/dist/core/constraints/usage-report.js.map +1 -1
  57. package/dist/core/effective-constraints.d.ts +24 -4
  58. package/dist/core/effective-constraints.d.ts.map +1 -1
  59. package/dist/core/effective-constraints.js +28 -7
  60. package/dist/core/effective-constraints.js.map +1 -1
  61. package/dist/core/effective-set.d.ts +30 -0
  62. package/dist/core/effective-set.d.ts.map +1 -0
  63. package/dist/core/effective-set.js +35 -0
  64. package/dist/core/effective-set.js.map +1 -0
  65. package/dist/core/index.d.ts +13 -6
  66. package/dist/core/index.d.ts.map +1 -1
  67. package/dist/core/index.js +44 -21
  68. package/dist/core/index.js.map +1 -1
  69. package/dist/core/project-config-loader.d.ts +3 -6
  70. package/dist/core/project-config-loader.d.ts.map +1 -1
  71. package/dist/core/project-config-loader.js +47 -61
  72. package/dist/core/project-config-loader.js.map +1 -1
  73. package/dist/failure/constraint-handler.d.ts +1 -1
  74. package/dist/failure/constraint-handler.js +1 -1
  75. package/dist/gates/checker-gate.d.ts +1 -4
  76. package/dist/gates/checker-gate.d.ts.map +1 -1
  77. package/dist/gates/checker-gate.js +3 -11
  78. package/dist/gates/checker-gate.js.map +1 -1
  79. package/dist/gates/definitions.d.ts +9 -38
  80. package/dist/gates/definitions.d.ts.map +1 -1
  81. package/dist/gates/definitions.js +24 -13
  82. package/dist/gates/definitions.js.map +1 -1
  83. package/dist/gates/effective-gates.d.ts.map +1 -1
  84. package/dist/gates/effective-gates.js +14 -18
  85. package/dist/gates/effective-gates.js.map +1 -1
  86. package/dist/gates/index.d.ts +1 -1
  87. package/dist/gates/index.d.ts.map +1 -1
  88. package/dist/gates/index.js.map +1 -1
  89. package/dist/hooks/bootstrap.d.ts.map +1 -1
  90. package/dist/hooks/bootstrap.js +0 -3
  91. package/dist/hooks/bootstrap.js.map +1 -1
  92. package/dist/index.d.ts +43 -53
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +180 -138
  95. package/dist/index.js.map +1 -1
  96. package/dist/knowledge/query.d.ts +15 -0
  97. package/dist/knowledge/query.d.ts.map +1 -1
  98. package/dist/knowledge/query.js +23 -0
  99. package/dist/knowledge/query.js.map +1 -1
  100. package/dist/monitoring/analyzer-base.d.ts +0 -4
  101. package/dist/monitoring/analyzer-base.d.ts.map +1 -1
  102. package/dist/monitoring/analyzer-base.js +0 -21
  103. package/dist/monitoring/analyzer-base.js.map +1 -1
  104. package/dist/monitoring/index.d.ts +6 -12
  105. package/dist/monitoring/index.d.ts.map +1 -1
  106. package/dist/monitoring/index.js +13 -29
  107. package/dist/monitoring/index.js.map +1 -1
  108. package/dist/monitoring/trace-analyzer.d.ts.map +1 -1
  109. package/dist/monitoring/trace-analyzer.js +2 -68
  110. package/dist/monitoring/trace-analyzer.js.map +1 -1
  111. package/dist/monitoring/traces.d.ts +2 -6
  112. package/dist/monitoring/traces.d.ts.map +1 -1
  113. package/dist/monitoring/traces.js +0 -14
  114. package/dist/monitoring/traces.js.map +1 -1
  115. package/dist/presets/index.d.ts +2 -2
  116. package/dist/presets/index.d.ts.map +1 -1
  117. package/dist/presets/index.js +3 -4
  118. package/dist/presets/index.js.map +1 -1
  119. package/dist/presets/standard.d.ts +10 -22
  120. package/dist/presets/standard.d.ts.map +1 -1
  121. package/dist/presets/standard.js +15 -75
  122. package/dist/presets/standard.js.map +1 -1
  123. package/dist/types/constraint.d.ts +1 -29
  124. package/dist/types/constraint.d.ts.map +1 -1
  125. package/dist/types/constraint.js +1 -1
  126. package/dist/types/constraint.js.map +1 -1
  127. package/dist/types/index.d.ts +0 -3
  128. package/dist/types/index.d.ts.map +1 -1
  129. package/dist/types/index.js +0 -4
  130. package/dist/types/index.js.map +1 -1
  131. package/dist/types/project-config.d.ts +4 -8
  132. package/dist/types/project-config.d.ts.map +1 -1
  133. package/dist/types/trace.d.ts +9 -22
  134. package/dist/types/trace.d.ts.map +1 -1
  135. package/package.json +2 -2
  136. package/src/CONTEXT.md +5 -7
  137. package/src/__tests__/checker-extra.test.ts +80 -139
  138. package/src/__tests__/checker.test.ts +0 -376
  139. package/src/__tests__/project-config-loader-extra.test.ts +42 -29
  140. package/src/__tests__/public-exports.test.ts +138 -0
  141. package/src/__tests__/trace-analyzer-extra.test.ts +6 -86
  142. package/src/__tests__/trace-analyzer.test.ts +4 -5
  143. package/src/__tests__/trace-collector.test.ts +0 -11
  144. package/src/__tests__/traces.test.ts +3 -22
  145. package/src/cli/commands/CONTEXT.md +2 -2
  146. package/src/cli/commands/__tests__/check-skip-output.test.ts +10 -7
  147. package/src/cli/commands/__tests__/check.test.ts +29 -69
  148. package/src/cli/commands/__tests__/constraints-report.test.ts +1 -1
  149. package/src/cli/commands/__tests__/knowledge.test.ts +90 -1
  150. package/src/cli/commands/__tests__/registry.test.ts +8 -6
  151. package/src/cli/commands/__tests__/status-extra.test.ts +6 -28
  152. package/src/cli/commands/__tests__/status.test.ts +6 -21
  153. package/src/cli/commands/check.ts +8 -34
  154. package/src/cli/commands/definitions.ts +2 -0
  155. package/src/cli/commands/init.ts +6 -37
  156. package/src/cli/commands/knowledge.ts +1 -16
  157. package/src/cli/commands/report.ts +0 -2
  158. package/src/cli/commands/status.ts +2 -12
  159. package/src/context/index.ts +29 -6
  160. package/src/core/CONTEXT.md +4 -3
  161. package/src/core/__tests__/effective-set.test.ts +80 -0
  162. package/src/core/constraints/capabilities-parser.ts +43 -49
  163. package/src/core/constraints/checker.ts +56 -147
  164. package/src/core/constraints/checkers/index.ts +2 -1
  165. package/src/core/constraints/checkers/types.ts +42 -0
  166. package/src/core/constraints/definitions/guidelines.ts +0 -2
  167. package/src/core/constraints/definitions/prompts.ts +0 -5
  168. package/src/core/constraints/index.ts +2 -17
  169. package/src/core/constraints/usage-report.ts +5 -8
  170. package/src/core/effective-constraints.ts +35 -7
  171. package/src/core/effective-set.ts +56 -0
  172. package/src/core/index.ts +80 -6
  173. package/src/core/project-config-loader.ts +53 -68
  174. package/src/failure/CONTEXT.md +1 -1
  175. package/src/failure/constraint-handler.ts +1 -1
  176. package/src/gates/CONTEXT.md +3 -3
  177. package/src/gates/checker-gate.ts +4 -12
  178. package/src/gates/definitions.ts +27 -50
  179. package/src/gates/effective-gates.ts +14 -21
  180. package/src/gates/index.ts +1 -1
  181. package/src/hooks/bootstrap.ts +0 -3
  182. package/src/index.ts +384 -137
  183. package/src/knowledge/CONTEXT.md +2 -2
  184. package/src/knowledge/__tests__/query.test.ts +64 -0
  185. package/src/knowledge/query.ts +28 -0
  186. package/src/monitoring/CONTEXT.md +7 -13
  187. package/src/monitoring/__tests__/traces.test.ts +0 -10
  188. package/src/monitoring/analyzer-base.ts +0 -22
  189. package/src/monitoring/index.ts +6 -12
  190. package/src/monitoring/trace-analyzer.ts +2 -73
  191. package/src/monitoring/traces.ts +2 -22
  192. package/src/presets/__tests__/standard.test.ts +48 -69
  193. package/src/presets/index.ts +3 -5
  194. package/src/presets/standard.ts +14 -79
  195. package/src/spec/CONTEXT.md +5 -13
  196. package/src/types/constraint.ts +1 -51
  197. package/src/types/index.ts +0 -12
  198. package/src/types/project-config.ts +4 -10
  199. package/src/types/trace.ts +9 -34
  200. package/dist/core/constraints/interceptor.d.ts +0 -38
  201. package/dist/core/constraints/interceptor.d.ts.map +0 -1
  202. package/dist/core/constraints/interceptor.js +0 -166
  203. package/dist/core/constraints/interceptor.js.map +0 -1
  204. package/dist/dashboard/data.d.ts +0 -31
  205. package/dist/dashboard/data.d.ts.map +0 -1
  206. package/dist/dashboard/data.js +0 -81
  207. package/dist/dashboard/data.js.map +0 -1
  208. package/dist/dashboard/index.d.ts +0 -4
  209. package/dist/dashboard/index.d.ts.map +0 -1
  210. package/dist/dashboard/index.js +0 -20
  211. package/dist/dashboard/index.js.map +0 -1
  212. package/dist/dashboard/stats.d.ts +0 -20
  213. package/dist/dashboard/stats.d.ts.map +0 -1
  214. package/dist/dashboard/stats.js +0 -115
  215. package/dist/dashboard/stats.js.map +0 -1
  216. package/dist/dashboard/types.d.ts +0 -110
  217. package/dist/dashboard/types.d.ts.map +0 -1
  218. package/dist/dashboard/types.js +0 -8
  219. package/dist/dashboard/types.js.map +0 -1
  220. package/dist/monitoring/constraint-doctor.d.ts +0 -82
  221. package/dist/monitoring/constraint-doctor.d.ts.map +0 -1
  222. package/dist/monitoring/constraint-doctor.js +0 -191
  223. package/dist/monitoring/constraint-doctor.js.map +0 -1
  224. package/dist/monitoring/diagnosis-rules.d.ts +0 -18
  225. package/dist/monitoring/diagnosis-rules.d.ts.map +0 -1
  226. package/dist/monitoring/diagnosis-rules.js +0 -119
  227. package/dist/monitoring/diagnosis-rules.js.map +0 -1
  228. package/dist/monitoring/knowledge-doctor.d.ts +0 -78
  229. package/dist/monitoring/knowledge-doctor.d.ts.map +0 -1
  230. package/dist/monitoring/knowledge-doctor.js +0 -266
  231. package/dist/monitoring/knowledge-doctor.js.map +0 -1
  232. package/dist/monitoring/knowledge-evolver.d.ts +0 -72
  233. package/dist/monitoring/knowledge-evolver.d.ts.map +0 -1
  234. package/dist/monitoring/knowledge-evolver.js +0 -205
  235. package/dist/monitoring/knowledge-evolver.js.map +0 -1
  236. package/dist/monitoring/performance-analyzer.d.ts +0 -92
  237. package/dist/monitoring/performance-analyzer.d.ts.map +0 -1
  238. package/dist/monitoring/performance-analyzer.js +0 -343
  239. package/dist/monitoring/performance-analyzer.js.map +0 -1
  240. package/dist/monitoring/performance-collector.d.ts +0 -103
  241. package/dist/monitoring/performance-collector.d.ts.map +0 -1
  242. package/dist/monitoring/performance-collector.js +0 -298
  243. package/dist/monitoring/performance-collector.js.map +0 -1
  244. package/dist/safety/index.d.ts +0 -6
  245. package/dist/safety/index.d.ts.map +0 -1
  246. package/dist/safety/index.js +0 -22
  247. package/dist/safety/index.js.map +0 -1
  248. package/dist/safety/input-guardrail.d.ts +0 -36
  249. package/dist/safety/input-guardrail.d.ts.map +0 -1
  250. package/dist/safety/input-guardrail.js +0 -118
  251. package/dist/safety/input-guardrail.js.map +0 -1
  252. package/dist/safety/output-guardrail.d.ts +0 -39
  253. package/dist/safety/output-guardrail.d.ts.map +0 -1
  254. package/dist/safety/output-guardrail.js +0 -147
  255. package/dist/safety/output-guardrail.js.map +0 -1
  256. package/dist/safety/sandbox.d.ts +0 -45
  257. package/dist/safety/sandbox.d.ts.map +0 -1
  258. package/dist/safety/sandbox.js +0 -134
  259. package/dist/safety/sandbox.js.map +0 -1
  260. package/dist/safety/tool-guardrail.d.ts +0 -51
  261. package/dist/safety/tool-guardrail.d.ts.map +0 -1
  262. package/dist/safety/tool-guardrail.js +0 -147
  263. package/dist/safety/tool-guardrail.js.map +0 -1
  264. package/dist/safety/types.d.ts +0 -104
  265. package/dist/safety/types.d.ts.map +0 -1
  266. package/dist/safety/types.js +0 -6
  267. package/dist/safety/types.js.map +0 -1
  268. package/dist/spec/annotation-checker.d.ts +0 -47
  269. package/dist/spec/annotation-checker.d.ts.map +0 -1
  270. package/dist/spec/annotation-checker.js +0 -279
  271. package/dist/spec/annotation-checker.js.map +0 -1
  272. package/dist/types/enforcement.d.ts +0 -42
  273. package/dist/types/enforcement.d.ts.map +0 -1
  274. package/dist/types/enforcement.js +0 -6
  275. package/dist/types/enforcement.js.map +0 -1
  276. package/dist/types/monitoring-types.d.ts +0 -53
  277. package/dist/types/monitoring-types.d.ts.map +0 -1
  278. package/dist/types/monitoring-types.js +0 -10
  279. package/dist/types/monitoring-types.js.map +0 -1
  280. package/dist/types/performance.d.ts +0 -204
  281. package/dist/types/performance.d.ts.map +0 -1
  282. package/dist/types/performance.js +0 -12
  283. package/dist/types/performance.js.map +0 -1
  284. package/dist/verification/index.d.ts +0 -4
  285. package/dist/verification/index.d.ts.map +0 -1
  286. package/dist/verification/index.js +0 -20
  287. package/dist/verification/index.js.map +0 -1
  288. package/dist/verification/loop.d.ts +0 -30
  289. package/dist/verification/loop.d.ts.map +0 -1
  290. package/dist/verification/loop.js +0 -114
  291. package/dist/verification/loop.js.map +0 -1
  292. package/dist/verification/rules-based.d.ts +0 -40
  293. package/dist/verification/rules-based.d.ts.map +0 -1
  294. package/dist/verification/rules-based.js +0 -130
  295. package/dist/verification/rules-based.js.map +0 -1
  296. package/dist/verification/types.d.ts +0 -69
  297. package/dist/verification/types.d.ts.map +0 -1
  298. package/dist/verification/types.js +0 -6
  299. package/dist/verification/types.js.map +0 -1
  300. package/src/__tests__/annotation-checker.test.ts +0 -183
  301. package/src/__tests__/constraint-doctor.test.ts +0 -271
  302. package/src/__tests__/doctor-extra.test.ts +0 -155
  303. package/src/__tests__/extend-exceptions.test.ts +0 -149
  304. package/src/__tests__/interceptor.test.ts +0 -89
  305. package/src/__tests__/performance-analyzer.test.ts +0 -499
  306. package/src/__tests__/performance-collector.test.ts +0 -276
  307. package/src/__tests__/presets.test.ts +0 -65
  308. package/src/core/constraints/__tests__/interceptor.test.ts +0 -253
  309. package/src/core/constraints/interceptor.ts +0 -214
  310. package/src/dashboard/CONTEXT.md +0 -21
  311. package/src/dashboard/__tests__/data.test.ts +0 -111
  312. package/src/dashboard/__tests__/stats.test.ts +0 -159
  313. package/src/dashboard/data.ts +0 -103
  314. package/src/dashboard/index.ts +0 -3
  315. package/src/dashboard/stats.ts +0 -127
  316. package/src/dashboard/types.ts +0 -130
  317. package/src/monitoring/__tests__/knowledge-doctor.test.ts +0 -278
  318. package/src/monitoring/__tests__/knowledge-evolver.test.ts +0 -368
  319. package/src/monitoring/__tests__/performance-analyzer.test.ts +0 -137
  320. package/src/monitoring/__tests__/performance-collector.test.ts +0 -331
  321. package/src/monitoring/constraint-doctor.ts +0 -239
  322. package/src/monitoring/diagnosis-rules.ts +0 -132
  323. package/src/monitoring/knowledge-doctor.ts +0 -322
  324. package/src/monitoring/knowledge-evolver.ts +0 -289
  325. package/src/monitoring/performance-analyzer.ts +0 -400
  326. package/src/monitoring/performance-collector.ts +0 -326
  327. package/src/safety/CONTEXT.md +0 -23
  328. package/src/safety/__tests__/input-guardrail.test.ts +0 -105
  329. package/src/safety/__tests__/output-guardrail.test.ts +0 -108
  330. package/src/safety/__tests__/sandbox.test.ts +0 -158
  331. package/src/safety/__tests__/tool-guardrail.test.ts +0 -127
  332. package/src/safety/index.ts +0 -5
  333. package/src/safety/input-guardrail.ts +0 -133
  334. package/src/safety/output-guardrail.ts +0 -170
  335. package/src/safety/sandbox.ts +0 -148
  336. package/src/safety/tool-guardrail.ts +0 -176
  337. package/src/safety/types.ts +0 -124
  338. package/src/spec/__tests__/annotation-checker.test.ts +0 -294
  339. package/src/spec/annotation-checker.ts +0 -320
  340. package/src/types/enforcement.ts +0 -48
  341. package/src/types/monitoring-types.ts +0 -68
  342. package/src/types/performance.ts +0 -295
  343. package/src/verification/CONTEXT.md +0 -23
  344. package/src/verification/__tests__/loop.test.ts +0 -303
  345. package/src/verification/__tests__/rules-based.test.ts +0 -240
  346. package/src/verification/index.ts +0 -3
  347. package/src/verification/loop.ts +0 -137
  348. package/src/verification/rules-based.ts +0 -152
  349. package/src/verification/types.ts +0 -81
@@ -1,205 +0,0 @@
1
- "use strict";
2
- /**
3
- * 知识成熟度进化器
4
- *
5
- * 聚焦知识成熟度进化:
6
- * - 基于引用数据提议成熟度变更
7
- * - 自动审核(安全规则)
8
- * - 执行变更
9
- */
10
- Object.defineProperty(exports, "__esModule", { value: true });
11
- exports.KnowledgeEvolver = void 0;
12
- const DEFAULT_CONFIG = {
13
- promoteThreshold: 2,
14
- demoteDays: 180,
15
- autoImplement: false,
16
- };
17
- // ── 成熟度进化规则 ───────────────────────────────────────
18
- const MATURITY_ORDER = ['draft', 'verified', 'proven'];
19
- function nextMaturity(current) {
20
- const idx = MATURITY_ORDER.indexOf(current);
21
- return idx < MATURITY_ORDER.length - 1 ? MATURITY_ORDER[idx + 1] : undefined;
22
- }
23
- function prevMaturity(current) {
24
- const idx = MATURITY_ORDER.indexOf(current);
25
- return idx > 0 ? MATURITY_ORDER[idx - 1] : undefined;
26
- }
27
- // ── 知识进化器 ───────────────────────────────────────────
28
- class KnowledgeEvolver {
29
- config;
30
- store;
31
- constructor(config, store) {
32
- this.config = { ...DEFAULT_CONFIG, ...config };
33
- this.store = store;
34
- }
35
- /**
36
- * 从知识条目和诊断生成进化提案
37
- */
38
- generateProposals(entries, diagnoses = []) {
39
- const proposals = [];
40
- for (const entry of entries) {
41
- if (entry.maturity === 'archived')
42
- continue;
43
- // 升级检查
44
- const promoteProposal = this.checkPromote(entry);
45
- if (promoteProposal)
46
- proposals.push(promoteProposal);
47
- // 降级检查
48
- const demoteProposal = this.checkDemote(entry);
49
- if (demoteProposal)
50
- proposals.push(demoteProposal);
51
- }
52
- // 从诊断生成提案
53
- for (const diagnosis of diagnoses) {
54
- if (diagnosis.type === 'contradiction' && diagnosis.entryId) {
55
- const entry = entries.find(e => e.id === diagnosis.entryId);
56
- if (entry) {
57
- proposals.push({
58
- id: `freeze-${entry.id}-${Date.now()}`,
59
- entryId: entry.id,
60
- action: 'freeze',
61
- currentMaturity: entry.maturity,
62
- targetMaturity: entry.maturity,
63
- reason: diagnosis.description,
64
- evidence: [diagnosis.rootCause],
65
- risk: 'medium',
66
- autoApprovable: false,
67
- status: 'pending',
68
- createdAt: new Date().toISOString(),
69
- });
70
- }
71
- }
72
- }
73
- return proposals;
74
- }
75
- /**
76
- * 检查是否可以升级
77
- */
78
- checkPromote(entry) {
79
- const target = nextMaturity(entry.maturity);
80
- if (!target)
81
- return undefined;
82
- const refCount = entry.referencedBy.length;
83
- const projectCount = entry.projects.length;
84
- // draft → verified: 需要至少 1 次引用
85
- if (entry.maturity === 'draft' && refCount >= 1) {
86
- return this.createProposal(entry, 'promote', target, `被引用 ${refCount} 次,可以升级为 verified`, [`引用次数: ${refCount}`], 'low');
87
- }
88
- // verified → proven: 需要 ≥2 个项目验证
89
- if (entry.maturity === 'verified' && projectCount >= this.config.promoteThreshold) {
90
- return this.createProposal(entry, 'promote', target, `被 ${projectCount} 个项目验证,可以升级为 proven`, [`项目数: ${projectCount}`], 'low');
91
- }
92
- return undefined;
93
- }
94
- /**
95
- * 检查是否应该降级
96
- */
97
- checkDemote(entry) {
98
- const target = prevMaturity(entry.maturity);
99
- if (!target)
100
- return undefined;
101
- const lastRef = entry.lastReferenced
102
- ? new Date(entry.lastReferenced)
103
- : new Date(entry.created);
104
- const daysSinceRef = Math.floor((Date.now() - lastRef.getTime()) / (1000 * 60 * 60 * 24));
105
- if (daysSinceRef >= this.config.demoteDays) {
106
- return this.createProposal(entry, 'demote', target, `超过 ${this.config.demoteDays} 天未引用,建议降级`, [`最后引用: ${daysSinceRef} 天前`], 'low');
107
- }
108
- return undefined;
109
- }
110
- createProposal(entry, action, targetMaturity, reason, evidence, risk) {
111
- return {
112
- id: `${action}-${entry.id}-${Date.now()}`,
113
- entryId: entry.id,
114
- action,
115
- currentMaturity: entry.maturity,
116
- targetMaturity,
117
- reason,
118
- evidence,
119
- risk,
120
- autoApprovable: risk === 'low',
121
- status: 'pending',
122
- createdAt: new Date().toISOString(),
123
- };
124
- }
125
- /**
126
- * 审核提案(规则自动审核)
127
- */
128
- review(proposal) {
129
- // 安全规则:proven 不允许直接归档
130
- if (proposal.currentMaturity === 'proven' && proposal.action === 'archive') {
131
- return { approved: false, reason: 'proven 条目不允许直接归档,需先降级' };
132
- }
133
- // 安全规则:矛盾条目不允许升级
134
- if (proposal.action === 'promote' && proposal.risk === 'high') {
135
- return { approved: false, reason: '高风险提案需要人工审核' };
136
- }
137
- // 低风险自动通过
138
- if (proposal.risk === 'low' && proposal.autoApprovable) {
139
- return { approved: true, reason: '低风险提案自动通过' };
140
- }
141
- return { approved: true, reason: '提案通过审核' };
142
- }
143
- /**
144
- * 执行提案
145
- */
146
- implement(proposal) {
147
- if (!this.store)
148
- return false;
149
- if (proposal.status !== 'approved')
150
- return false;
151
- const entry = this.store.get(proposal.entryId);
152
- if (!entry)
153
- return false;
154
- switch (proposal.action) {
155
- case 'promote':
156
- case 'demote':
157
- this.store.update(proposal.entryId, { maturity: proposal.targetMaturity });
158
- break;
159
- case 'archive':
160
- this.store.update(proposal.entryId, { maturity: 'archived' });
161
- break;
162
- case 'freeze':
163
- // 冻结:不修改成熟度,只标记
164
- break;
165
- default:
166
- return false;
167
- }
168
- proposal.status = 'implemented';
169
- return true;
170
- }
171
- /**
172
- * 批量审核 + 执行
173
- */
174
- processProposals(proposals) {
175
- for (const proposal of proposals) {
176
- const review = this.review(proposal);
177
- if (review.approved) {
178
- proposal.status = 'approved';
179
- if (this.config.autoImplement && proposal.autoApprovable) {
180
- this.implement(proposal);
181
- }
182
- }
183
- else {
184
- proposal.status = 'rejected';
185
- }
186
- }
187
- const summary = {
188
- promote: 0,
189
- demote: 0,
190
- archive: 0,
191
- merge: 0,
192
- freeze: 0,
193
- };
194
- for (const p of proposals) {
195
- summary[p.action]++;
196
- }
197
- return {
198
- timestamp: new Date().toISOString(),
199
- proposals,
200
- summary,
201
- };
202
- }
203
- }
204
- exports.KnowledgeEvolver = KnowledgeEvolver;
205
- //# sourceMappingURL=knowledge-evolver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"knowledge-evolver.js","sourceRoot":"","sources":["../../src/monitoring/knowledge-evolver.ts"],"names":[],"mappings":"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"}
@@ -1,92 +0,0 @@
1
- /**
2
- * Performance Analyzer
3
- *
4
- * 纯计算,零 Token 成本
5
- *
6
- * 功能:
7
- * - 统计汇总(每小时自动执行)
8
- * - 异常检测(每日检查)
9
- * - 趋势分析(对比上一周期)
10
- *
11
- * 与 TraceAnalyzer 的区别:
12
- * - TraceAnalyzer: 分析约束检查结果
13
- * - PerformanceAnalyzer: 分析操作耗时
14
- */
15
- import type { PerformanceTrace, PerformanceSummary, PerformanceAnomaly, PerformanceAnalyzerConfig } from '../types/performance';
16
- import { PerformanceCollector } from './performance-collector';
17
- /**
18
- * Performance Analyzer
19
- *
20
- * 使用方式:
21
- * ```typescript
22
- * const analyzer = new PerformanceAnalyzer(collector);
23
- * const summaries = analyzer.summarize(traces);
24
- * const anomalies = analyzer.detectAnomalies(summaries);
25
- * ```
26
- */
27
- export declare class PerformanceAnalyzer {
28
- private config;
29
- private collector;
30
- constructor(collector: PerformanceCollector, config?: Partial<PerformanceAnalyzerConfig>);
31
- /**
32
- * 生成统计汇总
33
- *
34
- * 纯计算,零 Token 成本
35
- */
36
- summarize(traces: PerformanceTrace[]): PerformanceSummary[];
37
- /**
38
- * 分析最近 N 小时的 traces
39
- */
40
- analyzeRecent(hours: number): PerformanceSummary[];
41
- /**
42
- * 分析特定操作
43
- */
44
- analyzeOperation(operation: string): PerformanceSummary[];
45
- /**
46
- * 检测异常
47
- *
48
- * 基于阈值检测异常模式
49
- */
50
- detectAnomalies(summaries: PerformanceSummary[]): PerformanceAnomaly[];
51
- /**
52
- * 对比上一周期
53
- *
54
- * 计算各指标的环比变化
55
- */
56
- compareWithPrevious(current: PerformanceSummary[], previous: PerformanceSummary[]): PerformanceSummary[];
57
- /**
58
- * 计算趋势
59
- *
60
- * 对比前半段和后半段的平均耗时
61
- */
62
- private calculateTrend;
63
- /**
64
- * 保存汇总结果
65
- */
66
- saveSummary(summaries: PerformanceSummary[]): void;
67
- /**
68
- * 加载上次汇总结果
69
- */
70
- loadSummary(): PerformanceSummary[] | null;
71
- /**
72
- * 运行每小时汇总
73
- *
74
- * 自动执行,零 Token 成本
75
- */
76
- runHourlySummary(): PerformanceSummary[];
77
- /**
78
- * 运行每日异常检测
79
- *
80
- * 返回异常列表,用于触发优化
81
- */
82
- runDailyAnomalyCheck(): PerformanceAnomaly[];
83
- /**
84
- * 生成报告(文本格式)
85
- */
86
- generateReport(summaries: PerformanceSummary[], anomalies: PerformanceAnomaly[]): string;
87
- }
88
- /**
89
- * 创建分析器(使用全局收集器)
90
- */
91
- export declare function createPerformanceAnalyzer(config?: Partial<PerformanceAnalyzerConfig>): PerformanceAnalyzer;
92
- //# sourceMappingURL=performance-analyzer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"performance-analyzer.d.ts","sourceRoot":"","sources":["../../src/monitoring/performance-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAyB/D;;;;;;;;;GASG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,SAAS,CAAuB;gBAE5B,SAAS,EAAE,oBAAoB,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,yBAAyB,CAAC;IAKxF;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,kBAAkB,EAAE;IAyD3D;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAKlD;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAKzD;;;;OAIG;IACH,eAAe,CAAC,SAAS,EAAE,kBAAkB,EAAE,GAAG,kBAAkB,EAAE;IAsFtE;;;;OAIG;IACH,mBAAmB,CACjB,OAAO,EAAE,kBAAkB,EAAE,EAC7B,QAAQ,EAAE,kBAAkB,EAAE,GAC7B,kBAAkB,EAAE;IAmBvB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IA0BtB;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,kBAAkB,EAAE,GAAG,IAAI;IAIlD;;OAEG;IACH,WAAW,IAAI,kBAAkB,EAAE,GAAG,IAAI;IAI1C;;;;OAIG;IACH,gBAAgB,IAAI,kBAAkB,EAAE;IAgBxC;;;;OAIG;IACH,oBAAoB,IAAI,kBAAkB,EAAE;IAU5C;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,kBAAkB,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,GAAG,MAAM;CA8CzF;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG,mBAAmB,CAG1G"}
@@ -1,343 +0,0 @@
1
- "use strict";
2
- /**
3
- * Performance Analyzer
4
- *
5
- * 纯计算,零 Token 成本
6
- *
7
- * 功能:
8
- * - 统计汇总(每小时自动执行)
9
- * - 异常检测(每日检查)
10
- * - 趋势分析(对比上一周期)
11
- *
12
- * 与 TraceAnalyzer 的区别:
13
- * - TraceAnalyzer: 分析约束检查结果
14
- * - PerformanceAnalyzer: 分析操作耗时
15
- */
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.PerformanceAnalyzer = void 0;
18
- exports.createPerformanceAnalyzer = createPerformanceAnalyzer;
19
- const performance_collector_1 = require("./performance-collector");
20
- const analyzer_base_1 = require("./analyzer-base");
21
- /**
22
- * 默认配置
23
- */
24
- const DEFAULT_CONFIG = {
25
- summaryFile: '.harness/logs/performance-summary.json',
26
- periodMs: 3600 * 1000, // 1 小时
27
- thresholds: {
28
- avgDuration: 5000, // 平均耗时 > 5s 视为异常
29
- exceededRate: 0.3, // 超阈值率 > 30% 视为异常
30
- errorRate: 0.1, // 错误率 > 10% 视为异常
31
- },
32
- };
33
- /**
34
- * Performance Analyzer
35
- *
36
- * 使用方式:
37
- * ```typescript
38
- * const analyzer = new PerformanceAnalyzer(collector);
39
- * const summaries = analyzer.summarize(traces);
40
- * const anomalies = analyzer.detectAnomalies(summaries);
41
- * ```
42
- */
43
- class PerformanceAnalyzer {
44
- config;
45
- collector;
46
- constructor(collector, config) {
47
- this.collector = collector;
48
- this.config = { ...DEFAULT_CONFIG, ...config };
49
- }
50
- /**
51
- * 生成统计汇总
52
- *
53
- * 纯计算,零 Token 成本
54
- */
55
- summarize(traces) {
56
- // 按操作类型分组
57
- const grouped = (0, analyzer_base_1.groupByKey)(traces, t => t.operation);
58
- const summaries = [];
59
- for (const [operation, group] of grouped) {
60
- // 计算时间范围
61
- const timeRange = (0, analyzer_base_1.timeRangeOf)(group.map(t => t.timestamp));
62
- // 单次遍历计算核心统计
63
- const totalCalls = group.length;
64
- let okCount = 0, exceededCount = 0, errorCount = 0;
65
- for (const t of group) {
66
- if (t.result === 'ok')
67
- okCount++;
68
- else if (t.result === 'exceeded')
69
- exceededCount++;
70
- else if (t.result === 'error')
71
- errorCount++;
72
- }
73
- // 计算比率
74
- const okRate = totalCalls > 0 ? okCount / totalCalls : 0;
75
- const exceededRate = totalCalls > 0 ? exceededCount / totalCalls : 0;
76
- const errorRate = totalCalls > 0 ? errorCount / totalCalls : 0;
77
- // 计算耗时统计
78
- const durations = group.map(t => t.duration);
79
- const avgDuration = (0, analyzer_base_1.calcAverage)(durations);
80
- const maxDuration = Math.max(...durations);
81
- const minDuration = Math.min(...durations);
82
- const p95Duration = (0, analyzer_base_1.calcPercentile)(durations, 95);
83
- const p99Duration = (0, analyzer_base_1.calcPercentile)(durations, 99);
84
- // 计算趋势
85
- const recentTrend = this.calculateTrend(group);
86
- summaries.push({
87
- operation,
88
- timeRange,
89
- totalCalls,
90
- okCount,
91
- exceededCount,
92
- errorCount,
93
- avgDuration,
94
- maxDuration,
95
- minDuration,
96
- p95Duration,
97
- p99Duration,
98
- okRate,
99
- exceededRate,
100
- errorRate,
101
- recentTrend,
102
- });
103
- }
104
- return summaries;
105
- }
106
- /**
107
- * 分析最近 N 小时的 traces
108
- */
109
- analyzeRecent(hours) {
110
- const traces = this.collector.readRecent(hours);
111
- return this.summarize(traces);
112
- }
113
- /**
114
- * 分析特定操作
115
- */
116
- analyzeOperation(operation) {
117
- const traces = this.collector.readByOperation(operation);
118
- return this.summarize(traces);
119
- }
120
- /**
121
- * 检测异常
122
- *
123
- * 基于阈值检测异常模式
124
- */
125
- detectAnomalies(summaries) {
126
- const anomalies = [];
127
- const thresholds = this.config.thresholds;
128
- for (const summary of summaries) {
129
- // 检测高平均耗时
130
- if (summary.avgDuration > thresholds.avgDuration) {
131
- anomalies.push({
132
- type: 'high_avg_duration',
133
- operation: summary.operation,
134
- message: `操作 ${summary.operation} 平均耗时 ${Math.round(summary.avgDuration)}ms,超过阈值 ${thresholds.avgDuration}ms`,
135
- data: {
136
- currentValue: summary.avgDuration,
137
- threshold: thresholds.avgDuration,
138
- },
139
- detectedAt: Date.now(),
140
- suggestedAction: 'optimize',
141
- });
142
- }
143
- // 检测耗时趋势上升
144
- if (summary.recentTrend === 'rising') {
145
- anomalies.push({
146
- type: 'rising_duration',
147
- operation: summary.operation,
148
- message: `操作 ${summary.operation} 耗时趋势上升`,
149
- data: {
150
- currentValue: summary.avgDuration,
151
- threshold: 0,
152
- trend: 'rising',
153
- },
154
- detectedAt: Date.now(),
155
- suggestedAction: 'optimize',
156
- });
157
- }
158
- // 检测高超阈值率
159
- if (summary.exceededRate > thresholds.exceededRate) {
160
- anomalies.push({
161
- type: 'high_exceeded_rate',
162
- operation: summary.operation,
163
- message: `操作 ${summary.operation} 超阈值率 ${Math.round(summary.exceededRate * 100)}%,超过阈值 ${thresholds.exceededRate * 100}%`,
164
- data: {
165
- currentValue: summary.exceededRate,
166
- threshold: thresholds.exceededRate,
167
- },
168
- detectedAt: Date.now(),
169
- suggestedAction: 'adjust_threshold',
170
- });
171
- }
172
- // 检测超阈值率上升
173
- if (summary.exceededRate > 0.1 && summary.recentTrend === 'rising') {
174
- anomalies.push({
175
- type: 'rising_exceeded_rate',
176
- operation: summary.operation,
177
- message: `操作 ${summary.operation} 超阈值率 ${Math.round(summary.exceededRate * 100)}% 且趋势上升`,
178
- data: {
179
- currentValue: summary.exceededRate,
180
- threshold: 0.1,
181
- trend: 'rising',
182
- },
183
- detectedAt: Date.now(),
184
- suggestedAction: 'optimize',
185
- });
186
- }
187
- // 检测高错误率
188
- if (summary.errorRate > thresholds.errorRate) {
189
- anomalies.push({
190
- type: 'high_error_rate',
191
- operation: summary.operation,
192
- message: `操作 ${summary.operation} 错误率 ${Math.round(summary.errorRate * 100)}%,超过阈值 ${thresholds.errorRate * 100}%`,
193
- data: {
194
- currentValue: summary.errorRate,
195
- threshold: thresholds.errorRate,
196
- },
197
- detectedAt: Date.now(),
198
- suggestedAction: 'notify_user',
199
- });
200
- }
201
- }
202
- return anomalies;
203
- }
204
- /**
205
- * 对比上一周期
206
- *
207
- * 计算各指标的环比变化
208
- */
209
- compareWithPrevious(current, previous) {
210
- const previousMap = new Map(previous.map(s => [s.operation, s]));
211
- return current.map(summary => {
212
- const prev = previousMap.get(summary.operation);
213
- if (prev) {
214
- summary.changeFromLastPeriod = {
215
- avgDurationDelta: summary.avgDuration - prev.avgDuration,
216
- exceededRateDelta: summary.exceededRate - prev.exceededRate,
217
- };
218
- }
219
- return summary;
220
- });
221
- }
222
- /**
223
- * 计算趋势
224
- *
225
- * 对比前半段和后半段的平均耗时
226
- */
227
- calculateTrend(traces) {
228
- if (traces.length < analyzer_base_1.MIN_TREND_SAMPLES) {
229
- return 'stable';
230
- }
231
- // 分成前后两半(按时间排序)
232
- const [firstHalf, secondHalf] = (0, analyzer_base_1.splitByTime)(traces);
233
- // 计算前半段和后半段的平均耗时
234
- const firstAvg = (0, analyzer_base_1.calcAverage)(firstHalf.map(t => t.duration));
235
- const secondAvg = (0, analyzer_base_1.calcAverage)(secondHalf.map(t => t.duration));
236
- // 计算变化率
237
- const delta = secondAvg - firstAvg;
238
- const changeRate = firstAvg > 0 ? delta / firstAvg : 0;
239
- // 判断趋势(变化 > 10% 才算显著)
240
- if (changeRate > 0.1) {
241
- return 'rising';
242
- }
243
- else if (changeRate < -0.1) {
244
- return 'falling';
245
- }
246
- else {
247
- return 'stable';
248
- }
249
- }
250
- /**
251
- * 保存汇总结果
252
- */
253
- saveSummary(summaries) {
254
- (0, analyzer_base_1.writeSummaryJson)(this.config.summaryFile, summaries);
255
- }
256
- /**
257
- * 加载上次汇总结果
258
- */
259
- loadSummary() {
260
- return (0, analyzer_base_1.readSummaryJson)(this.config.summaryFile);
261
- }
262
- /**
263
- * 运行每小时汇总
264
- *
265
- * 自动执行,零 Token 成本
266
- */
267
- runHourlySummary() {
268
- // 分析最近 1 小时
269
- const current = this.analyzeRecent(1);
270
- // 加载上次汇总,对比趋势
271
- const previous = this.loadSummary();
272
- if (previous) {
273
- this.compareWithPrevious(current, previous);
274
- }
275
- // 保存当前汇总
276
- this.saveSummary(current);
277
- return current;
278
- }
279
- /**
280
- * 运行每日异常检测
281
- *
282
- * 返回异常列表,用于触发优化
283
- */
284
- runDailyAnomalyCheck() {
285
- // 分析最近 24 小时
286
- const summaries = this.analyzeRecent(24);
287
- // 检测异常
288
- const anomalies = this.detectAnomalies(summaries);
289
- return anomalies;
290
- }
291
- /**
292
- * 生成报告(文本格式)
293
- */
294
- generateReport(summaries, anomalies) {
295
- const lines = [];
296
- lines.push('# Performance Report');
297
- lines.push(`Generated: ${new Date().toISOString()}`);
298
- lines.push('');
299
- // 汇总部分
300
- lines.push('## Operation Summaries');
301
- lines.push('');
302
- for (const summary of summaries) {
303
- const trendEmoji = {
304
- rising: '📈',
305
- falling: '📉',
306
- stable: '➡️',
307
- }[summary.recentTrend];
308
- lines.push(`**${summary.operation}** ${trendEmoji}`);
309
- lines.push(` - Calls: ${summary.totalCalls}`);
310
- lines.push(` - Avg: ${Math.round(summary.avgDuration)}ms`);
311
- lines.push(` - P95: ${Math.round(summary.p95Duration)}ms`);
312
- lines.push(` - P99: ${Math.round(summary.p99Duration)}ms`);
313
- lines.push(` - OK: ${Math.round(summary.okRate * 100)}%`);
314
- lines.push(` - Exceeded: ${Math.round(summary.exceededRate * 100)}%`);
315
- lines.push(` - Errors: ${Math.round(summary.errorRate * 100)}%`);
316
- lines.push('');
317
- }
318
- // 异常部分
319
- if (anomalies.length > 0) {
320
- lines.push('## Anomalies Detected');
321
- lines.push('');
322
- for (const anomaly of anomalies) {
323
- lines.push(`⚠️ **${anomaly.type}**: ${anomaly.operation}`);
324
- lines.push(` - ${anomaly.message}`);
325
- lines.push(` - Suggested: ${anomaly.suggestedAction}`);
326
- lines.push('');
327
- }
328
- }
329
- else {
330
- lines.push('## No Anomalies Detected ✅');
331
- }
332
- return lines.join('\n');
333
- }
334
- }
335
- exports.PerformanceAnalyzer = PerformanceAnalyzer;
336
- /**
337
- * 创建分析器(使用全局收集器)
338
- */
339
- function createPerformanceAnalyzer(config) {
340
- const collector = new performance_collector_1.PerformanceCollector();
341
- return new PerformanceAnalyzer(collector, config);
342
- }
343
- //# sourceMappingURL=performance-analyzer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"performance-analyzer.js","sourceRoot":"","sources":["../../src/monitoring/performance-analyzer.ts"],"names":[],"mappings":"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"}