@dommaker/harness 1.1.1 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (373) hide show
  1. package/CHANGELOG.md +17 -0
  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 +8 -33
  7. package/dist/cli/commands/check.js.map +1 -1
  8. package/dist/cli/commands/constraints-report.js +1 -1
  9. package/dist/cli/commands/constraints-report.js.map +1 -1
  10. package/dist/cli/commands/constraints-retire.d.ts +6 -3
  11. package/dist/cli/commands/constraints-retire.d.ts.map +1 -1
  12. package/dist/cli/commands/constraints-retire.js +34 -25
  13. package/dist/cli/commands/constraints-retire.js.map +1 -1
  14. package/dist/cli/commands/definitions.d.ts +2 -0
  15. package/dist/cli/commands/definitions.d.ts.map +1 -1
  16. package/dist/cli/commands/definitions.js.map +1 -1
  17. package/dist/cli/commands/init.d.ts +21 -1
  18. package/dist/cli/commands/init.d.ts.map +1 -1
  19. package/dist/cli/commands/init.js +118 -40
  20. package/dist/cli/commands/init.js.map +1 -1
  21. package/dist/cli/commands/knowledge.d.ts.map +1 -1
  22. package/dist/cli/commands/knowledge.js +1 -12
  23. package/dist/cli/commands/knowledge.js.map +1 -1
  24. package/dist/cli/commands/report.d.ts.map +1 -1
  25. package/dist/cli/commands/report.js +0 -2
  26. package/dist/cli/commands/report.js.map +1 -1
  27. package/dist/cli/commands/status.js +2 -2
  28. package/dist/cli/commands/status.js.map +1 -1
  29. package/dist/context/index.d.ts +9 -6
  30. package/dist/context/index.d.ts.map +1 -1
  31. package/dist/context/index.js +18 -20
  32. package/dist/context/index.js.map +1 -1
  33. package/dist/core/constraints/capabilities-parser.d.ts +3 -2
  34. package/dist/core/constraints/capabilities-parser.d.ts.map +1 -1
  35. package/dist/core/constraints/capabilities-parser.js +25 -47
  36. package/dist/core/constraints/capabilities-parser.js.map +1 -1
  37. package/dist/core/constraints/checker.d.ts +29 -32
  38. package/dist/core/constraints/checker.d.ts.map +1 -1
  39. package/dist/core/constraints/checker.js +34 -126
  40. package/dist/core/constraints/checker.js.map +1 -1
  41. package/dist/core/constraints/checkers/governance-presence.d.ts +20 -0
  42. package/dist/core/constraints/checkers/governance-presence.d.ts.map +1 -0
  43. package/dist/core/constraints/checkers/governance-presence.js +76 -0
  44. package/dist/core/constraints/checkers/governance-presence.js.map +1 -0
  45. package/dist/core/constraints/checkers/index.d.ts +2 -1
  46. package/dist/core/constraints/checkers/index.d.ts.map +1 -1
  47. package/dist/core/constraints/checkers/index.js +5 -0
  48. package/dist/core/constraints/checkers/index.js.map +1 -1
  49. package/dist/core/constraints/checkers/types.d.ts +25 -0
  50. package/dist/core/constraints/checkers/types.d.ts.map +1 -1
  51. package/dist/core/constraints/checkers/types.js +24 -0
  52. package/dist/core/constraints/checkers/types.js.map +1 -1
  53. package/dist/core/constraints/definitions/guidelines.d.ts.map +1 -1
  54. package/dist/core/constraints/definitions/guidelines.js +21 -2
  55. package/dist/core/constraints/definitions/guidelines.js.map +1 -1
  56. package/dist/core/constraints/definitions/prompts.d.ts.map +1 -1
  57. package/dist/core/constraints/definitions/prompts.js +0 -5
  58. package/dist/core/constraints/definitions/prompts.js.map +1 -1
  59. package/dist/core/constraints/index.d.ts +1 -2
  60. package/dist/core/constraints/index.d.ts.map +1 -1
  61. package/dist/core/constraints/index.js +1 -7
  62. package/dist/core/constraints/index.js.map +1 -1
  63. package/dist/core/constraints/injection-drift.d.ts +29 -4
  64. package/dist/core/constraints/injection-drift.d.ts.map +1 -1
  65. package/dist/core/constraints/injection-drift.js +52 -20
  66. package/dist/core/constraints/injection-drift.js.map +1 -1
  67. package/dist/core/constraints/usage-report.d.ts +1 -2
  68. package/dist/core/constraints/usage-report.d.ts.map +1 -1
  69. package/dist/core/constraints/usage-report.js +2 -5
  70. package/dist/core/constraints/usage-report.js.map +1 -1
  71. package/dist/core/effective-constraints.d.ts +24 -4
  72. package/dist/core/effective-constraints.d.ts.map +1 -1
  73. package/dist/core/effective-constraints.js +28 -7
  74. package/dist/core/effective-constraints.js.map +1 -1
  75. package/dist/core/effective-set.d.ts +30 -0
  76. package/dist/core/effective-set.d.ts.map +1 -0
  77. package/dist/core/effective-set.js +35 -0
  78. package/dist/core/effective-set.js.map +1 -0
  79. package/dist/core/index.d.ts +13 -6
  80. package/dist/core/index.d.ts.map +1 -1
  81. package/dist/core/index.js +44 -21
  82. package/dist/core/index.js.map +1 -1
  83. package/dist/core/project-config-loader.d.ts +3 -6
  84. package/dist/core/project-config-loader.d.ts.map +1 -1
  85. package/dist/core/project-config-loader.js +47 -61
  86. package/dist/core/project-config-loader.js.map +1 -1
  87. package/dist/failure/constraint-handler.d.ts +1 -1
  88. package/dist/failure/constraint-handler.js +1 -1
  89. package/dist/gates/checker-gate.d.ts +1 -4
  90. package/dist/gates/checker-gate.d.ts.map +1 -1
  91. package/dist/gates/checker-gate.js +3 -11
  92. package/dist/gates/checker-gate.js.map +1 -1
  93. package/dist/gates/definitions.d.ts +9 -38
  94. package/dist/gates/definitions.d.ts.map +1 -1
  95. package/dist/gates/definitions.js +24 -13
  96. package/dist/gates/definitions.js.map +1 -1
  97. package/dist/gates/effective-gates.d.ts.map +1 -1
  98. package/dist/gates/effective-gates.js +14 -18
  99. package/dist/gates/effective-gates.js.map +1 -1
  100. package/dist/gates/index.d.ts +1 -1
  101. package/dist/gates/index.d.ts.map +1 -1
  102. package/dist/gates/index.js.map +1 -1
  103. package/dist/hooks/bootstrap.d.ts.map +1 -1
  104. package/dist/hooks/bootstrap.js +0 -3
  105. package/dist/hooks/bootstrap.js.map +1 -1
  106. package/dist/index.d.ts +43 -60
  107. package/dist/index.d.ts.map +1 -1
  108. package/dist/index.js +180 -143
  109. package/dist/index.js.map +1 -1
  110. package/dist/knowledge/query.d.ts +15 -0
  111. package/dist/knowledge/query.d.ts.map +1 -1
  112. package/dist/knowledge/query.js +23 -0
  113. package/dist/knowledge/query.js.map +1 -1
  114. package/dist/monitoring/analyzer-base.d.ts +0 -4
  115. package/dist/monitoring/analyzer-base.d.ts.map +1 -1
  116. package/dist/monitoring/analyzer-base.js +0 -21
  117. package/dist/monitoring/analyzer-base.js.map +1 -1
  118. package/dist/monitoring/index.d.ts +6 -12
  119. package/dist/monitoring/index.d.ts.map +1 -1
  120. package/dist/monitoring/index.js +13 -29
  121. package/dist/monitoring/index.js.map +1 -1
  122. package/dist/monitoring/trace-analyzer.d.ts.map +1 -1
  123. package/dist/monitoring/trace-analyzer.js +2 -68
  124. package/dist/monitoring/trace-analyzer.js.map +1 -1
  125. package/dist/monitoring/traces.d.ts +0 -4
  126. package/dist/monitoring/traces.d.ts.map +1 -1
  127. package/dist/monitoring/traces.js +0 -14
  128. package/dist/monitoring/traces.js.map +1 -1
  129. package/dist/presets/index.d.ts +2 -2
  130. package/dist/presets/index.d.ts.map +1 -1
  131. package/dist/presets/index.js +3 -4
  132. package/dist/presets/index.js.map +1 -1
  133. package/dist/presets/standard.d.ts +10 -22
  134. package/dist/presets/standard.d.ts.map +1 -1
  135. package/dist/presets/standard.js +15 -75
  136. package/dist/presets/standard.js.map +1 -1
  137. package/dist/types/constraint.d.ts +1 -29
  138. package/dist/types/constraint.d.ts.map +1 -1
  139. package/dist/types/constraint.js +1 -1
  140. package/dist/types/constraint.js.map +1 -1
  141. package/dist/types/index.d.ts +0 -3
  142. package/dist/types/index.d.ts.map +1 -1
  143. package/dist/types/index.js +0 -4
  144. package/dist/types/index.js.map +1 -1
  145. package/dist/types/project-config.d.ts +4 -8
  146. package/dist/types/project-config.d.ts.map +1 -1
  147. package/dist/types/trace.d.ts +5 -18
  148. package/dist/types/trace.d.ts.map +1 -1
  149. package/package.json +2 -2
  150. package/src/CONTEXT.md +4 -5
  151. package/src/__tests__/checker-extra.test.ts +33 -139
  152. package/src/__tests__/checker.test.ts +0 -376
  153. package/src/__tests__/governance-presence.test.ts +129 -0
  154. package/src/__tests__/iron-laws.test.ts +7 -7
  155. package/src/__tests__/project-config-loader-extra.test.ts +42 -29
  156. package/src/__tests__/public-exports.test.ts +138 -0
  157. package/src/__tests__/trace-analyzer-extra.test.ts +6 -86
  158. package/src/__tests__/trace-analyzer.test.ts +4 -5
  159. package/src/__tests__/trace-collector.test.ts +0 -11
  160. package/src/__tests__/traces.test.ts +3 -22
  161. package/src/cli/commands/CONTEXT.md +6 -3
  162. package/src/cli/commands/__tests__/check-skip-output.test.ts +10 -7
  163. package/src/cli/commands/__tests__/check.test.ts +29 -69
  164. package/src/cli/commands/__tests__/constraints-report.test.ts +3 -3
  165. package/src/cli/commands/__tests__/constraints-retire.test.ts +45 -4
  166. package/src/cli/commands/__tests__/init-injection.test.ts +202 -0
  167. package/src/cli/commands/__tests__/knowledge.test.ts +90 -1
  168. package/src/cli/commands/__tests__/registry.test.ts +8 -6
  169. package/src/cli/commands/__tests__/status-extra.test.ts +6 -6
  170. package/src/cli/commands/__tests__/status.test.ts +6 -6
  171. package/src/cli/commands/__tests__/sync-docs-agents.test.ts +28 -0
  172. package/src/cli/commands/check.ts +9 -35
  173. package/src/cli/commands/constraints-report.ts +1 -1
  174. package/src/cli/commands/constraints-retire.ts +38 -27
  175. package/src/cli/commands/definitions.ts +2 -0
  176. package/src/cli/commands/init.ts +129 -40
  177. package/src/cli/commands/knowledge.ts +1 -16
  178. package/src/cli/commands/report.ts +0 -2
  179. package/src/cli/commands/status.ts +2 -2
  180. package/src/context/index.ts +29 -6
  181. package/src/core/CONTEXT.md +4 -3
  182. package/src/core/__tests__/effective-set.test.ts +80 -0
  183. package/src/core/constraints/__tests__/injection-drift.test.ts +90 -0
  184. package/src/core/constraints/capabilities-parser.ts +43 -49
  185. package/src/core/constraints/checker.ts +51 -145
  186. package/src/core/constraints/checkers/governance-presence.ts +74 -0
  187. package/src/core/constraints/checkers/index.ts +4 -1
  188. package/src/core/constraints/checkers/types.ts +42 -0
  189. package/src/core/constraints/definitions/guidelines.ts +22 -2
  190. package/src/core/constraints/definitions/prompts.ts +0 -5
  191. package/src/core/constraints/index.ts +2 -17
  192. package/src/core/constraints/injection-drift.ts +60 -21
  193. package/src/core/constraints/usage-report.ts +5 -8
  194. package/src/core/effective-constraints.ts +35 -7
  195. package/src/core/effective-set.ts +56 -0
  196. package/src/core/index.ts +80 -6
  197. package/src/core/project-config-loader.ts +53 -68
  198. package/src/failure/CONTEXT.md +1 -1
  199. package/src/failure/constraint-handler.ts +1 -1
  200. package/src/gates/CONTEXT.md +3 -3
  201. package/src/gates/checker-gate.ts +4 -12
  202. package/src/gates/definitions.ts +27 -50
  203. package/src/gates/effective-gates.ts +14 -21
  204. package/src/gates/index.ts +1 -1
  205. package/src/hooks/bootstrap.ts +0 -3
  206. package/src/index.ts +384 -148
  207. package/src/knowledge/CONTEXT.md +2 -2
  208. package/src/knowledge/__tests__/query.test.ts +64 -0
  209. package/src/knowledge/query.ts +28 -0
  210. package/src/monitoring/CONTEXT.md +7 -13
  211. package/src/monitoring/__tests__/traces.test.ts +0 -10
  212. package/src/monitoring/analyzer-base.ts +0 -22
  213. package/src/monitoring/index.ts +6 -12
  214. package/src/monitoring/trace-analyzer.ts +2 -73
  215. package/src/monitoring/traces.ts +0 -20
  216. package/src/presets/__tests__/standard.test.ts +48 -69
  217. package/src/presets/index.ts +3 -5
  218. package/src/presets/standard.ts +14 -79
  219. package/src/spec/CONTEXT.md +5 -13
  220. package/src/types/constraint.ts +1 -51
  221. package/src/types/index.ts +0 -12
  222. package/src/types/project-config.ts +4 -10
  223. package/src/types/trace.ts +5 -30
  224. package/dist/core/constraints/interceptor.d.ts +0 -39
  225. package/dist/core/constraints/interceptor.d.ts.map +0 -1
  226. package/dist/core/constraints/interceptor.js +0 -166
  227. package/dist/core/constraints/interceptor.js.map +0 -1
  228. package/dist/dashboard/data.d.ts +0 -31
  229. package/dist/dashboard/data.d.ts.map +0 -1
  230. package/dist/dashboard/data.js +0 -81
  231. package/dist/dashboard/data.js.map +0 -1
  232. package/dist/dashboard/index.d.ts +0 -4
  233. package/dist/dashboard/index.d.ts.map +0 -1
  234. package/dist/dashboard/index.js +0 -20
  235. package/dist/dashboard/index.js.map +0 -1
  236. package/dist/dashboard/stats.d.ts +0 -20
  237. package/dist/dashboard/stats.d.ts.map +0 -1
  238. package/dist/dashboard/stats.js +0 -115
  239. package/dist/dashboard/stats.js.map +0 -1
  240. package/dist/dashboard/types.d.ts +0 -110
  241. package/dist/dashboard/types.d.ts.map +0 -1
  242. package/dist/dashboard/types.js +0 -8
  243. package/dist/dashboard/types.js.map +0 -1
  244. package/dist/monitoring/constraint-doctor.d.ts +0 -76
  245. package/dist/monitoring/constraint-doctor.d.ts.map +0 -1
  246. package/dist/monitoring/constraint-doctor.js +0 -189
  247. package/dist/monitoring/constraint-doctor.js.map +0 -1
  248. package/dist/monitoring/diagnosis-rules.d.ts +0 -18
  249. package/dist/monitoring/diagnosis-rules.d.ts.map +0 -1
  250. package/dist/monitoring/diagnosis-rules.js +0 -119
  251. package/dist/monitoring/diagnosis-rules.js.map +0 -1
  252. package/dist/monitoring/knowledge-doctor.d.ts +0 -78
  253. package/dist/monitoring/knowledge-doctor.d.ts.map +0 -1
  254. package/dist/monitoring/knowledge-doctor.js +0 -266
  255. package/dist/monitoring/knowledge-doctor.js.map +0 -1
  256. package/dist/monitoring/knowledge-evolver.d.ts +0 -72
  257. package/dist/monitoring/knowledge-evolver.d.ts.map +0 -1
  258. package/dist/monitoring/knowledge-evolver.js +0 -205
  259. package/dist/monitoring/knowledge-evolver.js.map +0 -1
  260. package/dist/monitoring/performance-analyzer.d.ts +0 -92
  261. package/dist/monitoring/performance-analyzer.d.ts.map +0 -1
  262. package/dist/monitoring/performance-analyzer.js +0 -343
  263. package/dist/monitoring/performance-analyzer.js.map +0 -1
  264. package/dist/monitoring/performance-collector.d.ts +0 -103
  265. package/dist/monitoring/performance-collector.d.ts.map +0 -1
  266. package/dist/monitoring/performance-collector.js +0 -298
  267. package/dist/monitoring/performance-collector.js.map +0 -1
  268. package/dist/safety/index.d.ts +0 -6
  269. package/dist/safety/index.d.ts.map +0 -1
  270. package/dist/safety/index.js +0 -22
  271. package/dist/safety/index.js.map +0 -1
  272. package/dist/safety/input-guardrail.d.ts +0 -36
  273. package/dist/safety/input-guardrail.d.ts.map +0 -1
  274. package/dist/safety/input-guardrail.js +0 -118
  275. package/dist/safety/input-guardrail.js.map +0 -1
  276. package/dist/safety/output-guardrail.d.ts +0 -39
  277. package/dist/safety/output-guardrail.d.ts.map +0 -1
  278. package/dist/safety/output-guardrail.js +0 -147
  279. package/dist/safety/output-guardrail.js.map +0 -1
  280. package/dist/safety/sandbox.d.ts +0 -45
  281. package/dist/safety/sandbox.d.ts.map +0 -1
  282. package/dist/safety/sandbox.js +0 -134
  283. package/dist/safety/sandbox.js.map +0 -1
  284. package/dist/safety/tool-guardrail.d.ts +0 -51
  285. package/dist/safety/tool-guardrail.d.ts.map +0 -1
  286. package/dist/safety/tool-guardrail.js +0 -147
  287. package/dist/safety/tool-guardrail.js.map +0 -1
  288. package/dist/safety/types.d.ts +0 -104
  289. package/dist/safety/types.d.ts.map +0 -1
  290. package/dist/safety/types.js +0 -6
  291. package/dist/safety/types.js.map +0 -1
  292. package/dist/spec/annotation-checker.d.ts +0 -47
  293. package/dist/spec/annotation-checker.d.ts.map +0 -1
  294. package/dist/spec/annotation-checker.js +0 -279
  295. package/dist/spec/annotation-checker.js.map +0 -1
  296. package/dist/types/enforcement.d.ts +0 -42
  297. package/dist/types/enforcement.d.ts.map +0 -1
  298. package/dist/types/enforcement.js +0 -6
  299. package/dist/types/enforcement.js.map +0 -1
  300. package/dist/types/monitoring-types.d.ts +0 -53
  301. package/dist/types/monitoring-types.d.ts.map +0 -1
  302. package/dist/types/monitoring-types.js +0 -10
  303. package/dist/types/monitoring-types.js.map +0 -1
  304. package/dist/types/performance.d.ts +0 -204
  305. package/dist/types/performance.d.ts.map +0 -1
  306. package/dist/types/performance.js +0 -12
  307. package/dist/types/performance.js.map +0 -1
  308. package/dist/verification/index.d.ts +0 -4
  309. package/dist/verification/index.d.ts.map +0 -1
  310. package/dist/verification/index.js +0 -20
  311. package/dist/verification/index.js.map +0 -1
  312. package/dist/verification/loop.d.ts +0 -30
  313. package/dist/verification/loop.d.ts.map +0 -1
  314. package/dist/verification/loop.js +0 -114
  315. package/dist/verification/loop.js.map +0 -1
  316. package/dist/verification/rules-based.d.ts +0 -40
  317. package/dist/verification/rules-based.d.ts.map +0 -1
  318. package/dist/verification/rules-based.js +0 -130
  319. package/dist/verification/rules-based.js.map +0 -1
  320. package/dist/verification/types.d.ts +0 -69
  321. package/dist/verification/types.d.ts.map +0 -1
  322. package/dist/verification/types.js +0 -6
  323. package/dist/verification/types.js.map +0 -1
  324. package/src/__tests__/annotation-checker.test.ts +0 -183
  325. package/src/__tests__/constraint-doctor.test.ts +0 -271
  326. package/src/__tests__/doctor-extra.test.ts +0 -155
  327. package/src/__tests__/extend-exceptions.test.ts +0 -149
  328. package/src/__tests__/interceptor.test.ts +0 -89
  329. package/src/__tests__/performance-analyzer.test.ts +0 -499
  330. package/src/__tests__/performance-collector.test.ts +0 -276
  331. package/src/__tests__/presets.test.ts +0 -65
  332. package/src/core/constraints/__tests__/interceptor.test.ts +0 -267
  333. package/src/core/constraints/interceptor.ts +0 -217
  334. package/src/dashboard/CONTEXT.md +0 -21
  335. package/src/dashboard/__tests__/data.test.ts +0 -111
  336. package/src/dashboard/__tests__/stats.test.ts +0 -159
  337. package/src/dashboard/data.ts +0 -103
  338. package/src/dashboard/index.ts +0 -3
  339. package/src/dashboard/stats.ts +0 -127
  340. package/src/dashboard/types.ts +0 -130
  341. package/src/monitoring/__tests__/knowledge-doctor.test.ts +0 -278
  342. package/src/monitoring/__tests__/knowledge-evolver.test.ts +0 -368
  343. package/src/monitoring/__tests__/performance-analyzer.test.ts +0 -137
  344. package/src/monitoring/__tests__/performance-collector.test.ts +0 -331
  345. package/src/monitoring/constraint-doctor.ts +0 -228
  346. package/src/monitoring/diagnosis-rules.ts +0 -132
  347. package/src/monitoring/knowledge-doctor.ts +0 -322
  348. package/src/monitoring/knowledge-evolver.ts +0 -289
  349. package/src/monitoring/performance-analyzer.ts +0 -400
  350. package/src/monitoring/performance-collector.ts +0 -326
  351. package/src/safety/CONTEXT.md +0 -23
  352. package/src/safety/__tests__/input-guardrail.test.ts +0 -105
  353. package/src/safety/__tests__/output-guardrail.test.ts +0 -108
  354. package/src/safety/__tests__/sandbox.test.ts +0 -158
  355. package/src/safety/__tests__/tool-guardrail.test.ts +0 -127
  356. package/src/safety/index.ts +0 -5
  357. package/src/safety/input-guardrail.ts +0 -133
  358. package/src/safety/output-guardrail.ts +0 -170
  359. package/src/safety/sandbox.ts +0 -148
  360. package/src/safety/tool-guardrail.ts +0 -176
  361. package/src/safety/types.ts +0 -124
  362. package/src/spec/__tests__/annotation-checker.test.ts +0 -294
  363. package/src/spec/annotation-checker.ts +0 -320
  364. package/src/types/enforcement.ts +0 -48
  365. package/src/types/monitoring-types.ts +0 -68
  366. package/src/types/performance.ts +0 -295
  367. package/src/verification/CONTEXT.md +0 -23
  368. package/src/verification/__tests__/loop.test.ts +0 -303
  369. package/src/verification/__tests__/rules-based.test.ts +0 -240
  370. package/src/verification/index.ts +0 -3
  371. package/src/verification/loop.ts +0 -137
  372. package/src/verification/rules-based.ts +0 -152
  373. package/src/verification/types.ts +0 -81
@@ -1,47 +0,0 @@
1
- /**
2
- * 代码注释规范检查器
3
- *
4
- * 检查代码中的 @spec 注释是否规范
5
- */
6
- export interface AnnotationCheckResult {
7
- valid: boolean;
8
- file: string;
9
- annotations: SpecAnnotation[];
10
- errors: AnnotationError[];
11
- warnings: AnnotationWarning[];
12
- }
13
- export interface SpecAnnotation {
14
- specId: string;
15
- implements?: string[];
16
- acceptance?: string[];
17
- dependencies?: string[];
18
- author?: string;
19
- since?: string;
20
- line: number;
21
- type: 'class' | 'method' | 'function' | 'inline';
22
- }
23
- export interface AnnotationError {
24
- line: number;
25
- message: string;
26
- code: 'MISSING_SPEC' | 'INVALID_SPEC_FORMAT' | 'SPEC_NOT_APPROVED' | 'IMPLEMENTS_NOT_FOUND';
27
- }
28
- export interface AnnotationWarning {
29
- line: number;
30
- message: string;
31
- code: 'MISSING_IMPLEMENTS' | 'MISSING_ACCEPTANCE' | 'MISSING_AUTHOR';
32
- }
33
- /**
34
- * 检查单个文件
35
- */
36
- export declare function checkFile(filePath: string): AnnotationCheckResult;
37
- /**
38
- * 批量检查目录
39
- */
40
- export declare function checkDirectory(dir: string, options?: {
41
- extensions?: string[];
42
- }): AnnotationCheckResult[];
43
- /**
44
- * 生成报告
45
- */
46
- export declare function generateReport(results: AnnotationCheckResult[]): string;
47
- //# sourceMappingURL=annotation-checker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"annotation-checker.d.ts","sourceRoot":"","sources":["../../src/spec/annotation-checker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;CAClD;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,cAAc,GAAG,qBAAqB,GAAG,mBAAmB,GAAG,sBAAsB,CAAC;CAC7F;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,oBAAoB,GAAG,oBAAoB,GAAG,gBAAgB,CAAC;CACtE;AAKD;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,qBAAqB,CAkEjE;AAmJD;;GAEG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GACtC,qBAAqB,EAAE,CAKzB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,EAAE,GAAG,MAAM,CAgCvE"}
@@ -1,279 +0,0 @@
1
- "use strict";
2
- /**
3
- * 代码注释规范检查器
4
- *
5
- * 检查代码中的 @spec 注释是否规范
6
- */
7
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
- if (k2 === undefined) k2 = k;
9
- var desc = Object.getOwnPropertyDescriptor(m, k);
10
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
- desc = { enumerable: true, get: function() { return m[k]; } };
12
- }
13
- Object.defineProperty(o, k2, desc);
14
- }) : (function(o, m, k, k2) {
15
- if (k2 === undefined) k2 = k;
16
- o[k2] = m[k];
17
- }));
18
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
- Object.defineProperty(o, "default", { enumerable: true, value: v });
20
- }) : function(o, v) {
21
- o["default"] = v;
22
- });
23
- var __importStar = (this && this.__importStar) || (function () {
24
- var ownKeys = function(o) {
25
- ownKeys = Object.getOwnPropertyNames || function (o) {
26
- var ar = [];
27
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
- return ar;
29
- };
30
- return ownKeys(o);
31
- };
32
- return function (mod) {
33
- if (mod && mod.__esModule) return mod;
34
- var result = {};
35
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
- __setModuleDefault(result, mod);
37
- return result;
38
- };
39
- })();
40
- Object.defineProperty(exports, "__esModule", { value: true });
41
- exports.checkFile = checkFile;
42
- exports.checkDirectory = checkDirectory;
43
- exports.generateReport = generateReport;
44
- const fs_1 = require("fs");
45
- const path = __importStar(require("path"));
46
- const file_walk_1 = require("../utils/file-walk");
47
- // Spec ID 格式: AR-XXX, WS-XXX, etc.
48
- const SPEC_ID_REGEX = /^[A-Z]{2,3}-\d{3}$/;
49
- /**
50
- * 检查单个文件
51
- */
52
- function checkFile(filePath) {
53
- const content = (0, fs_1.readFileSync)(filePath, 'utf-8');
54
- const lines = content.split('\n');
55
- const result = {
56
- valid: true,
57
- file: filePath,
58
- annotations: [],
59
- errors: [],
60
- warnings: [],
61
- };
62
- let inJSDoc = false;
63
- let currentJSDoc = [];
64
- let currentJSDocStartLine = 0;
65
- for (let i = 0; i < lines.length; i++) {
66
- const line = lines[i].trim();
67
- // JSDoc 开始
68
- if (line.startsWith('/**')) {
69
- inJSDoc = true;
70
- currentJSDoc = [line];
71
- currentJSDocStartLine = i + 1;
72
- continue;
73
- }
74
- // JSDoc 结束
75
- if (inJSDoc && line.endsWith('*/')) {
76
- inJSDoc = false;
77
- currentJSDoc.push(line);
78
- const annotation = parseJSDoc(currentJSDoc, currentJSDocStartLine);
79
- if (annotation) {
80
- result.annotations.push(annotation);
81
- validateAnnotation(annotation, result);
82
- }
83
- currentJSDoc = [];
84
- continue;
85
- }
86
- // JSDoc 中间
87
- if (inJSDoc) {
88
- currentJSDoc.push(line);
89
- }
90
- // 行内注释 // @spec AR-001
91
- const inlineMatch = line.match(/\/\/\s*@spec\s+(\S+)/);
92
- if (inlineMatch) {
93
- const specId = inlineMatch[1];
94
- const annotation = {
95
- specId,
96
- line: i + 1,
97
- type: 'inline',
98
- };
99
- result.annotations.push(annotation);
100
- validateAnnotation(annotation, result);
101
- }
102
- }
103
- // 检查公共导出是否有注释
104
- checkPublicExports(content, result);
105
- result.valid = result.errors.length === 0;
106
- return result;
107
- }
108
- /**
109
- * 解析 JSDoc 注释
110
- */
111
- function parseJSDoc(lines, startLine) {
112
- const content = lines.join('\n');
113
- // 检查是否有 @spec
114
- const specMatch = content.match(/@spec\s+(\S+)/);
115
- if (!specMatch) {
116
- return null;
117
- }
118
- const specId = specMatch[1];
119
- // 解析其他标签
120
- const annotation = {
121
- specId,
122
- line: startLine,
123
- type: inferType(content),
124
- };
125
- // @implements
126
- const implementsMatch = content.match(/@implements\s+([\w\-_,\s]+)/);
127
- if (implementsMatch) {
128
- annotation.implements = implementsMatch[1]
129
- .split(/[,\s]+/)
130
- .map(s => s.trim())
131
- .filter(Boolean);
132
- }
133
- // @acceptance
134
- const acceptanceMatch = content.match(/@acceptance\s+([\w\-_,\s]+)/);
135
- if (acceptanceMatch) {
136
- annotation.acceptance = acceptanceMatch[1]
137
- .split(/[,\s]+/)
138
- .map(s => s.trim())
139
- .filter(Boolean);
140
- }
141
- // @dependencies
142
- const depsMatch = content.match(/@dependencies\s+([\w\-_,\s/]+)/);
143
- if (depsMatch) {
144
- annotation.dependencies = depsMatch[1]
145
- .split(/[,\s]+/)
146
- .map(s => s.trim())
147
- .filter(Boolean);
148
- }
149
- // @author
150
- const authorMatch = content.match(/@author\s+(\S+)/);
151
- if (authorMatch) {
152
- annotation.author = authorMatch[1];
153
- }
154
- // @since
155
- const sinceMatch = content.match(/@since\s+(\d{4}-\d{2}-\d{2})/);
156
- if (sinceMatch) {
157
- annotation.since = sinceMatch[1];
158
- }
159
- return annotation;
160
- }
161
- /**
162
- * 推断注释类型
163
- */
164
- function inferType(content) {
165
- if (content.includes('class '))
166
- return 'class';
167
- if (content.includes('async ') || content.includes('function '))
168
- return 'function';
169
- return 'method';
170
- }
171
- /**
172
- * 验证注释
173
- */
174
- function validateAnnotation(annotation, result) {
175
- // 检查 Spec ID 格式
176
- if (!SPEC_ID_REGEX.test(annotation.specId)) {
177
- result.errors.push({
178
- line: annotation.line,
179
- message: `Invalid spec ID format: ${annotation.specId}`,
180
- code: 'INVALID_SPEC_FORMAT',
181
- });
182
- }
183
- // 警告:建议标记 @implements
184
- if (!annotation.implements && annotation.type !== 'inline') {
185
- result.warnings.push({
186
- line: annotation.line,
187
- message: 'Missing @implements tag',
188
- code: 'MISSING_IMPLEMENTS',
189
- });
190
- }
191
- // 警告:建议标记 @acceptance
192
- if (!annotation.acceptance) {
193
- result.warnings.push({
194
- line: annotation.line,
195
- message: 'Missing @acceptance tag',
196
- code: 'MISSING_ACCEPTANCE',
197
- });
198
- }
199
- }
200
- /**
201
- * 检查公共导出是否有注释
202
- */
203
- function checkPublicExports(content, result) {
204
- // 查找 export class/function 但没有 @spec 的
205
- const exportRegex = /^(export\s+(?:abstract\s+)?(?:class|interface|function|const|let|var))\s+(\w+)/gm;
206
- let match;
207
- while ((match = exportRegex.exec(content)) !== null) {
208
- const line = content.substring(0, match.index).split('\n').length;
209
- const name = match[2];
210
- // 检查前10行是否有 @spec
211
- const beforeContent = content.substring(Math.max(0, match.index - 500), match.index);
212
- if (!beforeContent.includes('@spec')) {
213
- result.warnings.push({
214
- line,
215
- message: `Public export "${name}" missing @spec annotation`,
216
- code: 'MISSING_SPEC',
217
- });
218
- }
219
- }
220
- }
221
- /**
222
- * 递归获取目录下所有文件(收敛到 utils/file-walk 的 walkFiles,工单 O3)
223
- */
224
- function getFilesRecursively(dir, extensions) {
225
- return (0, file_walk_1.walkFiles)(dir, {
226
- skipDirs: ['node_modules', 'dist'],
227
- filter: (name) => extensions.includes(path.extname(name)) && !name.endsWith('.d.ts'),
228
- });
229
- }
230
- /**
231
- * 批量检查目录
232
- */
233
- function checkDirectory(dir, options = {}) {
234
- const extensions = options.extensions || ['.ts', '.tsx', '.js', '.jsx'];
235
- const files = getFilesRecursively(dir, extensions);
236
- return files.map(file => checkFile(file));
237
- }
238
- /**
239
- * 生成报告
240
- */
241
- function generateReport(results) {
242
- const totalFiles = results.length;
243
- const validFiles = results.filter(r => r.valid).length;
244
- const totalErrors = results.reduce((sum, r) => sum + r.errors.length, 0);
245
- const totalWarnings = results.reduce((sum, r) => sum + r.warnings.length, 0);
246
- let report = `## 注释规范检查报告\n\n`;
247
- report += `- 检查文件: ${totalFiles}\n`;
248
- report += `- 通过: ${validFiles}/${totalFiles}\n`;
249
- report += `- 错误: ${totalErrors}\n`;
250
- report += `- 警告: ${totalWarnings}\n\n`;
251
- if (totalErrors > 0) {
252
- report += `### ❌ 错误\n\n`;
253
- for (const result of results) {
254
- for (const error of result.errors) {
255
- report += `- ${result.file}:${error.line} - ${error.message}\n`;
256
- }
257
- }
258
- report += '\n';
259
- }
260
- if (totalWarnings > 0) {
261
- report += `### ⚠️ 警告\n\n`;
262
- for (const result of results) {
263
- for (const warning of result.warnings.slice(0, 5)) {
264
- report += `- ${result.file}:${warning.line} - ${warning.message}\n`;
265
- }
266
- }
267
- }
268
- return report;
269
- }
270
- // CLI 入口
271
- if (require.main === module) {
272
- const args = process.argv.slice(2);
273
- const dir = args[0] || process.cwd();
274
- const results = checkDirectory(dir);
275
- console.log(generateReport(results));
276
- const hasErrors = results.some(r => r.errors.length > 0);
277
- process.exit(hasErrors ? 1 : 0);
278
- }
279
- //# sourceMappingURL=annotation-checker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"annotation-checker.js","sourceRoot":"","sources":["../../src/spec/annotation-checker.ts"],"names":[],"mappings":"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"}
@@ -1,42 +0,0 @@
1
- /**
2
- * Enforcement 执行器类型定义
3
- */
4
- import type { Constraint, ConstraintContext } from './constraint';
5
- export type EnforcementId = string;
6
- export interface EnforcementContext extends ConstraintContext {
7
- enforcementId: EnforcementId;
8
- constraint: Constraint;
9
- params?: Record<string, any>;
10
- }
11
- export interface EnforcementResult {
12
- passed: boolean;
13
- evidence?: string;
14
- message?: string;
15
- error?: string;
16
- duration?: number;
17
- validatedAt?: Date;
18
- }
19
- export interface EnforcementExecutor {
20
- execute(context: EnforcementContext): Promise<EnforcementResult>;
21
- description?: string;
22
- supportedParams?: string[];
23
- }
24
- export interface EnforcementRegistration {
25
- id: EnforcementId;
26
- executor: EnforcementExecutor;
27
- registeredAt: Date;
28
- source?: string;
29
- }
30
- export interface InterceptionResult {
31
- passed: boolean;
32
- constraints: {
33
- constraint: Constraint;
34
- enforcementResult?: EnforcementResult;
35
- skipped?: boolean;
36
- skipReason?: string;
37
- }[];
38
- violations: Constraint[];
39
- message?: string;
40
- interceptedAt: Date;
41
- }
42
- //# sourceMappingURL=enforcement.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enforcement.d.ts","sourceRoot":"","sources":["../../src/types/enforcement.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAElE,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC;AAEnC,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,aAAa,EAAE,aAAa,CAAC;IAC7B,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,aAAa,CAAC;IAClB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,YAAY,EAAE,IAAI,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE;QACX,UAAU,EAAE,UAAU,CAAC;QACvB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;QACtC,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,EAAE,CAAC;IACJ,UAAU,EAAE,UAAU,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,IAAI,CAAC;CACrB"}
@@ -1,6 +0,0 @@
1
- "use strict";
2
- /**
3
- * Enforcement 执行器类型定义
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- //# sourceMappingURL=enforcement.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enforcement.js","sourceRoot":"","sources":["../../src/types/enforcement.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -1,53 +0,0 @@
1
- /**
2
- * 监控域类型(诊断)
3
- *
4
- * 原定义位于 monitoring/constraint-doctor.ts,
5
- * 但被 types/index.ts 反向再导出(类型层依赖业务模块,分层倒挂)。
6
- * 工单 14 将类型定义归位到 types 层,monitoring 改从 types 导入。
7
- */
8
- import type { ExecutionTrace } from './trace';
9
- /**
10
- * 诊断结果
11
- */
12
- export interface Diagnosis {
13
- /** 异常 ID */
14
- anomalyId: string;
15
- /** 约束 ID */
16
- constraintId: string;
17
- /** 诊断时间 */
18
- diagnosedAt: number;
19
- /** 根因分析 */
20
- rootCause: {
21
- /** 主要原因 */
22
- primary: string;
23
- /** 次要原因 */
24
- secondary?: string[];
25
- /** 相关 traces */
26
- evidence: ExecutionTrace[];
27
- };
28
- /** 影响评估 */
29
- impact: {
30
- /** 影响程度 */
31
- severity: 'low' | 'medium' | 'high';
32
- /** 影响范围 */
33
- scope: 'single_project' | 'multiple_projects' | 'team';
34
- /** 用户影响 */
35
- userImpact: string;
36
- };
37
- /** 改进建议 */
38
- recommendations: {
39
- /** 建议类型 */
40
- type: 'add_exception' | 'adjust_threshold' | 'modify_constraint' | 'user_training';
41
- /** 建议内容 */
42
- content: string;
43
- /** 预期效果 */
44
- expectedOutcome: string;
45
- /** 实施成本 */
46
- implementationCost: 'low' | 'medium' | 'high';
47
- }[];
48
- /** 是否需要变更 */
49
- needsChange: boolean;
50
- /** 紧急程度 */
51
- urgency: 'low' | 'medium' | 'high';
52
- }
53
- //# sourceMappingURL=monitoring-types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"monitoring-types.d.ts","sourceRoot":"","sources":["../../src/types/monitoring-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,YAAY;IACZ,SAAS,EAAE,MAAM,CAAC;IAElB,YAAY;IACZ,YAAY,EAAE,MAAM,CAAC;IAErB,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IAEpB,WAAW;IACX,SAAS,EAAE;QACT,WAAW;QACX,OAAO,EAAE,MAAM,CAAC;QAEhB,WAAW;QACX,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QAErB,gBAAgB;QAChB,QAAQ,EAAE,cAAc,EAAE,CAAC;KAC5B,CAAC;IAEF,WAAW;IACX,MAAM,EAAE;QACN,WAAW;QACX,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;QAEpC,WAAW;QACX,KAAK,EAAE,gBAAgB,GAAG,mBAAmB,GAAG,MAAM,CAAC;QAEvD,WAAW;QACX,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IAEF,WAAW;IACX,eAAe,EAAE;QACf,WAAW;QACX,IAAI,EAAE,eAAe,GAAG,kBAAkB,GAAG,mBAAmB,GAAG,eAAe,CAAC;QAEnF,WAAW;QACX,OAAO,EAAE,MAAM,CAAC;QAEhB,WAAW;QACX,eAAe,EAAE,MAAM,CAAC;QAExB,WAAW;QACX,kBAAkB,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;KAC/C,EAAE,CAAC;IAEJ,aAAa;IACb,WAAW,EAAE,OAAO,CAAC;IAErB,WAAW;IACX,OAAO,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACpC"}
@@ -1,10 +0,0 @@
1
- "use strict";
2
- /**
3
- * 监控域类型(诊断)
4
- *
5
- * 原定义位于 monitoring/constraint-doctor.ts,
6
- * 但被 types/index.ts 反向再导出(类型层依赖业务模块,分层倒挂)。
7
- * 工单 14 将类型定义归位到 types 层,monitoring 改从 types 导入。
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- //# sourceMappingURL=monitoring-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"monitoring-types.js","sourceRoot":"","sources":["../../src/types/monitoring-types.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG"}
@@ -1,204 +0,0 @@
1
- /**
2
- * Performance Trace 类型定义
3
- *
4
- * 轻量设计:只记录核心信息,零 Token 成本
5
- *
6
- * 与 ExecutionTrace 的区别:
7
- * - ExecutionTrace: 记录约束检查结果(业务行为)
8
- * - PerformanceTrace: 记录操作耗时(性能指标)
9
- */
10
- /**
11
- * 性能追踪记录
12
- *
13
- * 设计原则:
14
- * - 只记录核心字段(零 Token)
15
- * - 文件存储,追加写入
16
- * - 支持多种操作类型
17
- */
18
- export interface PerformanceTrace {
19
- /** 操作类型 */
20
- operation: string;
21
- /** 时间戳(Unix timestamp) */
22
- timestamp: number;
23
- /** 耗时(毫秒) */
24
- duration: number;
25
- /** 结果 */
26
- result: 'ok' | 'exceeded' | 'error';
27
- /** 阈值(毫秒),用于计算是否超阈值 */
28
- threshold?: number;
29
- /** 项目路径(用于区分多项目) */
30
- projectPath?: string;
31
- /** 会话 ID(用于追踪同一会话的多次操作) */
32
- sessionId?: string;
33
- /** 任务 ID */
34
- taskId?: string;
35
- /** 角色ID(用于角色相关操作) */
36
- roleId?: string;
37
- /** 额外元数据 */
38
- metadata?: Record<string, unknown>;
39
- }
40
- /**
41
- * 性能统计汇总
42
- */
43
- export interface PerformanceSummary {
44
- /** 操作类型 */
45
- operation: string;
46
- /** 统计时间范围 */
47
- timeRange: {
48
- start: number;
49
- end: number;
50
- };
51
- /** 总执行次数 */
52
- totalCalls: number;
53
- /** 成功次数 */
54
- okCount: number;
55
- /** 超阈值次数 */
56
- exceededCount: number;
57
- /** 错误次数 */
58
- errorCount: number;
59
- /** 平均耗时(毫秒) */
60
- avgDuration: number;
61
- /** 最大耗时 */
62
- maxDuration: number;
63
- /** 最小耗时 */
64
- minDuration: number;
65
- /** P95 耗时 */
66
- p95Duration: number;
67
- /** P99 耗时 */
68
- p99Duration: number;
69
- /** 成功率 (0-1) */
70
- okRate: number;
71
- /** 超阈值率 (0-1) */
72
- exceededRate: number;
73
- /** 错误率 (0-1) */
74
- errorRate: number;
75
- /** 最近趋势 */
76
- recentTrend: 'stable' | 'rising' | 'falling';
77
- /** 对比上一周期的变化 */
78
- changeFromLastPeriod?: {
79
- avgDurationDelta: number;
80
- exceededRateDelta: number;
81
- };
82
- }
83
- /**
84
- * 性能异常
85
- */
86
- export interface PerformanceAnomaly {
87
- /** 异常类型 */
88
- type: 'high_avg_duration' | 'rising_duration' | 'high_exceeded_rate' | 'rising_exceeded_rate' | 'high_error_rate';
89
- /** 操作类型 */
90
- operation: string;
91
- /** 异常描述 */
92
- message: string;
93
- /** 相关数据 */
94
- data: {
95
- currentValue: number;
96
- threshold: number;
97
- trend?: 'rising' | 'falling' | 'stable';
98
- };
99
- /** 检测时间 */
100
- detectedAt: number;
101
- /** 建议的下一步 */
102
- suggestedAction?: 'optimize' | 'adjust_threshold' | 'notify_user';
103
- }
104
- /**
105
- * 性能追踪过滤条件
106
- */
107
- export interface PerformanceTraceFilter {
108
- /** 操作类型(可选) */
109
- operation?: string;
110
- /** 结果类型(可选) */
111
- result?: 'ok' | 'exceeded' | 'error';
112
- /** 时间范围(可选) */
113
- timeRange?: {
114
- start: number;
115
- end: number;
116
- };
117
- /** 项目路径(可选) */
118
- projectPath?: string;
119
- /** 会话 ID(可选) */
120
- sessionId?: string;
121
- /** 任务 ID(可选) */
122
- taskId?: string;
123
- /** 角色 ID(可选) */
124
- roleId?: string;
125
- }
126
- /**
127
- * PerformanceCollector 配置
128
- */
129
- export interface PerformanceCollectorConfig {
130
- /** 日志文件路径,默认 .harness/logs/performance.log */
131
- logFile?: string;
132
- /** 最大文件大小(字节),超出则滚动,默认 10MB */
133
- maxFileSize?: number;
134
- /** 是否启用(默认 true) */
135
- enabled?: boolean;
136
- }
137
- /**
138
- * PerformanceAnalyzer 配置
139
- */
140
- export interface PerformanceAnalyzerConfig {
141
- /** Summary 文件路径 */
142
- summaryFile?: string;
143
- /** 周期长度(毫秒),默认 1 小时 */
144
- periodMs?: number;
145
- /** 异常阈值 */
146
- thresholds?: {
147
- /** 平均耗时阈值(毫秒),超过则告警 */
148
- avgDuration?: number;
149
- /** 超阈值率阈值,默认 0.3 */
150
- exceededRate?: number;
151
- /** 错误率阈值,默认 0.1 */
152
- errorRate?: number;
153
- };
154
- }
155
- /**
156
- * Token 使用记录
157
- */
158
- export interface TokenUsageRecord {
159
- /** 时间戳 */
160
- timestamp: number;
161
- /** 会话/会议 ID */
162
- sessionId: string;
163
- /** 任务 ID(可选) */
164
- taskId?: string;
165
- /** 角色 ID(可选) */
166
- roleId?: string;
167
- /** 上下文 Token 数 */
168
- contextTokens: number;
169
- /** 执行 Token 数 */
170
- executionTokens: number;
171
- /** 总 Token 数 */
172
- totalTokens: number;
173
- /** 预算 */
174
- budget: number;
175
- /** 是否超预算 */
176
- exceeded: boolean;
177
- /** 项目路径 */
178
- projectPath?: string;
179
- }
180
- /**
181
- * Token 使用统计
182
- */
183
- export interface TokenUsageSummary {
184
- /** 会话 ID */
185
- sessionId: string;
186
- /** 时间范围 */
187
- timeRange: {
188
- start: number;
189
- end: number;
190
- };
191
- /** 总 Token 使用 */
192
- totalTokens: number;
193
- /** 平均每次 Token 使用 */
194
- avgTokensPerCall: number;
195
- /** 超预算次数 */
196
- exceededCount: number;
197
- /** 超预算率 */
198
- exceededRate: number;
199
- /** 按任务统计 */
200
- byTask?: Map<string, number>;
201
- /** 按角色统计 */
202
- byRole?: Map<string, number>;
203
- }
204
- //# sourceMappingURL=performance.d.ts.map