@dommaker/harness 0.8.3 → 0.10.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 (623) hide show
  1. package/README.md +138 -186
  2. package/bin/harness.js +123 -61
  3. package/dist/agents/index.d.ts +3 -0
  4. package/dist/agents/index.d.ts.map +1 -0
  5. package/dist/agents/index.js +19 -0
  6. package/dist/agents/index.js.map +1 -0
  7. package/dist/agents/lifecycle.d.ts +68 -0
  8. package/dist/agents/lifecycle.d.ts.map +1 -0
  9. package/dist/agents/lifecycle.js +181 -0
  10. package/dist/agents/lifecycle.js.map +1 -0
  11. package/dist/agents/types.d.ts +42 -0
  12. package/dist/agents/types.d.ts.map +1 -0
  13. package/dist/agents/types.js +6 -0
  14. package/dist/agents/types.js.map +1 -0
  15. package/dist/architecture/constraint-engine.d.ts +18 -0
  16. package/dist/architecture/constraint-engine.d.ts.map +1 -1
  17. package/dist/architecture/constraint-engine.js +101 -9
  18. package/dist/architecture/constraint-engine.js.map +1 -1
  19. package/dist/architecture/cross-project-checker.d.ts +19 -1
  20. package/dist/architecture/cross-project-checker.d.ts.map +1 -1
  21. package/dist/architecture/cross-project-checker.js +242 -80
  22. package/dist/architecture/cross-project-checker.js.map +1 -1
  23. package/dist/cli/commands/acceptance.d.ts.map +1 -1
  24. package/dist/cli/commands/acceptance.js +1 -0
  25. package/dist/cli/commands/acceptance.js.map +1 -1
  26. package/dist/cli/commands/check.d.ts.map +1 -1
  27. package/dist/cli/commands/check.js +184 -75
  28. package/dist/cli/commands/check.js.map +1 -1
  29. package/dist/cli/commands/command.d.ts +10 -3
  30. package/dist/cli/commands/command.d.ts.map +1 -1
  31. package/dist/cli/commands/command.js +7 -71
  32. package/dist/cli/commands/command.js.map +1 -1
  33. package/dist/cli/commands/failure.d.ts +28 -0
  34. package/dist/cli/commands/failure.d.ts.map +1 -0
  35. package/dist/cli/commands/failure.js +132 -0
  36. package/dist/cli/commands/failure.js.map +1 -0
  37. package/dist/cli/commands/flow.d.ts +2 -0
  38. package/dist/cli/commands/flow.d.ts.map +1 -1
  39. package/dist/cli/commands/flow.js +38 -3
  40. package/dist/cli/commands/flow.js.map +1 -1
  41. package/dist/cli/commands/index.d.ts +4 -1
  42. package/dist/cli/commands/index.d.ts.map +1 -1
  43. package/dist/cli/commands/index.js +14 -3
  44. package/dist/cli/commands/index.js.map +1 -1
  45. package/dist/cli/commands/init.d.ts +2 -0
  46. package/dist/cli/commands/init.d.ts.map +1 -1
  47. package/dist/cli/commands/init.js +251 -1
  48. package/dist/cli/commands/init.js.map +1 -1
  49. package/dist/cli/commands/knowledge.d.ts +41 -0
  50. package/dist/cli/commands/knowledge.d.ts.map +1 -0
  51. package/dist/cli/commands/knowledge.js +195 -0
  52. package/dist/cli/commands/knowledge.js.map +1 -0
  53. package/dist/cli/commands/passes-gate.d.ts.map +1 -1
  54. package/dist/cli/commands/passes-gate.js +2 -4
  55. package/dist/cli/commands/passes-gate.js.map +1 -1
  56. package/dist/cli/commands/report.d.ts +1 -1
  57. package/dist/cli/commands/report.d.ts.map +1 -1
  58. package/dist/cli/commands/report.js +57 -70
  59. package/dist/cli/commands/report.js.map +1 -1
  60. package/dist/cli/commands/review.d.ts.map +1 -1
  61. package/dist/cli/commands/review.js +27 -63
  62. package/dist/cli/commands/review.js.map +1 -1
  63. package/dist/cli/commands/security.d.ts +1 -1
  64. package/dist/cli/commands/security.d.ts.map +1 -1
  65. package/dist/cli/commands/security.js +42 -82
  66. package/dist/cli/commands/security.js.map +1 -1
  67. package/dist/cli/commands/status.d.ts.map +1 -1
  68. package/dist/cli/commands/status.js +2 -2
  69. package/dist/cli/commands/status.js.map +1 -1
  70. package/dist/cli/commands/sync-docs.d.ts +21 -0
  71. package/dist/cli/commands/sync-docs.d.ts.map +1 -0
  72. package/dist/cli/commands/sync-docs.js +564 -0
  73. package/dist/cli/commands/sync-docs.js.map +1 -0
  74. package/dist/constraints/definitions.d.ts +39 -0
  75. package/dist/constraints/definitions.d.ts.map +1 -0
  76. package/dist/constraints/definitions.js +71 -0
  77. package/dist/constraints/definitions.js.map +1 -0
  78. package/dist/constraints/index.d.ts +4 -0
  79. package/dist/constraints/index.d.ts.map +1 -0
  80. package/dist/constraints/index.js +20 -0
  81. package/dist/constraints/index.js.map +1 -0
  82. package/dist/constraints/lifecycle-runner.d.ts +52 -0
  83. package/dist/constraints/lifecycle-runner.d.ts.map +1 -0
  84. package/dist/constraints/lifecycle-runner.js +151 -0
  85. package/dist/constraints/lifecycle-runner.js.map +1 -0
  86. package/dist/constraints/quality.d.ts +11 -0
  87. package/dist/constraints/quality.d.ts.map +1 -0
  88. package/dist/constraints/quality.js +257 -0
  89. package/dist/constraints/quality.js.map +1 -0
  90. package/dist/constraints/registry.d.ts +26 -0
  91. package/dist/constraints/registry.d.ts.map +1 -0
  92. package/dist/constraints/registry.js +128 -0
  93. package/dist/constraints/registry.js.map +1 -0
  94. package/dist/constraints/safety.d.ts +13 -0
  95. package/dist/constraints/safety.d.ts.map +1 -0
  96. package/dist/constraints/safety.js +103 -0
  97. package/dist/constraints/safety.js.map +1 -0
  98. package/dist/constraints/types.d.ts +53 -0
  99. package/dist/constraints/types.d.ts.map +1 -0
  100. package/dist/constraints/types.js +8 -0
  101. package/dist/constraints/types.js.map +1 -0
  102. package/dist/context/compaction.d.ts +57 -0
  103. package/dist/context/compaction.d.ts.map +1 -0
  104. package/dist/context/compaction.js +166 -0
  105. package/dist/context/compaction.js.map +1 -0
  106. package/dist/context/file-budget.d.ts +40 -0
  107. package/dist/context/file-budget.d.ts.map +1 -0
  108. package/dist/context/file-budget.js +147 -0
  109. package/dist/context/file-budget.js.map +1 -0
  110. package/dist/context/index.d.ts +15 -0
  111. package/dist/context/index.d.ts.map +1 -0
  112. package/dist/context/index.js +31 -0
  113. package/dist/context/index.js.map +1 -0
  114. package/dist/context/knowledge-injector.d.ts +49 -0
  115. package/dist/context/knowledge-injector.d.ts.map +1 -0
  116. package/dist/context/knowledge-injector.js +122 -0
  117. package/dist/context/knowledge-injector.js.map +1 -0
  118. package/dist/context/progressive-loader.d.ts +0 -1
  119. package/dist/context/progressive-loader.d.ts.map +1 -1
  120. package/dist/context/progressive-loader.js +15 -32
  121. package/dist/context/progressive-loader.js.map +1 -1
  122. package/dist/context/session-manager.d.ts +67 -0
  123. package/dist/context/session-manager.d.ts.map +1 -0
  124. package/dist/context/session-manager.js +275 -0
  125. package/dist/context/session-manager.js.map +1 -0
  126. package/dist/context/token-pipeline.d.ts +55 -0
  127. package/dist/context/token-pipeline.d.ts.map +1 -0
  128. package/dist/context/token-pipeline.js +220 -0
  129. package/dist/context/token-pipeline.js.map +1 -0
  130. package/dist/context/tool-output-budget.d.ts +59 -0
  131. package/dist/context/tool-output-budget.d.ts.map +1 -0
  132. package/dist/context/tool-output-budget.js +177 -0
  133. package/dist/context/tool-output-budget.js.map +1 -0
  134. package/dist/context/types.d.ts +113 -0
  135. package/dist/context/types.d.ts.map +1 -0
  136. package/dist/context/types.js +30 -0
  137. package/dist/context/types.js.map +1 -0
  138. package/dist/core/constraints/checker.d.ts +25 -1
  139. package/dist/core/constraints/checker.d.ts.map +1 -1
  140. package/dist/core/constraints/checker.js +244 -162
  141. package/dist/core/constraints/checker.js.map +1 -1
  142. package/dist/core/constraints/default-executors.d.ts +10 -0
  143. package/dist/core/constraints/default-executors.d.ts.map +1 -0
  144. package/dist/core/constraints/default-executors.js +120 -0
  145. package/dist/core/constraints/default-executors.js.map +1 -0
  146. package/dist/core/constraints/definitions.d.ts.map +1 -1
  147. package/dist/core/constraints/definitions.js +92 -10
  148. package/dist/core/constraints/definitions.js.map +1 -1
  149. package/dist/core/constraints/interceptor.d.ts.map +1 -1
  150. package/dist/core/constraints/interceptor.js +5 -6
  151. package/dist/core/constraints/interceptor.js.map +1 -1
  152. package/dist/core/project-config-loader.d.ts.map +1 -1
  153. package/dist/core/project-config-loader.js +12 -30
  154. package/dist/core/project-config-loader.js.map +1 -1
  155. package/dist/core/session/clean-state.d.ts.map +1 -1
  156. package/dist/core/session/clean-state.js +9 -7
  157. package/dist/core/session/clean-state.js.map +1 -1
  158. package/dist/core/session/startup.d.ts.map +1 -1
  159. package/dist/core/session/startup.js +3 -5
  160. package/dist/core/session/startup.js.map +1 -1
  161. package/dist/core/spec/validator.d.ts.map +1 -1
  162. package/dist/core/spec/validator.js +2 -4
  163. package/dist/core/spec/validator.js.map +1 -1
  164. package/dist/core/validators/checkpoint.d.ts.map +1 -1
  165. package/dist/core/validators/checkpoint.js +3 -5
  166. package/dist/core/validators/checkpoint.js.map +1 -1
  167. package/dist/core/validators/passes-gate.d.ts +0 -4
  168. package/dist/core/validators/passes-gate.d.ts.map +1 -1
  169. package/dist/core/validators/passes-gate.js +5 -13
  170. package/dist/core/validators/passes-gate.js.map +1 -1
  171. package/dist/dashboard/data.d.ts +39 -0
  172. package/dist/dashboard/data.d.ts.map +1 -0
  173. package/dist/dashboard/data.js +89 -0
  174. package/dist/dashboard/data.js.map +1 -0
  175. package/dist/dashboard/index.d.ts +4 -0
  176. package/dist/dashboard/index.d.ts.map +1 -0
  177. package/dist/dashboard/index.js +20 -0
  178. package/dist/dashboard/index.js.map +1 -0
  179. package/dist/dashboard/stats.d.ts +20 -0
  180. package/dist/dashboard/stats.d.ts.map +1 -0
  181. package/dist/dashboard/stats.js +115 -0
  182. package/dist/dashboard/stats.js.map +1 -0
  183. package/dist/dashboard/types.d.ts +98 -0
  184. package/dist/dashboard/types.d.ts.map +1 -0
  185. package/dist/dashboard/types.js +8 -0
  186. package/dist/dashboard/types.js.map +1 -0
  187. package/dist/failure/recorder.d.ts +4 -0
  188. package/dist/failure/recorder.d.ts.map +1 -1
  189. package/dist/failure/recorder.js +9 -11
  190. package/dist/failure/recorder.js.map +1 -1
  191. package/dist/gates/acceptance.d.ts.map +1 -1
  192. package/dist/gates/acceptance.js +2 -4
  193. package/dist/gates/acceptance.js.map +1 -1
  194. package/dist/gates/contract.d.ts.map +1 -1
  195. package/dist/gates/contract.js +0 -3
  196. package/dist/gates/contract.js.map +1 -1
  197. package/dist/gates/performance.d.ts.map +1 -1
  198. package/dist/gates/performance.js +3 -5
  199. package/dist/gates/performance.js.map +1 -1
  200. package/dist/gates/review.d.ts.map +1 -1
  201. package/dist/gates/review.js +4 -6
  202. package/dist/gates/review.js.map +1 -1
  203. package/dist/gates/security.d.ts.map +1 -1
  204. package/dist/gates/security.js +2 -4
  205. package/dist/gates/security.js.map +1 -1
  206. package/dist/governance/executor.d.ts +45 -0
  207. package/dist/governance/executor.d.ts.map +1 -0
  208. package/dist/governance/executor.js +237 -0
  209. package/dist/governance/executor.js.map +1 -0
  210. package/dist/governance/index.d.ts +9 -0
  211. package/dist/governance/index.d.ts.map +1 -0
  212. package/dist/governance/index.js +13 -0
  213. package/dist/governance/index.js.map +1 -0
  214. package/dist/governance/types.d.ts +46 -0
  215. package/dist/governance/types.d.ts.map +1 -0
  216. package/dist/governance/types.js +9 -0
  217. package/dist/governance/types.js.map +1 -0
  218. package/dist/index.d.ts +28 -7
  219. package/dist/index.d.ts.map +1 -1
  220. package/dist/index.js +56 -14
  221. package/dist/index.js.map +1 -1
  222. package/dist/knowledge/import.d.ts +95 -0
  223. package/dist/knowledge/import.d.ts.map +1 -0
  224. package/dist/knowledge/import.js +429 -0
  225. package/dist/knowledge/import.js.map +1 -0
  226. package/dist/knowledge/index.d.ts +15 -0
  227. package/dist/knowledge/index.d.ts.map +1 -0
  228. package/dist/knowledge/index.js +40 -0
  229. package/dist/knowledge/index.js.map +1 -0
  230. package/dist/knowledge/ingest.d.ts +30 -0
  231. package/dist/knowledge/ingest.d.ts.map +1 -0
  232. package/dist/knowledge/ingest.js +94 -0
  233. package/dist/knowledge/ingest.js.map +1 -0
  234. package/dist/knowledge/lifecycle-hooks.d.ts +62 -0
  235. package/dist/knowledge/lifecycle-hooks.d.ts.map +1 -0
  236. package/dist/knowledge/lifecycle-hooks.js +140 -0
  237. package/dist/knowledge/lifecycle-hooks.js.map +1 -0
  238. package/dist/knowledge/lifecycle.d.ts +43 -0
  239. package/dist/knowledge/lifecycle.d.ts.map +1 -0
  240. package/dist/knowledge/lifecycle.js +141 -0
  241. package/dist/knowledge/lifecycle.js.map +1 -0
  242. package/dist/knowledge/lint.d.ts +57 -0
  243. package/dist/knowledge/lint.d.ts.map +1 -0
  244. package/dist/knowledge/lint.js +235 -0
  245. package/dist/knowledge/lint.js.map +1 -0
  246. package/dist/knowledge/query.d.ts +33 -0
  247. package/dist/knowledge/query.d.ts.map +1 -0
  248. package/dist/knowledge/query.js +107 -0
  249. package/dist/knowledge/query.js.map +1 -0
  250. package/dist/knowledge/reference-tracker.d.ts +31 -0
  251. package/dist/knowledge/reference-tracker.d.ts.map +1 -0
  252. package/dist/knowledge/reference-tracker.js +124 -0
  253. package/dist/knowledge/reference-tracker.js.map +1 -0
  254. package/dist/knowledge/store.d.ts +42 -0
  255. package/dist/knowledge/store.d.ts.map +1 -0
  256. package/dist/knowledge/store.js +280 -0
  257. package/dist/knowledge/store.js.map +1 -0
  258. package/dist/knowledge/types.d.ts +103 -0
  259. package/dist/knowledge/types.d.ts.map +1 -0
  260. package/dist/knowledge/types.js +17 -0
  261. package/dist/knowledge/types.js.map +1 -0
  262. package/dist/llm/adapter.d.ts +36 -0
  263. package/dist/llm/adapter.d.ts.map +1 -0
  264. package/dist/llm/adapter.js +118 -0
  265. package/dist/llm/adapter.js.map +1 -0
  266. package/dist/llm/index.d.ts +3 -0
  267. package/dist/llm/index.d.ts.map +1 -0
  268. package/dist/llm/index.js +19 -0
  269. package/dist/llm/index.js.map +1 -0
  270. package/dist/llm/types.d.ts +62 -0
  271. package/dist/llm/types.d.ts.map +1 -0
  272. package/dist/llm/types.js +8 -0
  273. package/dist/llm/types.js.map +1 -0
  274. package/dist/monitoring/constraint-doctor.d.ts +16 -3
  275. package/dist/monitoring/constraint-doctor.d.ts.map +1 -1
  276. package/dist/monitoring/constraint-doctor.js +84 -9
  277. package/dist/monitoring/constraint-doctor.js.map +1 -1
  278. package/dist/monitoring/context-tracker.d.ts +38 -0
  279. package/dist/monitoring/context-tracker.d.ts.map +1 -0
  280. package/dist/monitoring/context-tracker.js +162 -0
  281. package/dist/monitoring/context-tracker.js.map +1 -0
  282. package/dist/monitoring/index.d.ts +3 -0
  283. package/dist/monitoring/index.d.ts.map +1 -1
  284. package/dist/monitoring/index.js +6 -0
  285. package/dist/monitoring/index.js.map +1 -1
  286. package/dist/monitoring/knowledge-doctor.d.ts +78 -0
  287. package/dist/monitoring/knowledge-doctor.d.ts.map +1 -0
  288. package/dist/monitoring/knowledge-doctor.js +266 -0
  289. package/dist/monitoring/knowledge-doctor.js.map +1 -0
  290. package/dist/monitoring/knowledge-evolver.d.ts +72 -0
  291. package/dist/monitoring/knowledge-evolver.d.ts.map +1 -0
  292. package/dist/monitoring/knowledge-evolver.js +205 -0
  293. package/dist/monitoring/knowledge-evolver.js.map +1 -0
  294. package/dist/monitoring/performance-analyzer.d.ts.map +1 -1
  295. package/dist/monitoring/performance-analyzer.js +10 -4
  296. package/dist/monitoring/performance-analyzer.js.map +1 -1
  297. package/dist/monitoring/trace-analyzer.d.ts.map +1 -1
  298. package/dist/monitoring/trace-analyzer.js +12 -5
  299. package/dist/monitoring/trace-analyzer.js.map +1 -1
  300. package/dist/safety/index.d.ts +6 -0
  301. package/dist/safety/index.d.ts.map +1 -0
  302. package/dist/safety/index.js +22 -0
  303. package/dist/safety/index.js.map +1 -0
  304. package/dist/safety/input-guardrail.d.ts +36 -0
  305. package/dist/safety/input-guardrail.d.ts.map +1 -0
  306. package/dist/safety/input-guardrail.js +118 -0
  307. package/dist/safety/input-guardrail.js.map +1 -0
  308. package/dist/safety/output-guardrail.d.ts +40 -0
  309. package/dist/safety/output-guardrail.d.ts.map +1 -0
  310. package/dist/safety/output-guardrail.js +150 -0
  311. package/dist/safety/output-guardrail.js.map +1 -0
  312. package/dist/safety/sandbox.d.ts +45 -0
  313. package/dist/safety/sandbox.d.ts.map +1 -0
  314. package/dist/safety/sandbox.js +134 -0
  315. package/dist/safety/sandbox.js.map +1 -0
  316. package/dist/safety/tool-guardrail.d.ts +51 -0
  317. package/dist/safety/tool-guardrail.d.ts.map +1 -0
  318. package/dist/safety/tool-guardrail.js +147 -0
  319. package/dist/safety/tool-guardrail.js.map +1 -0
  320. package/dist/safety/types.d.ts +104 -0
  321. package/dist/safety/types.d.ts.map +1 -0
  322. package/dist/safety/types.js +6 -0
  323. package/dist/safety/types.js.map +1 -0
  324. package/dist/tools/core/index.d.ts +13 -0
  325. package/dist/tools/core/index.d.ts.map +1 -0
  326. package/dist/tools/core/index.js +198 -0
  327. package/dist/tools/core/index.js.map +1 -0
  328. package/dist/tools/definitions/core/code/fingerprint.sh +273 -0
  329. package/dist/tools/definitions/core/code/fingerprint.yml +72 -0
  330. package/dist/tools/definitions/core/code/parse.yml +68 -0
  331. package/dist/tools/definitions/core/code/register-language.sh +475 -0
  332. package/dist/tools/definitions/core/code/register-language.yml +74 -0
  333. package/dist/tools/definitions/core/docker/build.yml +73 -0
  334. package/dist/tools/definitions/core/docker/run.yml +81 -0
  335. package/dist/tools/definitions/core/file/copy.yml +88 -0
  336. package/dist/tools/definitions/core/file/read.yml +69 -0
  337. package/dist/tools/definitions/core/file/write.yml +75 -0
  338. package/dist/tools/definitions/core/git/branch.yml +61 -0
  339. package/dist/tools/definitions/core/git/cleanup-worktree.yml +50 -0
  340. package/dist/tools/definitions/core/git/clone.yml +69 -0
  341. package/dist/tools/definitions/core/git/commit.yml +65 -0
  342. package/dist/tools/definitions/core/git/push.yml +79 -0
  343. package/dist/tools/definitions/core/git/worktree.yml +96 -0
  344. package/dist/tools/definitions/core/notification/notify.sh +152 -0
  345. package/dist/tools/definitions/core/notification/notify.yml +60 -0
  346. package/dist/tools/definitions/core/npm/build.yml +75 -0
  347. package/dist/tools/definitions/core/npm/install.yml +58 -0
  348. package/dist/tools/definitions/core/npm/test.yml +75 -0
  349. package/dist/tools/definitions/core/validation/check-reuse.yml +170 -0
  350. package/dist/tools/definitions/core/validation/validate-handlers.yml +118 -0
  351. package/dist/tools/definitions/core/validation/validate-readme-stats.yml +155 -0
  352. package/dist/tools/definitions/core/validation/validate-yaml-syntax.yml +134 -0
  353. package/dist/tools/definitions/definitions/core/code/fingerprint.sh +273 -0
  354. package/dist/tools/definitions/definitions/core/code/fingerprint.yml +72 -0
  355. package/dist/tools/definitions/definitions/core/code/parse.yml +68 -0
  356. package/dist/tools/definitions/definitions/core/code/register-language.sh +475 -0
  357. package/dist/tools/definitions/definitions/core/code/register-language.yml +74 -0
  358. package/dist/tools/definitions/definitions/core/docker/build.yml +73 -0
  359. package/dist/tools/definitions/definitions/core/docker/run.yml +81 -0
  360. package/dist/tools/definitions/definitions/core/file/copy.yml +88 -0
  361. package/dist/tools/definitions/definitions/core/file/read.yml +69 -0
  362. package/dist/tools/definitions/definitions/core/file/write.yml +75 -0
  363. package/dist/tools/definitions/definitions/core/git/branch.yml +61 -0
  364. package/dist/tools/definitions/definitions/core/git/cleanup-worktree.yml +50 -0
  365. package/dist/tools/definitions/definitions/core/git/clone.yml +69 -0
  366. package/dist/tools/definitions/definitions/core/git/commit.yml +65 -0
  367. package/dist/tools/definitions/definitions/core/git/push.yml +79 -0
  368. package/dist/tools/definitions/definitions/core/git/worktree.yml +96 -0
  369. package/dist/tools/definitions/definitions/core/notification/notify.sh +152 -0
  370. package/dist/tools/definitions/definitions/core/notification/notify.yml +60 -0
  371. package/dist/tools/definitions/definitions/core/npm/build.yml +75 -0
  372. package/dist/tools/definitions/definitions/core/npm/install.yml +58 -0
  373. package/dist/tools/definitions/definitions/core/npm/test.yml +75 -0
  374. package/dist/tools/definitions/definitions/core/validation/check-reuse.yml +170 -0
  375. package/dist/tools/definitions/definitions/core/validation/validate-handlers.yml +118 -0
  376. package/dist/tools/definitions/definitions/core/validation/validate-readme-stats.yml +155 -0
  377. package/dist/tools/definitions/definitions/core/validation/validate-yaml-syntax.yml +134 -0
  378. package/dist/tools/definitions/definitions/ext/browser/browser-automate.sh +255 -0
  379. package/dist/tools/definitions/definitions/ext/browser/browser-automate.yml +166 -0
  380. package/dist/tools/definitions/definitions/ext/browser/browser-close.sh +104 -0
  381. package/dist/tools/definitions/definitions/ext/browser/browser-close.yml +55 -0
  382. package/dist/tools/definitions/definitions/ext/browser/browser-mcp-debug.sh +682 -0
  383. package/dist/tools/definitions/definitions/ext/browser/browser-mcp-debug.yml +167 -0
  384. package/dist/tools/definitions/definitions/ext/browser/browser-start.sh +101 -0
  385. package/dist/tools/definitions/definitions/ext/browser/browser-start.yml +62 -0
  386. package/dist/tools/definitions/definitions/registry.json +795 -0
  387. package/dist/tools/definitions/definitions/std/README.md +350 -0
  388. package/dist/tools/definitions/definitions/std/analysis/analyze-codebase.yml +72 -0
  389. package/dist/tools/definitions/definitions/std/analysis/analyze-diff.yml +182 -0
  390. package/dist/tools/definitions/definitions/std/analysis/analyze-git-diff.yml +70 -0
  391. package/dist/tools/definitions/definitions/std/analysis/analyze-impact.yml +78 -0
  392. package/dist/tools/definitions/definitions/std/analysis/analyze-requirements.yml +105 -0
  393. package/dist/tools/definitions/definitions/std/analysis/brainstorm-options.yml +106 -0
  394. package/dist/tools/definitions/definitions/std/analysis/build-graph.yml +154 -0
  395. package/dist/tools/definitions/definitions/std/analysis/clarify-requirements.yml +90 -0
  396. package/dist/tools/definitions/definitions/std/analysis/detect-context.yml +109 -0
  397. package/dist/tools/definitions/definitions/std/analysis/detect-layers.yml +125 -0
  398. package/dist/tools/definitions/definitions/std/analysis/generate-tour.yml +102 -0
  399. package/dist/tools/definitions/definitions/std/analysis/search-enhance.yml +105 -0
  400. package/dist/tools/definitions/definitions/std/backlog/add.yml +51 -0
  401. package/dist/tools/definitions/definitions/std/backlog/decide.yml +39 -0
  402. package/dist/tools/definitions/definitions/std/backlog/github-sync.yml +161 -0
  403. package/dist/tools/definitions/definitions/std/backlog/list.yml +53 -0
  404. package/dist/tools/definitions/definitions/std/backlog/load.yml +46 -0
  405. package/dist/tools/definitions/definitions/std/backlog/resolve.yml +37 -0
  406. package/dist/tools/definitions/definitions/std/backlog/update.yml +42 -0
  407. package/dist/tools/definitions/definitions/std/bugfix/diagnose.yml +68 -0
  408. package/dist/tools/definitions/definitions/std/bugfix/fix.yml +66 -0
  409. package/dist/tools/definitions/definitions/std/bugfix/verify.yml +69 -0
  410. package/dist/tools/definitions/definitions/std/constraint/check-decomposition.yml +103 -0
  411. package/dist/tools/definitions/definitions/std/constraint/check-feature-list.yml +77 -0
  412. package/dist/tools/definitions/definitions/std/constraint/check-progress.yml +97 -0
  413. package/dist/tools/definitions/definitions/std/constraint/generate-report.yml +147 -0
  414. package/dist/tools/definitions/definitions/std/deploy/commit-push.yml +33 -0
  415. package/dist/tools/definitions/definitions/std/deploy/deploy-backend.yml +37 -0
  416. package/dist/tools/definitions/definitions/std/deploy/deploy-frontend.yml +37 -0
  417. package/dist/tools/definitions/definitions/std/deploy/rollback.yml +148 -0
  418. package/dist/tools/definitions/definitions/std/design/analyze-architecture-impact.yml +113 -0
  419. package/dist/tools/definitions/definitions/std/design/design-api.yml +55 -0
  420. package/dist/tools/definitions/definitions/std/design/design-architecture.yml +97 -0
  421. package/dist/tools/definitions/definitions/std/design/design-db.yml +81 -0
  422. package/dist/tools/definitions/definitions/std/design/generate-spec.yml +182 -0
  423. package/dist/tools/definitions/definitions/std/development/develop-api.yml +85 -0
  424. package/dist/tools/definitions/definitions/std/development/develop-backend.yml +88 -0
  425. package/dist/tools/definitions/definitions/std/development/develop-frontend.yml +87 -0
  426. package/dist/tools/definitions/definitions/std/development/develop-shared-types.yml +74 -0
  427. package/dist/tools/definitions/definitions/std/development/develop-task.yml +122 -0
  428. package/dist/tools/definitions/definitions/std/development/develop-tests.yml +76 -0
  429. package/dist/tools/definitions/definitions/std/development/execute-batch.yml +152 -0
  430. package/dist/tools/definitions/definitions/std/development/fix-issues.yml +100 -0
  431. package/dist/tools/definitions/definitions/std/development/implement-task.yml +124 -0
  432. package/dist/tools/definitions/definitions/std/development/review-fix-cycle.yml +232 -0
  433. package/dist/tools/definitions/definitions/std/evolution/implement.yml +125 -0
  434. package/dist/tools/definitions/definitions/std/evolution/prioritize.yml +112 -0
  435. package/dist/tools/definitions/definitions/std/evolution/report-gap.yml +166 -0
  436. package/dist/tools/definitions/definitions/std/file/read.yml +21 -0
  437. package/dist/tools/definitions/definitions/std/governance/aggregate-opinions.sh +201 -0
  438. package/dist/tools/definitions/definitions/std/governance/aggregate-opinions.yml +79 -0
  439. package/dist/tools/definitions/definitions/std/governance/audit-task.yml +178 -0
  440. package/dist/tools/definitions/definitions/std/governance/cast-vote.yml +129 -0
  441. package/dist/tools/definitions/definitions/std/governance/collect-issues.yml +16 -0
  442. package/dist/tools/definitions/definitions/std/governance/create-signed-document.yml +23 -0
  443. package/dist/tools/definitions/definitions/std/governance/create-voting-session.yml +101 -0
  444. package/dist/tools/definitions/definitions/std/governance/define-stance.sh +243 -0
  445. package/dist/tools/definitions/definitions/std/governance/define-stance.yml +82 -0
  446. package/dist/tools/definitions/definitions/std/governance/generate-review-report.yml +23 -0
  447. package/dist/tools/definitions/definitions/std/governance/impeach.yml +179 -0
  448. package/dist/tools/definitions/definitions/std/governance/multi-stance-review.yml +154 -0
  449. package/dist/tools/definitions/definitions/std/governance/prepare-artifact.yml +20 -0
  450. package/dist/tools/definitions/definitions/std/governance/review-spec-approval.yml +262 -0
  451. package/dist/tools/definitions/definitions/std/governance/rollback.yml +186 -0
  452. package/dist/tools/definitions/definitions/std/governance/stance-review.yml +149 -0
  453. package/dist/tools/definitions/definitions/std/governance/track-effect.yml +199 -0
  454. package/dist/tools/definitions/definitions/std/governance/vote-tally.yml +144 -0
  455. package/dist/tools/definitions/definitions/std/patch/execute.yml +51 -0
  456. package/dist/tools/definitions/definitions/std/planning/generate-tasks.yml +36 -0
  457. package/dist/tools/definitions/definitions/std/planning/load-tasks.yml +44 -0
  458. package/dist/tools/definitions/definitions/std/planning/split-batch.yml +481 -0
  459. package/dist/tools/definitions/definitions/std/planning/split-tasks.yml +359 -0
  460. package/dist/tools/definitions/definitions/std/planning/update-tasks.yml +51 -0
  461. package/dist/tools/definitions/definitions/std/planning/validate-tasks.yml +46 -0
  462. package/dist/tools/definitions/definitions/std/project/decide-next-workflow.yml +38 -0
  463. package/dist/tools/definitions/definitions/std/project/load-state.yml +31 -0
  464. package/dist/tools/definitions/definitions/std/project/save-state.yml +32 -0
  465. package/dist/tools/definitions/definitions/std/quality/check-quality.yml +241 -0
  466. package/dist/tools/definitions/definitions/std/quality/debug-systematic.yml +163 -0
  467. package/dist/tools/definitions/definitions/std/quality/handle-feedback.yml +108 -0
  468. package/dist/tools/definitions/definitions/std/quality/review-code.yml +128 -0
  469. package/dist/tools/definitions/definitions/std/quality/review-spec.yml +140 -0
  470. package/dist/tools/definitions/definitions/std/quality/review-task.yml +190 -0
  471. package/dist/tools/definitions/definitions/std/quality/run-tests.yml +80 -0
  472. package/dist/tools/definitions/definitions/std/quick/analyze.yml +56 -0
  473. package/dist/tools/definitions/definitions/std/quick/implement.yml +67 -0
  474. package/dist/tools/definitions/definitions/std/quick/verify.yml +71 -0
  475. package/dist/tools/definitions/definitions/std/verification/verify_completion.yml +113 -0
  476. package/dist/tools/definitions/definitions/std/verification/wait-condition.yml +107 -0
  477. package/dist/tools/definitions/ext/browser/browser-automate.sh +255 -0
  478. package/dist/tools/definitions/ext/browser/browser-automate.yml +166 -0
  479. package/dist/tools/definitions/ext/browser/browser-close.sh +104 -0
  480. package/dist/tools/definitions/ext/browser/browser-close.yml +55 -0
  481. package/dist/tools/definitions/ext/browser/browser-mcp-debug.sh +682 -0
  482. package/dist/tools/definitions/ext/browser/browser-mcp-debug.yml +167 -0
  483. package/dist/tools/definitions/ext/browser/browser-start.sh +101 -0
  484. package/dist/tools/definitions/ext/browser/browser-start.yml +62 -0
  485. package/dist/tools/definitions/registry.json +795 -0
  486. package/dist/tools/definitions/std/README.md +350 -0
  487. package/dist/tools/definitions/std/analysis/analyze-codebase.yml +72 -0
  488. package/dist/tools/definitions/std/analysis/analyze-diff.yml +182 -0
  489. package/dist/tools/definitions/std/analysis/analyze-git-diff.yml +70 -0
  490. package/dist/tools/definitions/std/analysis/analyze-impact.yml +78 -0
  491. package/dist/tools/definitions/std/analysis/analyze-requirements.yml +105 -0
  492. package/dist/tools/definitions/std/analysis/brainstorm-options.yml +106 -0
  493. package/dist/tools/definitions/std/analysis/build-graph.yml +154 -0
  494. package/dist/tools/definitions/std/analysis/clarify-requirements.yml +90 -0
  495. package/dist/tools/definitions/std/analysis/detect-context.yml +109 -0
  496. package/dist/tools/definitions/std/analysis/detect-layers.yml +125 -0
  497. package/dist/tools/definitions/std/analysis/generate-tour.yml +102 -0
  498. package/dist/tools/definitions/std/analysis/search-enhance.yml +105 -0
  499. package/dist/tools/definitions/std/backlog/add.yml +51 -0
  500. package/dist/tools/definitions/std/backlog/decide.yml +39 -0
  501. package/dist/tools/definitions/std/backlog/github-sync.yml +161 -0
  502. package/dist/tools/definitions/std/backlog/list.yml +53 -0
  503. package/dist/tools/definitions/std/backlog/load.yml +46 -0
  504. package/dist/tools/definitions/std/backlog/resolve.yml +37 -0
  505. package/dist/tools/definitions/std/backlog/update.yml +42 -0
  506. package/dist/tools/definitions/std/bugfix/diagnose.yml +68 -0
  507. package/dist/tools/definitions/std/bugfix/fix.yml +66 -0
  508. package/dist/tools/definitions/std/bugfix/verify.yml +69 -0
  509. package/dist/tools/definitions/std/constraint/check-decomposition.yml +103 -0
  510. package/dist/tools/definitions/std/constraint/check-feature-list.yml +77 -0
  511. package/dist/tools/definitions/std/constraint/check-progress.yml +97 -0
  512. package/dist/tools/definitions/std/constraint/generate-report.yml +147 -0
  513. package/dist/tools/definitions/std/deploy/commit-push.yml +33 -0
  514. package/dist/tools/definitions/std/deploy/deploy-backend.yml +37 -0
  515. package/dist/tools/definitions/std/deploy/deploy-frontend.yml +37 -0
  516. package/dist/tools/definitions/std/deploy/rollback.yml +148 -0
  517. package/dist/tools/definitions/std/design/analyze-architecture-impact.yml +113 -0
  518. package/dist/tools/definitions/std/design/design-api.yml +55 -0
  519. package/dist/tools/definitions/std/design/design-architecture.yml +97 -0
  520. package/dist/tools/definitions/std/design/design-db.yml +81 -0
  521. package/dist/tools/definitions/std/design/generate-spec.yml +182 -0
  522. package/dist/tools/definitions/std/development/develop-api.yml +85 -0
  523. package/dist/tools/definitions/std/development/develop-backend.yml +88 -0
  524. package/dist/tools/definitions/std/development/develop-frontend.yml +87 -0
  525. package/dist/tools/definitions/std/development/develop-shared-types.yml +74 -0
  526. package/dist/tools/definitions/std/development/develop-task.yml +122 -0
  527. package/dist/tools/definitions/std/development/develop-tests.yml +76 -0
  528. package/dist/tools/definitions/std/development/execute-batch.yml +152 -0
  529. package/dist/tools/definitions/std/development/fix-issues.yml +100 -0
  530. package/dist/tools/definitions/std/development/implement-task.yml +124 -0
  531. package/dist/tools/definitions/std/development/review-fix-cycle.yml +232 -0
  532. package/dist/tools/definitions/std/evolution/implement.yml +125 -0
  533. package/dist/tools/definitions/std/evolution/prioritize.yml +112 -0
  534. package/dist/tools/definitions/std/evolution/report-gap.yml +166 -0
  535. package/dist/tools/definitions/std/file/read.yml +21 -0
  536. package/dist/tools/definitions/std/governance/aggregate-opinions.sh +201 -0
  537. package/dist/tools/definitions/std/governance/aggregate-opinions.yml +79 -0
  538. package/dist/tools/definitions/std/governance/audit-task.yml +178 -0
  539. package/dist/tools/definitions/std/governance/cast-vote.yml +129 -0
  540. package/dist/tools/definitions/std/governance/collect-issues.yml +16 -0
  541. package/dist/tools/definitions/std/governance/create-signed-document.yml +23 -0
  542. package/dist/tools/definitions/std/governance/create-voting-session.yml +101 -0
  543. package/dist/tools/definitions/std/governance/define-stance.sh +243 -0
  544. package/dist/tools/definitions/std/governance/define-stance.yml +82 -0
  545. package/dist/tools/definitions/std/governance/generate-review-report.yml +23 -0
  546. package/dist/tools/definitions/std/governance/impeach.yml +179 -0
  547. package/dist/tools/definitions/std/governance/multi-stance-review.yml +154 -0
  548. package/dist/tools/definitions/std/governance/prepare-artifact.yml +20 -0
  549. package/dist/tools/definitions/std/governance/review-spec-approval.yml +262 -0
  550. package/dist/tools/definitions/std/governance/rollback.yml +186 -0
  551. package/dist/tools/definitions/std/governance/stance-review.yml +149 -0
  552. package/dist/tools/definitions/std/governance/track-effect.yml +199 -0
  553. package/dist/tools/definitions/std/governance/vote-tally.yml +144 -0
  554. package/dist/tools/definitions/std/patch/execute.yml +51 -0
  555. package/dist/tools/definitions/std/planning/generate-tasks.yml +36 -0
  556. package/dist/tools/definitions/std/planning/load-tasks.yml +44 -0
  557. package/dist/tools/definitions/std/planning/split-batch.yml +481 -0
  558. package/dist/tools/definitions/std/planning/split-tasks.yml +359 -0
  559. package/dist/tools/definitions/std/planning/update-tasks.yml +51 -0
  560. package/dist/tools/definitions/std/planning/validate-tasks.yml +46 -0
  561. package/dist/tools/definitions/std/project/decide-next-workflow.yml +38 -0
  562. package/dist/tools/definitions/std/project/load-state.yml +31 -0
  563. package/dist/tools/definitions/std/project/save-state.yml +32 -0
  564. package/dist/tools/definitions/std/quality/check-quality.yml +241 -0
  565. package/dist/tools/definitions/std/quality/debug-systematic.yml +163 -0
  566. package/dist/tools/definitions/std/quality/handle-feedback.yml +108 -0
  567. package/dist/tools/definitions/std/quality/review-code.yml +128 -0
  568. package/dist/tools/definitions/std/quality/review-spec.yml +140 -0
  569. package/dist/tools/definitions/std/quality/review-task.yml +190 -0
  570. package/dist/tools/definitions/std/quality/run-tests.yml +80 -0
  571. package/dist/tools/definitions/std/quick/analyze.yml +56 -0
  572. package/dist/tools/definitions/std/quick/implement.yml +67 -0
  573. package/dist/tools/definitions/std/quick/verify.yml +71 -0
  574. package/dist/tools/definitions/std/verification/verify_completion.yml +113 -0
  575. package/dist/tools/definitions/std/verification/wait-condition.yml +107 -0
  576. package/dist/tools/index.d.ts +6 -0
  577. package/dist/tools/index.d.ts.map +1 -0
  578. package/dist/tools/index.js +22 -0
  579. package/dist/tools/index.js.map +1 -0
  580. package/dist/tools/loader.d.ts +21 -0
  581. package/dist/tools/loader.d.ts.map +1 -0
  582. package/dist/tools/loader.js +199 -0
  583. package/dist/tools/loader.js.map +1 -0
  584. package/dist/tools/paths.d.ts +9 -0
  585. package/dist/tools/paths.d.ts.map +1 -0
  586. package/dist/tools/paths.js +51 -0
  587. package/dist/tools/paths.js.map +1 -0
  588. package/dist/tools/registry.d.ts +59 -0
  589. package/dist/tools/registry.d.ts.map +1 -0
  590. package/dist/tools/registry.js +115 -0
  591. package/dist/tools/registry.js.map +1 -0
  592. package/dist/tools/types.d.ts +38 -0
  593. package/dist/tools/types.d.ts.map +1 -0
  594. package/dist/tools/types.js +6 -0
  595. package/dist/tools/types.js.map +1 -0
  596. package/dist/types/constraint.d.ts +8 -0
  597. package/dist/types/constraint.d.ts.map +1 -1
  598. package/dist/types/constraint.js.map +1 -1
  599. package/dist/types/project-config.d.ts +57 -0
  600. package/dist/types/project-config.d.ts.map +1 -1
  601. package/dist/types/session.d.ts +6 -0
  602. package/dist/types/session.d.ts.map +1 -1
  603. package/dist/utils/exec.d.ts +11 -1
  604. package/dist/utils/exec.d.ts.map +1 -1
  605. package/dist/utils/exec.js +56 -2
  606. package/dist/utils/exec.js.map +1 -1
  607. package/dist/verification/index.d.ts +4 -0
  608. package/dist/verification/index.d.ts.map +1 -0
  609. package/dist/verification/index.js +20 -0
  610. package/dist/verification/index.js.map +1 -0
  611. package/dist/verification/loop.d.ts +30 -0
  612. package/dist/verification/loop.d.ts.map +1 -0
  613. package/dist/verification/loop.js +114 -0
  614. package/dist/verification/loop.js.map +1 -0
  615. package/dist/verification/rules-based.d.ts +40 -0
  616. package/dist/verification/rules-based.d.ts.map +1 -0
  617. package/dist/verification/rules-based.js +130 -0
  618. package/dist/verification/rules-based.js.map +1 -0
  619. package/dist/verification/types.d.ts +69 -0
  620. package/dist/verification/types.d.ts.map +1 -0
  621. package/dist/verification/types.js +6 -0
  622. package/dist/verification/types.js.map +1 -0
  623. package/package.json +2 -2
package/README.md CHANGED
@@ -1,202 +1,181 @@
1
1
  # @dommaker/harness
2
2
 
3
- > AI Agent 的工程约束框架 — 让 Agent 不会乱承诺、不会跳过验证、不会简化测试。
3
+ > AI Agent 工程约束框架 — 从代码质量约束到知识积累引擎
4
4
 
5
- ---
6
-
7
- ## 🚀 快速开始
5
+ [![npm version](https://img.shields.io/npm/v/@dommaker/harness)](https://www.npmjs.com/package/@dommaker/harness)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
8
7
 
9
- ### 安装
8
+ ## 定位
10
9
 
11
- ```bash
12
- npm install -g @dommaker/harness
13
10
  ```
14
-
15
- ### 最小工作流
16
-
17
- ```bash
18
- # 开发前
19
- harness check
20
-
21
- # 开发 + 写测试
22
-
23
- # 提交前
24
- harness passes-gate
11
+ 代码质量约束(补偿模型弱点)
12
+ ↓
13
+ 知识积累基础设施(模型做不到的事)
14
+ + 最小安全护栏(模型无关的底线)
25
15
  ```
26
16
 
27
- ---
28
-
29
- ## 📋 CLI 命令
17
+ **核心理念:Harness 不是目的,知识才是护城河。**
30
18
 
31
- ### 日常使用
19
+ Skill、Agent、工具链会随模型迭代更新,但领域知识是永恒的。
32
20
 
33
- ```bash
34
- harness check # 检查铁律(开发前后必用)
35
- harness passes-gate # 测试门控(提交前验证)
36
- harness status # 查看状态(异常、统计)
37
- harness flow # 一键诊断 + 提案流程
38
- ```
21
+ ---
39
22
 
40
- ### 项目初始化
23
+ ## 安装
41
24
 
42
25
  ```bash
43
- harness init --preset standard # 初始化配置
44
- harness init --print-snippets # 输出代码片段
26
+ npm install @dommaker/harness
45
27
  ```
46
28
 
47
- ### 门禁检查
29
+ ### CLI
48
30
 
49
31
  ```bash
50
- # 测试门控
51
- harness passes-gate # 运行测试
52
- harness passes-gate --coverage # 检查覆盖率
53
- harness pg # 别名
54
-
55
- # 验收标准
56
- harness acceptance --task-id TASK-001 # 检查指定任务
57
- harness acceptance --check-all # 检查所有任务
58
- harness acceptance list # 列出验收标准
59
- harness acc # 别名
60
-
61
- # 性能门控
62
- harness performance --coverage --coverage-threshold 85 # 覆盖率检查
63
- harness performance --bundle --bundle-threshold 300 # 打包大小检查
64
- harness perf # 别名
65
-
66
- # 安全门控
67
- harness security # npm audit 检查
68
- harness security --severity critical # 只显示 critical 级别
69
- harness security audit # 详细漏洞报告
70
- harness sec # 别名
71
-
72
- # API 契约
73
- harness contract # OpenAPI Schema 验证
74
- harness contract validate # Schema 语法验证
75
- harness contract --contract-path api/openapi.yaml
76
-
77
- # 代码审查
78
- harness review # PR 审查状态检查
79
- harness review --min-reviewers 2 # 要求 2 个审批
80
- harness review status # PR 详情
81
-
82
- # 命令黑名单
83
- harness command "rm -rf /" # 检查命令
84
- harness command --level "DROP TABLE" # 显示风险等级
85
- harness command --list # 列出所有规则
86
- harness cmd # 别名
32
+ harness check # 检查约束(开发前后)
33
+ harness passes-gate # 测试门控(提交前)
34
+ harness status # 查看状态和异常
35
+ harness flow # 一键诊断 + 优化提案
36
+ harness init --preset standard # 初始化配置
87
37
  ```
88
38
 
89
- ### Spec 验证
39
+ ### 作为库使用
90
40
 
91
- ```bash
92
- harness spec # 验证所有 Spec
93
- harness spec --staged # 验证暂存文件
94
- harness spec list # 支持的 Spec 类型
95
- ```
41
+ ```typescript
42
+ import {
43
+ // 约束系统
44
+ checkConstraints,
45
+ checkBeforeExecution,
46
+ interceptOperation,
47
+ // 知识引擎
48
+ KnowledgeStore,
49
+ KnowledgeQuery,
50
+ KnowledgeLinter,
51
+ ReferenceTracker,
52
+ // 安全护栏
53
+ InputGuardrail,
54
+ OutputGuardrail,
55
+ ToolGuardrail,
56
+ Sandbox,
57
+ // 上下文管理
58
+ TokenBudget,
59
+ SessionCompaction,
60
+ // Agent 生命周期
61
+ AgentLifecycle,
62
+ } from '@dommaker/harness';
96
63
 
97
- ### 检查点验证
64
+ // 约束检查
65
+ const result = await checkConstraints(context);
66
+ if (!result.passed) {
67
+ console.error(result.ironLaws.filter(r => !r.passed));
68
+ }
98
69
 
99
- ```bash
100
- harness validate # 验证检查点
101
- harness validate --strict # 严格模式
102
- harness validate -f checkpoint.json # 指定文件
103
- ```
70
+ // 知识存储与查询
71
+ const store = new KnowledgeStore({ baseDir: '.harness/knowledge' });
72
+ const query = new KnowledgeQuery(store);
73
+ const docs = query.search('architecture decisions');
104
74
 
105
- ### 报告
75
+ // 安全护栏
76
+ const guardrail = new InputGuardrail();
77
+ await guardrail.check(userInput);
106
78
 
107
- ```bash
108
- harness report # 生成 Markdown 报告
109
- harness report -f json # JSON 格式
110
- harness report -o report.md # 输出到文件
111
- ```
112
-
113
- ### 诊断
79
+ // Token 预算
80
+ const budget = new TokenBudget({ model: 'claude-3', totalTokens: 200000 });
81
+ budget.allocate('system', 2000);
82
+ budget.allocate('user', 4000);
114
83
 
115
- ```bash
116
- harness flow # 一键诊断 + 提案
117
- harness flow --auto-apply # 自动应用低风险提案
84
+ // Agent 生命周期
85
+ const lifecycle = new AgentLifecycle();
86
+ lifecycle.init({ id: 'agent-1', role: 'coder' });
118
87
  ```
119
88
 
120
89
  ---
121
90
 
122
- ## 🎯 核心概念
91
+ ## 核心架构
123
92
 
124
93
  ### 三层约束体系
125
94
 
126
95
  | 层级 | 严重性 | 说明 |
127
96
  |------|:------:|------|
128
- | **Iron Law** | 🔴 error | 绝对禁止,无例外 |
129
- | **Guideline** | 🟡 warning | 推荐遵守,有例外 |
130
- | **Tip** | 🔵 info | 信息性提示 |
131
-
132
- ### 7 条铁律
133
-
134
- | ID | 规则 |
135
- |---|------|
136
- | `no_bypass_checkpoint` | 禁止跳过检查点 |
137
- | `no_self_approval` | 禁止自评通过(必须测试)|
138
- | `no_completion_without_verification` | 完成必须验证 |
139
- | `no_test_simplification` | 禁止简化测试 |
140
- | `incremental_progress` | 单任务单会话 |
141
- | `verify_external_capability` | 外部能力先验证 |
142
- | `no_implementation_without_requirement_review` | 实现后对比需求 |
143
-
144
- ### 8 种门禁(均有 CLI 命令)
145
-
146
- | 门禁 | CLI 命令 | 用途 |
147
- |------|:--------:|------|
148
- | PassesGate | `passes-gate` / `pg` | 测试门控 |
149
- | SpecAcceptanceGate | `acceptance` / `acc` | 验收标准检查 |
150
- | PerformanceGate | `performance` / `perf` | 性能门控 |
151
- | SecurityGate | `security` / `sec` | 安全检查 |
152
- | ContractGate | `contract` | API 契约验证 |
153
- | ReviewGate | `review` | PR 审核检查 |
154
- | CommandGate | `command` / `cmd` | 命令黑名单 |
155
- | CheckpointValidator | `validate` | 检查点验证 |
97
+ | **Iron Law** | error | 绝对禁止,无例外(8 条) |
98
+ | **Guideline** | warning | 推荐遵守,有例外(11 条) |
99
+ | **Tip** | info | 信息性提示(2 条) |
100
+
101
+ ### 子系统
102
+
103
+ | 模块 | 目录 | 说明 |
104
+ |------|------|------|
105
+ | **约束引擎** | `core/`, `constraints/` | 三层约束检查、拦截器、自定义约束配置 |
106
+ | **知识引擎** | `knowledge/` | 存储、查询、引用追踪、质量检查、生命周期(draft→canonical→archived) |
107
+ | **上下文管理** | `context/` | Token 预算、会话压缩、渐进式加载、知识注入 |
108
+ | **安全护栏** | `safety/` | 输入/输出/工具调用安全检查、沙箱(L1-L4) |
109
+ | **验证循环** | `verification/` | 规则引擎 + 推理验证,支持检查点恢复 |
110
+ | **门禁系统** | `gates/` | 8 种门禁:测试/验收/性能/安全/契约/审查/命令/检查点 |
111
+ | **监控** | `monitoring/` | Trace 收集分析、约束诊断/进化、知识诊断/进化 |
112
+ | **Agent 管理** | `agents/` | Agent 生命周期状态机(init→running→completed) |
113
+ | **LLM 集成** | `llm/` | LLM 适配层,支持多 provider |
114
+ | **失败处理** | `failure/` | 错误分类、失败记录 |
115
+ | **Dashboard** | `dashboard/` | 统计面板、状态展示 |
116
+ | **架构约束** | `architecture/` | 架构级约束检查、跨项目依赖检查 |
117
+ | **Spec 检查** | `spec/` | 代码注解中的 Spec 验证 |
156
118
 
157
119
  ---
158
120
 
159
- ## 🔧 代码集成
121
+ ## CLI 命令
160
122
 
161
- ```typescript
162
- import {
163
- IronLawChecker,
164
- PassesGate,
165
- CommandGate,
166
- CheckpointValidator,
167
- } from '@dommaker/harness';
123
+ ### 日常
168
124
 
169
- // 铁律检查
170
- const checker = IronLawChecker.getInstance();
171
- const results = await checker.checkAll(context);
125
+ ```bash
126
+ harness check # 约束检查
127
+ harness passes-gate [options] # 测试门控(别名: pg)
128
+ harness status [--anomalies] # 状态查看
129
+ harness flow [--auto-apply] [--auto-execute] # 诊断 + 提案
130
+ ```
172
131
 
173
- // 测试门控
174
- const gate = new PassesGate({ requireEvidence: true });
175
- const passed = await gate.runTests();
132
+ ### 门禁
176
133
 
177
- // 命令黑名单
178
- const commandGate = new CommandGate();
179
- const result = await commandGate.check('rm -rf /');
180
- // { passed: false, message: '命令被禁止执行...' }
134
+ ```bash
135
+ harness acceptance [--task-id ID] [--check-all] # 验收标准(别名: acc)
136
+ harness performance [--coverage] [--bundle] # 性能门控(别名: perf)
137
+ harness security [--severity level] # 安全检查(别名: sec)
138
+ harness contract [--contract-path path] # API 契约验证
139
+ harness review [--min-reviewers N] # PR 审查检查
140
+ harness command "command string" # 命令黑名单(别名: cmd)
181
141
  ```
182
142
 
183
- > 详细 API 参考:[capabilities/](capabilities/) 目录
143
+ ### 其他
144
+
145
+ ```bash
146
+ harness init [--preset standard|strict|relaxed] # 初始化
147
+ harness validate [--strict] # 检查点验证
148
+ harness spec [--staged] # Spec 验证
149
+ harness report [-f json|markdown] [-o file] # 报告生成
150
+ ```
184
151
 
185
152
  ---
186
153
 
154
+ ## 配置
155
+
187
156
  ### .harness/config.yml
188
157
 
189
158
  ```yaml
190
- preset: standard
159
+ preset: standard # standard | strict | relaxed
191
160
 
192
161
  # 自定义约束例外
193
162
  custom_constraints:
194
163
  no_fix_without_root_cause:
195
164
  extend_exceptions:
196
- - my_special_case
165
+ - hotfix_branch
197
166
  ```
198
167
 
199
- ### CI 集成
168
+ ### Presets
169
+
170
+ | Preset | 说明 |
171
+ |--------|------|
172
+ | `strict` | 全部约束启用(Iron Laws + Guidelines + Tips) |
173
+ | `standard` | Iron Laws + Guidelines(默认) |
174
+ | `relaxed` | 仅 Iron Laws |
175
+
176
+ ---
177
+
178
+ ## CI 集成
200
179
 
201
180
  ```yaml
202
181
  # .github/workflows/harness-check.yml
@@ -212,63 +191,36 @@ jobs:
212
191
 
213
192
  ---
214
193
 
215
- ## 📊 Trace & 日志
194
+ ## 日志与诊断
216
195
 
217
- ### 目录结构
196
+ 运行时状态存储在 `.harness/` 目录:
218
197
 
219
198
  ```
220
199
  .harness/
221
- ├── traces/
222
- │ ├── execution.log # 约束检查记录(JSON Lines)
223
- │ └── summary.json # 统计汇总
224
- └── state.json # Harness 状态
200
+ ├── traces/ # 约束检查记录(JSON Lines)
201
+ ├── failures/ # 失败记录
202
+ ├── diagnoses/ # 诊断报告
203
+ ├── proposals/ # 约束优化提案
204
+ └── state.json # 运行状态
225
205
  ```
226
206
 
227
- ### 查看日志
228
-
229
207
  ```bash
230
- # 查看状态和统计
231
- harness status
232
-
233
- # 查看详细统计
234
- harness status --detail
235
-
236
- # 只看异常
237
- harness status --anomalies
238
-
239
- # 分析最近 N 小时
240
- harness status --hours 48
241
- ```
242
-
243
- ### 日志格式
244
-
245
- **execution.log**(JSON Lines 格式):
246
- ```json
247
- {"timestamp":"2026-04-28T15:00:00Z","constraintId":"no_bypass_checkpoint","result":"passed","duration":12}
248
- {"timestamp":"2026-04-28T15:01:00Z","constraintId":"no_self_approval","result":"bypassed","reason":"hotfix"}
208
+ harness status --anomalies # 查看异常
209
+ harness status --hours 48 # 最近 48 小时统计
210
+ harness flow --auto-apply # 诊断 + 自动应用低风险提案
249
211
  ```
250
212
 
251
- **summary.json**:
252
- ```json
253
- {"totalChecks":150,"passRate":0.92,"bypassRate":0.08,"anomalies":2}
254
- ```
255
-
256
- ### 异常检测
257
-
258
- 当 `harness status --anomalies` 发现异常时,运行 `harness flow` 进行诊断和优化提案。
259
-
260
213
  ---
261
214
 
262
- ## 🔧 开发
215
+ ## 开发
263
216
 
264
217
  ```bash
265
218
  npm install
266
- npm run build
267
- npm test
219
+ npm run build # 编译 TypeScript
220
+ npm test # 运行测试(覆盖率阈值 50%)
221
+ npm run lint # ESLint
268
222
  ```
269
223
 
270
- ---
271
-
272
- ## 📝 License
224
+ ## 许可证
273
225
 
274
- MIT © dommaker
226
+ MIT
package/bin/harness.js CHANGED
@@ -7,13 +7,14 @@
7
7
  */
8
8
 
9
9
  const { Command } = require('commander');
10
- const {
11
- check,
12
- listLaws,
13
- validate,
14
- runPassesGate,
10
+ const { version } = require('../package.json');
11
+ const {
12
+ check,
13
+ listLaws,
14
+ validate,
15
+ runPassesGate,
15
16
  checkCoverage,
16
- init,
17
+ init,
17
18
  report,
18
19
  status,
19
20
  flow,
@@ -28,8 +29,16 @@ const {
28
29
  validateSchema,
29
30
  review,
30
31
  reviewStatus,
31
- command,
32
- cmd
32
+ executeCommand,
33
+ syncDocs,
34
+ knowledgeList,
35
+ knowledgeSearch,
36
+ knowledgeImport,
37
+ knowledgeDecay,
38
+ knowledgeStats,
39
+ failureList,
40
+ failureStats,
41
+ failureClear,
33
42
  } = require('../dist/cli/commands/index');
34
43
 
35
44
  const program = new Command();
@@ -37,7 +46,7 @@ const program = new Command();
37
46
  program
38
47
  .name('harness')
39
48
  .description('通用工程约束框架 - 铁律系统、检查点验证、测试门控、执行追踪')
40
- .version('0.8.0');
49
+ .version(version);
41
50
 
42
51
  // ========================================
43
52
  // harness check
@@ -102,6 +111,7 @@ program
102
111
  .command('init')
103
112
  .description('初始化项目的 harness 配置')
104
113
  .option('-p, --preset <preset>', '预设名称 (strict/standard/relaxed)', 'standard')
114
+ .option('-g, --governance <level>', '治理级别 (minimal/standard/strict)')
105
115
  .option('-t, --type <type>', '项目类型 (node-api/nextjs-app/python-api/custom)')
106
116
  .option('--project-path <path>', '项目路径')
107
117
  .option('--no-git-hooks', '不创建 Git hooks')
@@ -118,7 +128,7 @@ program
118
128
  .command('report')
119
129
  .description('生成检查报告')
120
130
  .option('-o, --output <path>', '输出文件路径')
121
- .option('-f, --format <format>', '输出格式 (json/markdown)', 'markdown')
131
+ .option('-f, --format <format>', '输出格式 (json/markdown/html)', 'markdown')
122
132
  .option('-p, --project-path <path>', '项目路径')
123
133
  .action(async (options) => {
124
134
  await report(options);
@@ -262,7 +272,7 @@ program
262
272
  .description('API 契约门控,检查 OpenAPI Schema')
263
273
  .option('-p, --project-path <path>', '项目路径')
264
274
  .option('--contract-path <path>', '契约文件路径', 'openapi.yaml')
265
- .option('--strict', '严格模式', true)
275
+ .option('--no-strict', '关闭严格模式')
266
276
  .option('--allow-breaking', '允许破坏性变更', false)
267
277
  .action(async (subcommand, options, command) => {
268
278
  if (subcommand === 'validate') {
@@ -280,8 +290,8 @@ program
280
290
  .description('代码审查门控,检查审查状态')
281
291
  .option('-p, --project-path <path>', '项目路径')
282
292
  .option('--min-reviewers <n>', '最少审查人数', '1')
283
- .option('--require-approval', '要求审批', true)
284
- .option('--block-on-changes', '阻止变更请求', true)
293
+ .option('--no-require-approval', '不要求审批')
294
+ .option('--no-block-on-changes', '不阻止变更请求')
285
295
  .option('--allowed-reviewers <list>', '允许的审查者(逗号分隔)')
286
296
  .action(async (subcommand, options, command) => {
287
297
  if (subcommand === 'status') {
@@ -308,58 +318,110 @@ program
308
318
  .option('--list', '列出所有黑名单规则')
309
319
  .option('--json', 'JSON 格式输出')
310
320
  .option('--strict', '严格模式(warn 也阻止)')
311
- .action(async (cmd, options, command) => {
312
- const gate = require('../dist/gates/command').createCommandGate({ strict: options.strict });
313
-
314
- if (options.list) {
315
- const { DEFAULT_COMMAND_BLACKLIST } = require('../dist/gates/command');
316
- if (options.json) {
317
- console.log(JSON.stringify(DEFAULT_COMMAND_BLACKLIST.map(r => ({
318
- id: r.id,
319
- level: r.level,
320
- message: r.message,
321
- category: r.category,
322
- })), null, 2));
323
- } else {
324
- console.log('\n命令黑名单规则:\n');
325
- console.log(`共 ${DEFAULT_COMMAND_BLACKLIST.length} 条规则`);
326
- console.log('使用 harness command --list --json 查看详情');
327
- }
328
- return;
329
- }
330
-
331
- if (!cmd) {
332
- console.error('错误:请提供要检查的命令');
333
- console.error('用法:harness command "your command"');
321
+ .action(async (cmd, options) => {
322
+ await executeCommand(cmd, options);
323
+ });
324
+
325
+ // ========================================
326
+ // harness sync-docs
327
+ // ========================================
328
+ program
329
+ .command('sync-docs')
330
+ .description('同步项目文档(CAPABILITIES.md、CONTEXT.md、CHANGELOG.md)')
331
+ .option('-p, --project-path <path>', '项目路径')
332
+ .option('-c, --check', '只检查不修改(CI 模式)', false)
333
+ .option('--changelog', '生成 CHANGELOG 条目', false)
334
+ .option('--json', '输出 JSON 格式(供 LLM 消费)', false)
335
+ .action(async (options) => {
336
+ const ok = await syncDocs(options);
337
+ if (!ok && options.check) {
334
338
  process.exit(1);
335
339
  }
336
-
337
- const result = await gate.check(cmd);
338
-
339
- if (options.level) {
340
- const { getCommandRiskLevel } = require('../dist/gates/command');
341
- const level = getCommandRiskLevel(cmd);
342
- if (options.json) {
343
- console.log(JSON.stringify({ level, command: cmd }));
344
- } else {
345
- const levelColors = { high: '\x1b[31m', medium: '\x1b[33m', low: '\x1b[32m' };
346
- console.log(`${levelColors[level]}${level}\x1b[0m ${cmd}`);
347
- }
348
- process.exit(level === 'high' ? 1 : 0);
340
+ });
341
+
342
+ // ========================================
343
+ // harness knowledge
344
+ // ========================================
345
+ program
346
+ .command('knowledge [subcommand] [arg]')
347
+ .description('知识库管理(list/search/import/decay/stats)')
348
+ .alias('kb')
349
+ .option('-p, --project-path <path>', '项目路径')
350
+ .option('--type <types>', '按类型过滤(逗号分隔)')
351
+ .option('--maturity <levels>', '按成熟度过滤(逗号分隔)')
352
+ .option('--tag <tags>', '按标签过滤(逗号分隔)')
353
+ .option('--sources <sources>', '导入源(逗号分隔: code,git,docs)')
354
+ .option('--limit <n>', '结果数量限制', '20')
355
+ .option('--reset', '重置导入状态', false)
356
+ .option('--json', 'JSON 格式输出', false)
357
+ .action(async (subcommand, arg, options) => {
358
+ const opts = { projectPath: options.projectPath, json: options.json };
359
+ switch (subcommand) {
360
+ case 'list':
361
+ case 'ls':
362
+ await knowledgeList({ ...opts, type: options.type, maturity: options.maturity, tag: options.tag });
363
+ break;
364
+ case 'search':
365
+ case 's':
366
+ if (!arg) { console.error('请提供搜索关键词'); process.exit(1); }
367
+ await knowledgeSearch(arg, { ...opts, limit: parseInt(options.limit, 10) });
368
+ break;
369
+ case 'import':
370
+ case 'i':
371
+ await knowledgeImport({ ...opts, sources: options.sources, reset: options.reset });
372
+ break;
373
+ case 'decay':
374
+ case 'd':
375
+ await knowledgeDecay(opts);
376
+ break;
377
+ case 'stats':
378
+ case 'st':
379
+ await knowledgeStats(opts);
380
+ break;
381
+ default:
382
+ // 无子命令时显示帮助
383
+ if (!subcommand) {
384
+ program.commands.find(c => c.name() === 'knowledge').help();
385
+ } else {
386
+ console.error(`未知子命令: ${subcommand}`);
387
+ process.exit(1);
388
+ }
349
389
  }
350
-
351
- if (options.json) {
352
- console.log(JSON.stringify({
353
- command: cmd,
354
- passed: result.passed,
355
- message: result.message,
356
- details: result.details,
357
- }, null, 2));
358
- } else {
359
- console.log(result.passed ? `\x1b[32m✓\x1b[0m ${result.message}` : `\x1b[31m✗\x1b[0m ${result.message}`);
390
+ });
391
+
392
+ // ========================================
393
+ // harness failure
394
+ // ========================================
395
+ program
396
+ .command('failure [subcommand]')
397
+ .description('失败记录管理(list/stats/clear)')
398
+ .option('-p, --project-path <path>', '项目路径')
399
+ .option('--type <type>', '按错误类型过滤')
400
+ .option('--level <level>', '按失败等级过滤 (L1/L2/L3/L4)')
401
+ .option('--limit <n>', '结果数量限制', '20')
402
+ .option('--json', 'JSON 格式输出', false)
403
+ .action(async (subcommand, options) => {
404
+ const opts = { projectPath: options.projectPath, json: options.json };
405
+ switch (subcommand) {
406
+ case 'list':
407
+ case 'ls':
408
+ await failureList({ ...opts, limit: parseInt(options.limit, 10), type: options.type, level: options.level });
409
+ break;
410
+ case 'stats':
411
+ case 'st':
412
+ await failureStats(opts);
413
+ break;
414
+ case 'clear':
415
+ await failureClear(opts);
416
+ break;
417
+ default:
418
+ if (!subcommand) {
419
+ program.commands.find(c => c.name() === 'failure').help();
420
+ } else {
421
+ console.error(`未知子命令: ${subcommand}`);
422
+ process.exit(1);
423
+ }
360
424
  }
361
-
362
- process.exit(result.passed ? 0 : 1);
363
425
  });
364
426
 
365
427
  // 解析命令行参数
@@ -0,0 +1,3 @@
1
+ export * from './types';
2
+ export * from './lifecycle';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./types"), exports);
18
+ __exportStar(require("./lifecycle"), exports);
19
+ //# sourceMappingURL=index.js.map