@dommaker/harness 0.9.0 → 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 (395) hide show
  1. package/README.md +26 -14
  2. package/bin/harness.js +112 -0
  3. package/dist/architecture/constraint-engine.d.ts +18 -0
  4. package/dist/architecture/constraint-engine.d.ts.map +1 -1
  5. package/dist/architecture/constraint-engine.js +101 -9
  6. package/dist/architecture/constraint-engine.js.map +1 -1
  7. package/dist/architecture/cross-project-checker.d.ts +2 -2
  8. package/dist/architecture/cross-project-checker.d.ts.map +1 -1
  9. package/dist/architecture/cross-project-checker.js +182 -32
  10. package/dist/architecture/cross-project-checker.js.map +1 -1
  11. package/dist/cli/commands/check.d.ts.map +1 -1
  12. package/dist/cli/commands/check.js +182 -71
  13. package/dist/cli/commands/check.js.map +1 -1
  14. package/dist/cli/commands/diagnose.d.ts +16 -0
  15. package/dist/cli/commands/diagnose.d.ts.map +1 -0
  16. package/dist/cli/commands/diagnose.js +195 -0
  17. package/dist/cli/commands/diagnose.js.map +1 -0
  18. package/dist/cli/commands/failure.d.ts +28 -0
  19. package/dist/cli/commands/failure.d.ts.map +1 -0
  20. package/dist/cli/commands/failure.js +132 -0
  21. package/dist/cli/commands/failure.js.map +1 -0
  22. package/dist/cli/commands/flow.d.ts +2 -0
  23. package/dist/cli/commands/flow.d.ts.map +1 -1
  24. package/dist/cli/commands/flow.js +38 -3
  25. package/dist/cli/commands/flow.js.map +1 -1
  26. package/dist/cli/commands/index.d.ts +3 -0
  27. package/dist/cli/commands/index.d.ts.map +1 -1
  28. package/dist/cli/commands/index.js +13 -1
  29. package/dist/cli/commands/index.js.map +1 -1
  30. package/dist/cli/commands/init.d.ts +2 -0
  31. package/dist/cli/commands/init.d.ts.map +1 -1
  32. package/dist/cli/commands/init.js +251 -1
  33. package/dist/cli/commands/init.js.map +1 -1
  34. package/dist/cli/commands/knowledge.d.ts +41 -0
  35. package/dist/cli/commands/knowledge.d.ts.map +1 -0
  36. package/dist/cli/commands/knowledge.js +195 -0
  37. package/dist/cli/commands/knowledge.js.map +1 -0
  38. package/dist/cli/commands/propose.d.ts +18 -0
  39. package/dist/cli/commands/propose.d.ts.map +1 -0
  40. package/dist/cli/commands/propose.js +331 -0
  41. package/dist/cli/commands/propose.js.map +1 -0
  42. package/dist/cli/commands/report.d.ts +1 -1
  43. package/dist/cli/commands/report.d.ts.map +1 -1
  44. package/dist/cli/commands/report.js +57 -70
  45. package/dist/cli/commands/report.js.map +1 -1
  46. package/dist/cli/commands/security.d.ts.map +1 -1
  47. package/dist/cli/commands/security.js +57 -43
  48. package/dist/cli/commands/security.js.map +1 -1
  49. package/dist/cli/commands/sync-docs.d.ts +21 -0
  50. package/dist/cli/commands/sync-docs.d.ts.map +1 -0
  51. package/dist/cli/commands/sync-docs.js +564 -0
  52. package/dist/cli/commands/sync-docs.js.map +1 -0
  53. package/dist/cli/commands/traces.d.ts +15 -0
  54. package/dist/cli/commands/traces.d.ts.map +1 -0
  55. package/dist/cli/commands/traces.js +167 -0
  56. package/dist/cli/commands/traces.js.map +1 -0
  57. package/dist/constraints/index.d.ts +1 -2
  58. package/dist/constraints/index.d.ts.map +1 -1
  59. package/dist/constraints/index.js +1 -2
  60. package/dist/constraints/index.js.map +1 -1
  61. package/dist/constraints/lifecycle-runner.d.ts +52 -0
  62. package/dist/constraints/lifecycle-runner.d.ts.map +1 -0
  63. package/dist/constraints/lifecycle-runner.js +151 -0
  64. package/dist/constraints/lifecycle-runner.js.map +1 -0
  65. package/dist/constraints/registry.d.ts +2 -40
  66. package/dist/constraints/registry.d.ts.map +1 -1
  67. package/dist/constraints/registry.js +20 -59
  68. package/dist/constraints/registry.js.map +1 -1
  69. package/dist/core/constraints/checker.d.ts +16 -0
  70. package/dist/core/constraints/checker.d.ts.map +1 -1
  71. package/dist/core/constraints/checker.js +173 -8
  72. package/dist/core/constraints/checker.js.map +1 -1
  73. package/dist/core/constraints/default-executors.d.ts +10 -0
  74. package/dist/core/constraints/default-executors.d.ts.map +1 -0
  75. package/dist/core/constraints/default-executors.js +120 -0
  76. package/dist/core/constraints/default-executors.js.map +1 -0
  77. package/dist/core/constraints/definitions.d.ts.map +1 -1
  78. package/dist/core/constraints/definitions.js +84 -0
  79. package/dist/core/constraints/definitions.js.map +1 -1
  80. package/dist/core/constraints/interceptor.d.ts.map +1 -1
  81. package/dist/core/constraints/interceptor.js +3 -0
  82. package/dist/core/constraints/interceptor.js.map +1 -1
  83. package/dist/core/session/clean-state.d.ts.map +1 -1
  84. package/dist/core/session/clean-state.js +5 -1
  85. package/dist/core/session/clean-state.js.map +1 -1
  86. package/dist/extensions/long-running/constraints.d.ts +38 -0
  87. package/dist/extensions/long-running/constraints.d.ts.map +1 -0
  88. package/dist/extensions/long-running/constraints.js +153 -0
  89. package/dist/extensions/long-running/constraints.js.map +1 -0
  90. package/dist/extensions/long-running/index.d.ts +30 -0
  91. package/dist/extensions/long-running/index.d.ts.map +1 -0
  92. package/dist/extensions/long-running/index.js +50 -0
  93. package/dist/extensions/long-running/index.js.map +1 -0
  94. package/dist/extensions/long-running/types.d.ts +154 -0
  95. package/dist/extensions/long-running/types.d.ts.map +1 -0
  96. package/dist/extensions/long-running/types.js +9 -0
  97. package/dist/extensions/long-running/types.js.map +1 -0
  98. package/dist/governance/executor.d.ts +45 -0
  99. package/dist/governance/executor.d.ts.map +1 -0
  100. package/dist/governance/executor.js +237 -0
  101. package/dist/governance/executor.js.map +1 -0
  102. package/dist/governance/index.d.ts +9 -0
  103. package/dist/governance/index.d.ts.map +1 -0
  104. package/dist/governance/index.js +13 -0
  105. package/dist/governance/index.js.map +1 -0
  106. package/dist/governance/types.d.ts +46 -0
  107. package/dist/governance/types.d.ts.map +1 -0
  108. package/dist/governance/types.js +9 -0
  109. package/dist/governance/types.js.map +1 -0
  110. package/dist/index.d.ts +19 -5
  111. package/dist/index.d.ts.map +1 -1
  112. package/dist/index.js +22 -11
  113. package/dist/index.js.map +1 -1
  114. package/dist/knowledge/store.d.ts.map +1 -1
  115. package/dist/knowledge/store.js +3 -1
  116. package/dist/knowledge/store.js.map +1 -1
  117. package/dist/monitoring/constraint-doctor.d.ts +16 -3
  118. package/dist/monitoring/constraint-doctor.d.ts.map +1 -1
  119. package/dist/monitoring/constraint-doctor.js +84 -9
  120. package/dist/monitoring/constraint-doctor.js.map +1 -1
  121. package/dist/presets/long-running.d.ts +33 -0
  122. package/dist/presets/long-running.d.ts.map +1 -0
  123. package/dist/presets/long-running.js +52 -0
  124. package/dist/presets/long-running.js.map +1 -0
  125. package/dist/tools/definitions/core/code/fingerprint.sh +273 -0
  126. package/dist/tools/definitions/core/code/fingerprint.yml +72 -0
  127. package/dist/tools/definitions/core/code/parse.yml +68 -0
  128. package/dist/tools/definitions/core/code/register-language.sh +475 -0
  129. package/dist/tools/definitions/core/code/register-language.yml +74 -0
  130. package/dist/tools/definitions/core/docker/build.yml +73 -0
  131. package/dist/tools/definitions/core/docker/run.yml +81 -0
  132. package/dist/tools/definitions/core/file/copy.yml +88 -0
  133. package/dist/tools/definitions/core/file/read.yml +69 -0
  134. package/dist/tools/definitions/core/file/write.yml +75 -0
  135. package/dist/tools/definitions/core/git/branch.yml +61 -0
  136. package/dist/tools/definitions/core/git/cleanup-worktree.yml +50 -0
  137. package/dist/tools/definitions/core/git/clone.yml +69 -0
  138. package/dist/tools/definitions/core/git/commit.yml +65 -0
  139. package/dist/tools/definitions/core/git/push.yml +79 -0
  140. package/dist/tools/definitions/core/git/worktree.yml +96 -0
  141. package/dist/tools/definitions/core/notification/notify.sh +152 -0
  142. package/dist/tools/definitions/core/notification/notify.yml +60 -0
  143. package/dist/tools/definitions/core/npm/build.yml +75 -0
  144. package/dist/tools/definitions/core/npm/install.yml +58 -0
  145. package/dist/tools/definitions/core/npm/test.yml +75 -0
  146. package/dist/tools/definitions/core/validation/check-reuse.yml +170 -0
  147. package/dist/tools/definitions/core/validation/validate-handlers.yml +118 -0
  148. package/dist/tools/definitions/core/validation/validate-readme-stats.yml +155 -0
  149. package/dist/tools/definitions/core/validation/validate-yaml-syntax.yml +134 -0
  150. package/dist/tools/definitions/definitions/core/code/fingerprint.sh +273 -0
  151. package/dist/tools/definitions/definitions/core/code/fingerprint.yml +72 -0
  152. package/dist/tools/definitions/definitions/core/code/parse.yml +68 -0
  153. package/dist/tools/definitions/definitions/core/code/register-language.sh +475 -0
  154. package/dist/tools/definitions/definitions/core/code/register-language.yml +74 -0
  155. package/dist/tools/definitions/definitions/core/docker/build.yml +73 -0
  156. package/dist/tools/definitions/definitions/core/docker/run.yml +81 -0
  157. package/dist/tools/definitions/definitions/core/file/copy.yml +88 -0
  158. package/dist/tools/definitions/definitions/core/file/read.yml +69 -0
  159. package/dist/tools/definitions/definitions/core/file/write.yml +75 -0
  160. package/dist/tools/definitions/definitions/core/git/branch.yml +61 -0
  161. package/dist/tools/definitions/definitions/core/git/cleanup-worktree.yml +50 -0
  162. package/dist/tools/definitions/definitions/core/git/clone.yml +69 -0
  163. package/dist/tools/definitions/definitions/core/git/commit.yml +65 -0
  164. package/dist/tools/definitions/definitions/core/git/push.yml +79 -0
  165. package/dist/tools/definitions/definitions/core/git/worktree.yml +96 -0
  166. package/dist/tools/definitions/definitions/core/notification/notify.sh +152 -0
  167. package/dist/tools/definitions/definitions/core/notification/notify.yml +60 -0
  168. package/dist/tools/definitions/definitions/core/npm/build.yml +75 -0
  169. package/dist/tools/definitions/definitions/core/npm/install.yml +58 -0
  170. package/dist/tools/definitions/definitions/core/npm/test.yml +75 -0
  171. package/dist/tools/definitions/definitions/core/validation/check-reuse.yml +170 -0
  172. package/dist/tools/definitions/definitions/core/validation/validate-handlers.yml +118 -0
  173. package/dist/tools/definitions/definitions/core/validation/validate-readme-stats.yml +155 -0
  174. package/dist/tools/definitions/definitions/core/validation/validate-yaml-syntax.yml +134 -0
  175. package/dist/tools/definitions/definitions/ext/browser/browser-automate.sh +255 -0
  176. package/dist/tools/definitions/definitions/ext/browser/browser-automate.yml +166 -0
  177. package/dist/tools/definitions/definitions/ext/browser/browser-close.sh +104 -0
  178. package/dist/tools/definitions/definitions/ext/browser/browser-close.yml +55 -0
  179. package/dist/tools/definitions/definitions/ext/browser/browser-mcp-debug.sh +682 -0
  180. package/dist/tools/definitions/definitions/ext/browser/browser-mcp-debug.yml +167 -0
  181. package/dist/tools/definitions/definitions/ext/browser/browser-start.sh +101 -0
  182. package/dist/tools/definitions/definitions/ext/browser/browser-start.yml +62 -0
  183. package/dist/tools/definitions/definitions/registry.json +795 -0
  184. package/dist/tools/definitions/definitions/std/README.md +350 -0
  185. package/dist/tools/definitions/definitions/std/analysis/analyze-codebase.yml +72 -0
  186. package/dist/tools/definitions/definitions/std/analysis/analyze-diff.yml +182 -0
  187. package/dist/tools/definitions/definitions/std/analysis/analyze-git-diff.yml +70 -0
  188. package/dist/tools/definitions/definitions/std/analysis/analyze-impact.yml +78 -0
  189. package/dist/tools/definitions/definitions/std/analysis/analyze-requirements.yml +105 -0
  190. package/dist/tools/definitions/definitions/std/analysis/brainstorm-options.yml +106 -0
  191. package/dist/tools/definitions/definitions/std/analysis/build-graph.yml +154 -0
  192. package/dist/tools/definitions/definitions/std/analysis/clarify-requirements.yml +90 -0
  193. package/dist/tools/definitions/definitions/std/analysis/detect-context.yml +109 -0
  194. package/dist/tools/definitions/definitions/std/analysis/detect-layers.yml +125 -0
  195. package/dist/tools/definitions/definitions/std/analysis/generate-tour.yml +102 -0
  196. package/dist/tools/definitions/definitions/std/analysis/search-enhance.yml +105 -0
  197. package/dist/tools/definitions/definitions/std/backlog/add.yml +51 -0
  198. package/dist/tools/definitions/definitions/std/backlog/decide.yml +39 -0
  199. package/dist/tools/definitions/definitions/std/backlog/github-sync.yml +161 -0
  200. package/dist/tools/definitions/definitions/std/backlog/list.yml +53 -0
  201. package/dist/tools/definitions/definitions/std/backlog/load.yml +46 -0
  202. package/dist/tools/definitions/definitions/std/backlog/resolve.yml +37 -0
  203. package/dist/tools/definitions/definitions/std/backlog/update.yml +42 -0
  204. package/dist/tools/definitions/definitions/std/bugfix/diagnose.yml +68 -0
  205. package/dist/tools/definitions/definitions/std/bugfix/fix.yml +66 -0
  206. package/dist/tools/definitions/definitions/std/bugfix/verify.yml +69 -0
  207. package/dist/tools/definitions/definitions/std/constraint/check-decomposition.yml +103 -0
  208. package/dist/tools/definitions/definitions/std/constraint/check-feature-list.yml +77 -0
  209. package/dist/tools/definitions/definitions/std/constraint/check-progress.yml +97 -0
  210. package/dist/tools/definitions/definitions/std/constraint/generate-report.yml +147 -0
  211. package/dist/tools/definitions/definitions/std/deploy/commit-push.yml +33 -0
  212. package/dist/tools/definitions/definitions/std/deploy/deploy-backend.yml +37 -0
  213. package/dist/tools/definitions/definitions/std/deploy/deploy-frontend.yml +37 -0
  214. package/dist/tools/definitions/definitions/std/deploy/rollback.yml +148 -0
  215. package/dist/tools/definitions/definitions/std/design/analyze-architecture-impact.yml +113 -0
  216. package/dist/tools/definitions/definitions/std/design/design-api.yml +55 -0
  217. package/dist/tools/definitions/definitions/std/design/design-architecture.yml +97 -0
  218. package/dist/tools/definitions/definitions/std/design/design-db.yml +81 -0
  219. package/dist/tools/definitions/definitions/std/design/generate-spec.yml +182 -0
  220. package/dist/tools/definitions/definitions/std/development/develop-api.yml +85 -0
  221. package/dist/tools/definitions/definitions/std/development/develop-backend.yml +88 -0
  222. package/dist/tools/definitions/definitions/std/development/develop-frontend.yml +87 -0
  223. package/dist/tools/definitions/definitions/std/development/develop-shared-types.yml +74 -0
  224. package/dist/tools/definitions/definitions/std/development/develop-task.yml +122 -0
  225. package/dist/tools/definitions/definitions/std/development/develop-tests.yml +76 -0
  226. package/dist/tools/definitions/definitions/std/development/execute-batch.yml +152 -0
  227. package/dist/tools/definitions/definitions/std/development/fix-issues.yml +100 -0
  228. package/dist/tools/definitions/definitions/std/development/implement-task.yml +124 -0
  229. package/dist/tools/definitions/definitions/std/development/review-fix-cycle.yml +232 -0
  230. package/dist/tools/definitions/definitions/std/evolution/implement.yml +125 -0
  231. package/dist/tools/definitions/definitions/std/evolution/prioritize.yml +112 -0
  232. package/dist/tools/definitions/definitions/std/evolution/report-gap.yml +166 -0
  233. package/dist/tools/definitions/definitions/std/file/read.yml +21 -0
  234. package/dist/tools/definitions/definitions/std/governance/aggregate-opinions.sh +201 -0
  235. package/dist/tools/definitions/definitions/std/governance/aggregate-opinions.yml +79 -0
  236. package/dist/tools/definitions/definitions/std/governance/audit-task.yml +178 -0
  237. package/dist/tools/definitions/definitions/std/governance/cast-vote.yml +129 -0
  238. package/dist/tools/definitions/definitions/std/governance/collect-issues.yml +16 -0
  239. package/dist/tools/definitions/definitions/std/governance/create-signed-document.yml +23 -0
  240. package/dist/tools/definitions/definitions/std/governance/create-voting-session.yml +101 -0
  241. package/dist/tools/definitions/definitions/std/governance/define-stance.sh +243 -0
  242. package/dist/tools/definitions/definitions/std/governance/define-stance.yml +82 -0
  243. package/dist/tools/definitions/definitions/std/governance/generate-review-report.yml +23 -0
  244. package/dist/tools/definitions/definitions/std/governance/impeach.yml +179 -0
  245. package/dist/tools/definitions/definitions/std/governance/multi-stance-review.yml +154 -0
  246. package/dist/tools/definitions/definitions/std/governance/prepare-artifact.yml +20 -0
  247. package/dist/tools/definitions/definitions/std/governance/review-spec-approval.yml +262 -0
  248. package/dist/tools/definitions/definitions/std/governance/rollback.yml +186 -0
  249. package/dist/tools/definitions/definitions/std/governance/stance-review.yml +149 -0
  250. package/dist/tools/definitions/definitions/std/governance/track-effect.yml +199 -0
  251. package/dist/tools/definitions/definitions/std/governance/vote-tally.yml +144 -0
  252. package/dist/tools/definitions/definitions/std/patch/execute.yml +51 -0
  253. package/dist/tools/definitions/definitions/std/planning/generate-tasks.yml +36 -0
  254. package/dist/tools/definitions/definitions/std/planning/load-tasks.yml +44 -0
  255. package/dist/tools/definitions/definitions/std/planning/split-batch.yml +481 -0
  256. package/dist/tools/definitions/definitions/std/planning/split-tasks.yml +359 -0
  257. package/dist/tools/definitions/definitions/std/planning/update-tasks.yml +51 -0
  258. package/dist/tools/definitions/definitions/std/planning/validate-tasks.yml +46 -0
  259. package/dist/tools/definitions/definitions/std/project/decide-next-workflow.yml +38 -0
  260. package/dist/tools/definitions/definitions/std/project/load-state.yml +31 -0
  261. package/dist/tools/definitions/definitions/std/project/save-state.yml +32 -0
  262. package/dist/tools/definitions/definitions/std/quality/check-quality.yml +241 -0
  263. package/dist/tools/definitions/definitions/std/quality/debug-systematic.yml +163 -0
  264. package/dist/tools/definitions/definitions/std/quality/handle-feedback.yml +108 -0
  265. package/dist/tools/definitions/definitions/std/quality/review-code.yml +128 -0
  266. package/dist/tools/definitions/definitions/std/quality/review-spec.yml +140 -0
  267. package/dist/tools/definitions/definitions/std/quality/review-task.yml +190 -0
  268. package/dist/tools/definitions/definitions/std/quality/run-tests.yml +80 -0
  269. package/dist/tools/definitions/definitions/std/quick/analyze.yml +56 -0
  270. package/dist/tools/definitions/definitions/std/quick/implement.yml +67 -0
  271. package/dist/tools/definitions/definitions/std/quick/verify.yml +71 -0
  272. package/dist/tools/definitions/definitions/std/verification/verify_completion.yml +113 -0
  273. package/dist/tools/definitions/definitions/std/verification/wait-condition.yml +107 -0
  274. package/dist/tools/definitions/ext/browser/browser-automate.sh +255 -0
  275. package/dist/tools/definitions/ext/browser/browser-automate.yml +166 -0
  276. package/dist/tools/definitions/ext/browser/browser-close.sh +104 -0
  277. package/dist/tools/definitions/ext/browser/browser-close.yml +55 -0
  278. package/dist/tools/definitions/ext/browser/browser-mcp-debug.sh +682 -0
  279. package/dist/tools/definitions/ext/browser/browser-mcp-debug.yml +167 -0
  280. package/dist/tools/definitions/ext/browser/browser-start.sh +101 -0
  281. package/dist/tools/definitions/ext/browser/browser-start.yml +62 -0
  282. package/dist/tools/definitions/registry.json +795 -0
  283. package/dist/tools/definitions/std/README.md +350 -0
  284. package/dist/tools/definitions/std/analysis/analyze-codebase.yml +72 -0
  285. package/dist/tools/definitions/std/analysis/analyze-diff.yml +182 -0
  286. package/dist/tools/definitions/std/analysis/analyze-git-diff.yml +70 -0
  287. package/dist/tools/definitions/std/analysis/analyze-impact.yml +78 -0
  288. package/dist/tools/definitions/std/analysis/analyze-requirements.yml +105 -0
  289. package/dist/tools/definitions/std/analysis/brainstorm-options.yml +106 -0
  290. package/dist/tools/definitions/std/analysis/build-graph.yml +154 -0
  291. package/dist/tools/definitions/std/analysis/clarify-requirements.yml +90 -0
  292. package/dist/tools/definitions/std/analysis/detect-context.yml +109 -0
  293. package/dist/tools/definitions/std/analysis/detect-layers.yml +125 -0
  294. package/dist/tools/definitions/std/analysis/generate-tour.yml +102 -0
  295. package/dist/tools/definitions/std/analysis/search-enhance.yml +105 -0
  296. package/dist/tools/definitions/std/backlog/add.yml +51 -0
  297. package/dist/tools/definitions/std/backlog/decide.yml +39 -0
  298. package/dist/tools/definitions/std/backlog/github-sync.yml +161 -0
  299. package/dist/tools/definitions/std/backlog/list.yml +53 -0
  300. package/dist/tools/definitions/std/backlog/load.yml +46 -0
  301. package/dist/tools/definitions/std/backlog/resolve.yml +37 -0
  302. package/dist/tools/definitions/std/backlog/update.yml +42 -0
  303. package/dist/tools/definitions/std/bugfix/diagnose.yml +68 -0
  304. package/dist/tools/definitions/std/bugfix/fix.yml +66 -0
  305. package/dist/tools/definitions/std/bugfix/verify.yml +69 -0
  306. package/dist/tools/definitions/std/constraint/check-decomposition.yml +103 -0
  307. package/dist/tools/definitions/std/constraint/check-feature-list.yml +77 -0
  308. package/dist/tools/definitions/std/constraint/check-progress.yml +97 -0
  309. package/dist/tools/definitions/std/constraint/generate-report.yml +147 -0
  310. package/dist/tools/definitions/std/deploy/commit-push.yml +33 -0
  311. package/dist/tools/definitions/std/deploy/deploy-backend.yml +37 -0
  312. package/dist/tools/definitions/std/deploy/deploy-frontend.yml +37 -0
  313. package/dist/tools/definitions/std/deploy/rollback.yml +148 -0
  314. package/dist/tools/definitions/std/design/analyze-architecture-impact.yml +113 -0
  315. package/dist/tools/definitions/std/design/design-api.yml +55 -0
  316. package/dist/tools/definitions/std/design/design-architecture.yml +97 -0
  317. package/dist/tools/definitions/std/design/design-db.yml +81 -0
  318. package/dist/tools/definitions/std/design/generate-spec.yml +182 -0
  319. package/dist/tools/definitions/std/development/develop-api.yml +85 -0
  320. package/dist/tools/definitions/std/development/develop-backend.yml +88 -0
  321. package/dist/tools/definitions/std/development/develop-frontend.yml +87 -0
  322. package/dist/tools/definitions/std/development/develop-shared-types.yml +74 -0
  323. package/dist/tools/definitions/std/development/develop-task.yml +122 -0
  324. package/dist/tools/definitions/std/development/develop-tests.yml +76 -0
  325. package/dist/tools/definitions/std/development/execute-batch.yml +152 -0
  326. package/dist/tools/definitions/std/development/fix-issues.yml +100 -0
  327. package/dist/tools/definitions/std/development/implement-task.yml +124 -0
  328. package/dist/tools/definitions/std/development/review-fix-cycle.yml +232 -0
  329. package/dist/tools/definitions/std/evolution/implement.yml +125 -0
  330. package/dist/tools/definitions/std/evolution/prioritize.yml +112 -0
  331. package/dist/tools/definitions/std/evolution/report-gap.yml +166 -0
  332. package/dist/tools/definitions/std/file/read.yml +21 -0
  333. package/dist/tools/definitions/std/governance/aggregate-opinions.sh +201 -0
  334. package/dist/tools/definitions/std/governance/aggregate-opinions.yml +79 -0
  335. package/dist/tools/definitions/std/governance/audit-task.yml +178 -0
  336. package/dist/tools/definitions/std/governance/cast-vote.yml +129 -0
  337. package/dist/tools/definitions/std/governance/collect-issues.yml +16 -0
  338. package/dist/tools/definitions/std/governance/create-signed-document.yml +23 -0
  339. package/dist/tools/definitions/std/governance/create-voting-session.yml +101 -0
  340. package/dist/tools/definitions/std/governance/define-stance.sh +243 -0
  341. package/dist/tools/definitions/std/governance/define-stance.yml +82 -0
  342. package/dist/tools/definitions/std/governance/generate-review-report.yml +23 -0
  343. package/dist/tools/definitions/std/governance/impeach.yml +179 -0
  344. package/dist/tools/definitions/std/governance/multi-stance-review.yml +154 -0
  345. package/dist/tools/definitions/std/governance/prepare-artifact.yml +20 -0
  346. package/dist/tools/definitions/std/governance/review-spec-approval.yml +262 -0
  347. package/dist/tools/definitions/std/governance/rollback.yml +186 -0
  348. package/dist/tools/definitions/std/governance/stance-review.yml +149 -0
  349. package/dist/tools/definitions/std/governance/track-effect.yml +199 -0
  350. package/dist/tools/definitions/std/governance/vote-tally.yml +144 -0
  351. package/dist/tools/definitions/std/patch/execute.yml +51 -0
  352. package/dist/tools/definitions/std/planning/generate-tasks.yml +36 -0
  353. package/dist/tools/definitions/std/planning/load-tasks.yml +44 -0
  354. package/dist/tools/definitions/std/planning/split-batch.yml +481 -0
  355. package/dist/tools/definitions/std/planning/split-tasks.yml +359 -0
  356. package/dist/tools/definitions/std/planning/update-tasks.yml +51 -0
  357. package/dist/tools/definitions/std/planning/validate-tasks.yml +46 -0
  358. package/dist/tools/definitions/std/project/decide-next-workflow.yml +38 -0
  359. package/dist/tools/definitions/std/project/load-state.yml +31 -0
  360. package/dist/tools/definitions/std/project/save-state.yml +32 -0
  361. package/dist/tools/definitions/std/quality/check-quality.yml +241 -0
  362. package/dist/tools/definitions/std/quality/debug-systematic.yml +163 -0
  363. package/dist/tools/definitions/std/quality/handle-feedback.yml +108 -0
  364. package/dist/tools/definitions/std/quality/review-code.yml +128 -0
  365. package/dist/tools/definitions/std/quality/review-spec.yml +140 -0
  366. package/dist/tools/definitions/std/quality/review-task.yml +190 -0
  367. package/dist/tools/definitions/std/quality/run-tests.yml +80 -0
  368. package/dist/tools/definitions/std/quick/analyze.yml +56 -0
  369. package/dist/tools/definitions/std/quick/implement.yml +67 -0
  370. package/dist/tools/definitions/std/quick/verify.yml +71 -0
  371. package/dist/tools/definitions/std/verification/verify_completion.yml +113 -0
  372. package/dist/tools/definitions/std/verification/wait-condition.yml +107 -0
  373. package/dist/tools/index.d.ts +2 -0
  374. package/dist/tools/index.d.ts.map +1 -1
  375. package/dist/tools/index.js +2 -0
  376. package/dist/tools/index.js.map +1 -1
  377. package/dist/tools/loader.d.ts +21 -0
  378. package/dist/tools/loader.d.ts.map +1 -0
  379. package/dist/tools/loader.js +199 -0
  380. package/dist/tools/loader.js.map +1 -0
  381. package/dist/tools/paths.d.ts +9 -0
  382. package/dist/tools/paths.d.ts.map +1 -0
  383. package/dist/tools/paths.js +51 -0
  384. package/dist/tools/paths.js.map +1 -0
  385. package/dist/types/constraint.d.ts +4 -0
  386. package/dist/types/constraint.d.ts.map +1 -1
  387. package/dist/types/constraint.js.map +1 -1
  388. package/dist/types/project-config.d.ts +57 -0
  389. package/dist/types/project-config.d.ts.map +1 -1
  390. package/dist/types/session.d.ts +6 -0
  391. package/dist/types/session.d.ts.map +1 -1
  392. package/dist/utils/exec.d.ts.map +1 -1
  393. package/dist/utils/exec.js +37 -1
  394. package/dist/utils/exec.js.map +1 -1
  395. package/package.json +2 -2
@@ -0,0 +1,155 @@
1
+ # validate-readme-stats.yml - README 统计一致性检查
2
+ # ============================================================================
3
+ # 能力类型: validation(工具型)
4
+ # 执行方式: 纯脚本,检查统计数字
5
+ # 用途: 验证 README 中的统计数据与实际文件数量一致
6
+ # ============================================================================
7
+
8
+ name: validate-readme-stats
9
+ description: 检查 README 统计数据是否与实际文件数量一致
10
+ category: validation
11
+ version: 1.0.0
12
+
13
+ # 铁律
14
+ iron_law:
15
+ rule: "README STATS MUST REFLECT REALITY"
16
+ message: "README 中的统计数据必须与实际文件数量一致"
17
+
18
+ # 输入
19
+ input:
20
+ readme_path:
21
+ type: path
22
+ required: false
23
+ default: "README.md"
24
+ description: README 文件路径
25
+
26
+ tools_dir:
27
+ type: path
28
+ required: false
29
+ default: "tools"
30
+ description: tools 目录路径
31
+
32
+ steps_dir:
33
+ type: path
34
+ required: false
35
+ default: "steps"
36
+ description: steps 目录路径
37
+
38
+ workflows_dir:
39
+ type: path
40
+ required: false
41
+ default: "workflows"
42
+ description: workflows 目录路径
43
+
44
+ # 输出
45
+ output:
46
+ actual_tools:
47
+ type: number
48
+ description: 实际 tools 数量
49
+
50
+ actual_steps:
51
+ type: number
52
+ description: 实际 steps 数量
53
+
54
+ actual_workflows:
55
+ type: number
56
+ description: 实际 workflows 数量
57
+
58
+ readme_tools:
59
+ type: number
60
+ description: README 中记录的 tools 数量
61
+
62
+ readme_steps:
63
+ type: number
64
+ description: README 中记录的 steps 数量
65
+
66
+ readme_workflows:
67
+ type: number
68
+ description: README 中记录的 workflows 数量
69
+
70
+ passed:
71
+ type: boolean
72
+ description: 是否全部一致
73
+
74
+ # 执行脚本
75
+ script: |
76
+ #!/bin/bash
77
+ set -euo pipefail
78
+
79
+ README_PATH="{{readme_path}}"
80
+ TOOLS_DIR="{{tools_dir}}"
81
+ STEPS_DIR="{{steps_dir}}"
82
+ WORKFLOWS_DIR="{{workflows_dir}}"
83
+
84
+ echo "🔍 检查 README 统计一致性"
85
+ echo " README: $README_PATH"
86
+ echo ""
87
+
88
+ # 计算实际数量
89
+ ACTUAL_TOOLS=$(find "$TOOLS_DIR" -name "*.yml" -o -name "*.yaml" 2>/dev/null | grep -v README | wc -l)
90
+ ACTUAL_STEPS=$(find "$STEPS_DIR" -name "*.yml" -o -name "*.yaml" 2>/dev/null | grep -v README | wc -l)
91
+ ACTUAL_WORKFLOWS=$(find "$WORKFLOWS_DIR" -name "*.yml" -o -name "*.yaml" 2>/dev/null | wc -l)
92
+
93
+ echo "📊 实际统计:"
94
+ echo " Tools: $ACTUAL_TOOLS"
95
+ echo " Steps: $ACTUAL_STEPS"
96
+ echo " Workflows: $ACTUAL_WORKFLOWS"
97
+ echo ""
98
+
99
+ # 从 README 提取统计
100
+ # 格式: | **Tools** | 25 | ... |
101
+ README_TOOLS=$(grep -E "\*\*Tools\*\*" "$README_PATH" | grep -oE '\|[ ]*[0-9]+' | head -1 | grep -oE '[0-9]+' || echo "0")
102
+ README_STEPS=$(grep -E "\*\*Steps\*\*" "$README_PATH" | grep -oE '\|[ ]*[0-9]+' | head -1 | grep -oE '[0-9]+' || echo "0")
103
+ README_WORKFLOWS=$(grep -E "\*\*Workflows\*\*" "$README_PATH" | grep -oE '\|[ ]*[0-9]+' | head -1 | grep -oE '[0-9]+' || echo "0")
104
+
105
+ echo "📝 README 统计:"
106
+ echo " Tools: $README_TOOLS"
107
+ echo " Steps: $README_STEPS"
108
+ echo " Workflows: $README_WORKFLOWS"
109
+ echo ""
110
+
111
+ # 对比
112
+ ERRORS=0
113
+
114
+ echo "🔍 对比结果:"
115
+
116
+ if [ "$ACTUAL_TOOLS" = "$README_TOOLS" ]; then
117
+ echo " ✅ Tools: $ACTUAL_TOOLS = $README_TOOLS"
118
+ else
119
+ echo " ❌ Tools: 实际=$ACTUAL_TOOLS, README=$README_TOOLS"
120
+ ERRORS=$((ERRORS + 1))
121
+ fi
122
+
123
+ if [ "$ACTUAL_STEPS" = "$README_STEPS" ]; then
124
+ echo " ✅ Steps: $ACTUAL_STEPS = $README_STEPS"
125
+ else
126
+ echo " ❌ Steps: 实际=$ACTUAL_STEPS, README=$README_STEPS"
127
+ ERRORS=$((ERRORS + 1))
128
+ fi
129
+
130
+ if [ "$ACTUAL_WORKFLOWS" = "$README_WORKFLOWS" ]; then
131
+ echo " ✅ Workflows: $ACTUAL_WORKFLOWS = $README_WORKFLOWS"
132
+ else
133
+ echo " ❌ Workflows: 实际=$ACTUAL_WORKFLOWS, README=$README_WORKFLOWS"
134
+ ERRORS=$((ERRORS + 1))
135
+ fi
136
+
137
+ echo ""
138
+
139
+ if [ $ERRORS -gt 0 ]; then
140
+ echo "================================"
141
+ echo "❌ 发现 $ERRORS 处不一致"
142
+ echo ""
143
+ echo "请更新 README.md 中的统计数据:"
144
+ echo ""
145
+ echo "| 层级 | 数量 |"
146
+ echo "|------|------|"
147
+ echo "| **Tools** | $ACTUAL_TOOLS |"
148
+ echo "| **Steps** | $ACTUAL_STEPS |"
149
+ echo "| **Workflows** | $ACTUAL_WORKFLOWS |"
150
+ echo "================================"
151
+ exit 1
152
+ fi
153
+
154
+ echo "✅ README 统计数据与实际一致"
155
+ exit 0
@@ -0,0 +1,134 @@
1
+ # validate-yaml-syntax.yml - YAML 语法检查
2
+ # ============================================================================
3
+ # 能力类型: validation(工具型)
4
+ # 执行方式: 纯脚本,检查 YAML 语法
5
+ # 用途: 验证所有 YAML 文件语法正确
6
+ # ============================================================================
7
+
8
+ name: validate-yaml-syntax
9
+ description: 检查所有 YAML 文件语法正确性
10
+ category: validation
11
+ version: 1.0.0
12
+
13
+ # 铁律
14
+ iron_law:
15
+ rule: "YAML MUST BE VALID"
16
+ message: "所有 YAML 文件必须通过语法检查"
17
+
18
+ # 输入
19
+ input:
20
+ search_dirs:
21
+ type: array
22
+ required: false
23
+ default: ["tools", "steps", "workflows"]
24
+ description: 要检查的目录列表
25
+
26
+ exclude_patterns:
27
+ type: array
28
+ required: false
29
+ default: ["README"]
30
+ description: 排除的模式列表
31
+
32
+ # 输出
33
+ output:
34
+ total_files:
35
+ type: number
36
+ description: 检查的文件总数
37
+
38
+ valid_files:
39
+ type: number
40
+ description: 有效的文件数量
41
+
42
+ invalid_files:
43
+ type: array
44
+ description: 无效文件列表及错误
45
+
46
+ passed:
47
+ type: boolean
48
+ description: 是否全部通过
49
+
50
+ # 执行脚本
51
+ script: |
52
+ #!/bin/bash
53
+ set -euo pipefail
54
+
55
+ echo "🔍 检查 YAML 语法"
56
+ echo ""
57
+
58
+ # 检查是否安装了 yamllint
59
+ if ! command -v yamllint &> /dev/null; then
60
+ echo "⚠️ yamllint 未安装,使用基础检查"
61
+ USE_YAMLLINT=false
62
+ else
63
+ USE_YAMLLINT=true
64
+ fi
65
+
66
+ TOTAL=0
67
+ VALID=0
68
+ INVALID=()
69
+
70
+ # 检查函数
71
+ check_yaml() {
72
+ local file="$1"
73
+
74
+ if $USE_YAMLLINT; then
75
+ # 使用 yamllint
76
+ if yamllint -d "{extends: relaxed, rules: {line-length: disable}}" "$file" > /dev/null 2>&1; then
77
+ return 0
78
+ else
79
+ return 1
80
+ fi
81
+ else
82
+ # 使用 Python yaml 模块
83
+ if python3 -c "import yaml; yaml.safe_load(open('$file'))" 2>/dev/null; then
84
+ return 0
85
+ else
86
+ return 1
87
+ fi
88
+ fi
89
+ }
90
+
91
+ # 遍历目录
92
+ for dir in tools steps workflows; do
93
+ if [ -d "$dir" ]; then
94
+ for f in $(find "$dir" -name "*.yml" -o -name "*.yaml" 2>/dev/null | grep -v README | sort); do
95
+ TOTAL=$((TOTAL + 1))
96
+
97
+ if check_yaml "$f"; then
98
+ VALID=$((VALID + 1))
99
+ echo " ✅ $f"
100
+ else
101
+ INVALID+=("$f")
102
+ echo " ❌ $f"
103
+ # 显示错误详情
104
+ if $USE_YAMLLINT; then
105
+ yamllint -d "{extends: relaxed, rules: {line-length: disable}}" "$file" 2>&1 | head -5
106
+ else
107
+ python3 -c "import yaml; yaml.safe_load(open('$f'))" 2>&1 | head -3
108
+ fi
109
+ echo ""
110
+ fi
111
+ done
112
+ fi
113
+ done
114
+
115
+ echo ""
116
+ echo "================================"
117
+ echo "📊 统计:"
118
+ echo " 总计: $TOTAL 个文件"
119
+ echo " 有效: $VALID 个"
120
+ echo " 无效: ${#INVALID[@]} 个"
121
+ echo "================================"
122
+
123
+ if [ ${#INVALID[@]} -gt 0 ]; then
124
+ echo ""
125
+ echo "❌ 发现无效 YAML 文件:"
126
+ for f in "${INVALID[@]}"; do
127
+ echo " - $f"
128
+ done
129
+ exit 1
130
+ fi
131
+
132
+ echo ""
133
+ echo "✅ 所有 YAML 文件语法正确"
134
+ exit 0
@@ -0,0 +1,273 @@
1
+ #!/bin/bash
2
+ # fingerprint.sh - 代码结构指纹工具
3
+ # ============================================================================
4
+ # 功能:提取代码结构签名,区分"结构性变更"和"表面变更"
5
+ # 用途:增量分析、变更影响评估、代码审查优先级排序
6
+ # ============================================================================
7
+
8
+ set -e
9
+
10
+ # 参数
11
+ FILE_PATH="${1:-}"
12
+ PROJECT_PATH="${2:-.}"
13
+ COMPARE_WITH="${3:-previous}"
14
+
15
+ # 颜色输出
16
+ RED='\033[0;31m'
17
+ GREEN='\033[0;32m'
18
+ YELLOW='\033[1;33m'
19
+ BLUE='\033[0;34m'
20
+ NC='\033[0m'
21
+
22
+ log_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
23
+ log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
24
+ log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
25
+ log_debug() { echo -e "${BLUE}[DEBUG]${NC} $1"; }
26
+
27
+ # 显示帮助
28
+ show_help() {
29
+ cat << EOF
30
+ 代码结构指纹工具
31
+
32
+ 用法:
33
+ $0 <file_path> [project_path] [compare_with]
34
+
35
+ 参数:
36
+ file_path 文件路径(相对于项目根目录)
37
+ project_path 项目根路径(默认: 当前目录)
38
+ compare_with 对比目标(默认: previous)
39
+ - "previous" - 与上一个 commit 对比
40
+ - "base" - 与基准分支对比
41
+ - <commit_hash> - 具体的 commit
42
+
43
+ 输出:
44
+ JSON 格式的结构指纹和变更分析结果
45
+
46
+ 示例:
47
+ $0 src/utils.ts
48
+ $0 src/utils.ts /home/user/project previous
49
+ $0 src/api.ts . HEAD~3
50
+ EOF
51
+ exit 0
52
+ }
53
+
54
+ # 检查参数
55
+ if [[ "$1" == "-h" || "$1" == "--help" || -z "$FILE_PATH" ]]; then
56
+ show_help
57
+ fi
58
+
59
+ cd "$PROJECT_PATH"
60
+
61
+ # 检查文件是否存在
62
+ if [[ ! -f "$FILE_PATH" ]]; then
63
+ log_error "文件不存在: $FILE_PATH"
64
+ exit 1
65
+ fi
66
+
67
+ # 获取文件扩展名和语言
68
+ EXT="${FILE_PATH##*.}"
69
+ LANG_MAP=(
70
+ "ts:typescript"
71
+ "tsx:typescript"
72
+ "js:javascript"
73
+ "jsx:javascript"
74
+ "py:python"
75
+ "go:go"
76
+ "rs:rust"
77
+ "java:java"
78
+ "cpp:c++"
79
+ "c:c"
80
+ "rb:ruby"
81
+ "php:php"
82
+ "swift:swift"
83
+ "kt:kotlin"
84
+ "scala:scala"
85
+ "cs:c#"
86
+ "vue:vue"
87
+ "svelte:svelte"
88
+ "css:css"
89
+ "scss:scss"
90
+ "html:html"
91
+ "json:json"
92
+ "yaml:yaml"
93
+ "md:markdown"
94
+ "sh:bash"
95
+ )
96
+
97
+ get_language() {
98
+ local ext="$1"
99
+ for entry in "${LANG_MAP[@]}"; do
100
+ if [[ "$entry" == "$ext:"* ]]; then
101
+ echo "${entry#*:}"
102
+ return
103
+ fi
104
+ done
105
+ echo "unknown"
106
+ }
107
+
108
+ LANGUAGE=$(get_language "$EXT")
109
+
110
+ # 提取代码结构
111
+ extract_structure() {
112
+ local file="$1"
113
+ local lang="$2"
114
+
115
+ case "$lang" in
116
+ typescript|javascript)
117
+ # 提取函数、类、导入
118
+ local functions=$(grep -oE "(function\s+[a-zA-Z_][a-zA-Z0-9_]*|const\s+[a-zA-Z_][a-zA-Z0-9_]*\s*=\s*(async\s*)?\(|const\s+[a-zA-Z_][a-zA-Z0-9_]*\s*=\s*function)" "$file" 2>/dev/null | sed 's/function\s\|const\s\|=\s*(\|async\s//g' | tr -d '()' || echo "")
119
+ local classes=$(grep -oE "(class|interface|type)\s+[a-zA-Z_][a-zA-Z0-9_]*" "$file" 2>/dev/null | awk '{print $2}' || echo "")
120
+ local imports=$(grep -oE "import.*from\s+['\"][^'\"]+['\"]" "$file" 2>/dev/null | sed "s/.*from\s*['\"]//;s/['\"]//g" || echo "")
121
+ ;;
122
+ python)
123
+ local functions=$(grep -oE "^def\s+[a-zA-Z_][a-zA-Z0-9_]*" "$file" 2>/dev/null | sed 's/def\s//' || echo "")
124
+ local classes=$(grep -oE "^class\s+[a-zA-Z_][a-zA-Z0-9_]*" "$file" 2>/dev/null | sed 's/class\s//' || echo "")
125
+ local imports=$(grep -oE "^import\s+[a-zA-Z_][a-zA-Z0-9_.]*|^from\s+[a-zA-Z_][a-zA-Z0-9_.]*\s+import" "$file" 2>/dev/null | head -20 || echo "")
126
+ ;;
127
+ go)
128
+ local functions=$(grep -oE "func\s+(\([a-zA-Z_][a-zA-Z0-9_]*\s+\*?[a-zA-Z_][a-zA-Z0-9_]*\)\s+)?[a-zA-Z_][a-zA-Z0-9_]*" "$file" 2>/dev/null | sed 's/func\s\|func\s*(.*)\s//g' || echo "")
129
+ local classes=$(grep -oE "type\s+[a-zA-Z_][a-zA-Z0-9_]*\s+struct" "$file" 2>/dev/null | awk '{print $2}' || echo "")
130
+ local imports=$(grep -oE "import\s+[\"]?[^\"\n]+[\"]?" "$file" 2>/dev/null | sed 's/import\s\|\"//g' || echo "")
131
+ ;;
132
+ *)
133
+ # 通用提取:函数定义
134
+ local functions=$(grep -oE "(function|func|def|fn)\s+[a-zA-Z_][a-zA-Z0-9_]*" "$file" 2>/dev/null | awk '{print $2}' || echo "")
135
+ local classes=$(grep -oE "(class|struct|interface)\s+[a-zA-Z_][a-zA-Z0-9_]*" "$file" 2>/dev/null | awk '{print $2}' || echo "")
136
+ local imports=""
137
+ ;;
138
+ esac
139
+
140
+ # 输出 JSON
141
+ echo "{\"functions\":[$(echo "$functions" | tr '\n' ',' | sed 's/,$//' | while read f; do [[ -n "$f" ]] && echo "\"$f\""; done | tr '\n' ',' | sed 's/,$//')],\"classes\":[$(echo "$classes" | tr '\n' ',' | sed 's/,$//' | while read c; do [[ -n "$c" ]] && echo "\"$c\""; done | tr '\n' ',' | sed 's/,$//')],\"imports\":[$(echo "$imports" | tr '\n' ',' | sed 's/,$//' | while read i; do [[ -n "$i" ]] && echo "\"$i\""; done | tr '\n' ',' | sed 's/,$//')]}"
142
+ }
143
+
144
+ # 计算内容哈希
145
+ compute_hash() {
146
+ local file="$1"
147
+ sha256sum "$file" 2>/dev/null | awk '{print $1}' || md5sum "$file" 2>/dev/null | awk '{print $1}'
148
+ }
149
+
150
+ # 获取 git diff
151
+ get_git_diff() {
152
+ local file="$1"
153
+ local compare="$2"
154
+
155
+ case "$compare" in
156
+ previous)
157
+ git diff HEAD~1 HEAD -- "$file" 2>/dev/null || echo ""
158
+ ;;
159
+ base)
160
+ local base_branch=$(git remote show origin 2>/dev/null | grep 'HEAD branch' | awk '{print $NF}' || echo "main")
161
+ git diff "$base_branch" HEAD -- "$file" 2>/dev/null || echo ""
162
+ ;;
163
+ *)
164
+ git diff "$compare" HEAD -- "$file" 2>/dev/null || echo ""
165
+ ;;
166
+ esac
167
+ }
168
+
169
+ # 分析变更级别
170
+ analyze_change_level() {
171
+ local diff="$1"
172
+
173
+ if [[ -z "$diff" ]]; then
174
+ echo "NONE"
175
+ return
176
+ fi
177
+
178
+ # 检查是否有结构变更
179
+ local structural_patterns="(function|func|def|class|interface|struct|type|enum)\s+[a-zA-Z_]"
180
+ local structural_changes=$(echo "$diff" | grep -E "^[\+\-].*$structural_patterns" | grep -v "^[\+\-][\+\-][\+\-]" | wc -l)
181
+
182
+ # 检查是否有导入变更
183
+ local import_patterns="(import|require|from\s+['\"])"
184
+ local import_changes=$(echo "$diff" | grep -E "^[\+\-].*$import_patterns" | grep -v "^[\+\-][\+\-][\+\-]" | wc -l)
185
+
186
+ # 检查是否只有注释或格式变更
187
+ local cosmetic_only=true
188
+ local added_lines=$(echo "$diff" | grep "^+" | grep -v "^+++" | wc -l)
189
+ local removed_lines=$(echo "$diff" | grep "^-" | grep -v "^---" | wc -l)
190
+
191
+ # 检查非注释变更
192
+ local code_lines=$(echo "$diff" | grep -E "^[\+\-]" | grep -v "^[\+\-][\+\-][\+\-]" | grep -v "^\+\s*(//|/\*|\*|<!--|#)" | wc -l)
193
+
194
+ if [[ $structural_changes -gt 0 || $import_changes -gt 0 ]]; then
195
+ echo "STRUCTURAL"
196
+ elif [[ $code_lines -gt 0 ]]; then
197
+ echo "COSMETIC"
198
+ else
199
+ echo "NONE"
200
+ fi
201
+ }
202
+
203
+ # 提取变更详情
204
+ extract_change_details() {
205
+ local diff="$1"
206
+ local level="$2"
207
+ local details=()
208
+
209
+ if [[ "$level" == "NONE" ]]; then
210
+ echo "[]"
211
+ return
212
+ fi
213
+
214
+ # 提取新增的函数
215
+ local new_functions=$(echo "$diff" | grep "^+" | grep -oE "(function|func|def)\s+[a-zA-Z_][a-zA-Z0-9_]*" | sed 's/function\s\|func\s\|def\s//' | head -5)
216
+ for f in $new_functions; do
217
+ details+=("added function: $f")
218
+ done
219
+
220
+ # 提取删除的函数
221
+ local removed_functions=$(echo "$diff" | grep "^-" | grep -oE "(function|func|def)\s+[a-zA-Z_][a-zA-Z0-9_]*" | sed 's/function\s\|func\s\|def\s//' | head -5)
222
+ for f in $removed_functions; do
223
+ details+=("removed function: $f")
224
+ done
225
+
226
+ # 提取新增的类
227
+ local new_classes=$(echo "$diff" | grep "^+" | grep -oE "(class|interface|struct|type)\s+[a-zA-Z_][a-zA-Z0-9_]*" | awk '{print $2}' | head -5)
228
+ for c in $new_classes; do
229
+ details+=("added class/interface: $c")
230
+ done
231
+
232
+ # 提取新增的导入
233
+ local new_imports=$(echo "$diff" | grep "^+" | grep -oE "import.*from\s+['\"][^'\"]+['\"]" | sed "s/.*from\s*['\"]//;s/['\"]//g" | head -5)
234
+ for i in $new_imports; do
235
+ details+=("added import: $i")
236
+ done
237
+
238
+ # 输出 JSON 数组
239
+ local json="["
240
+ for d in "${details[@]}"; do
241
+ [[ -n "$d" ]] && json+="\"$d\","
242
+ done
243
+ json="${json%,}]"
244
+ echo "$json"
245
+ }
246
+
247
+ # 主流程
248
+ log_info "分析文件: $FILE_PATH"
249
+ log_info "语言: $LANGUAGE"
250
+ log_info "对比目标: $COMPARE_WITH"
251
+
252
+ # 提取当前结构
253
+ CURRENT_STRUCTURE=$(extract_structure "$FILE_PATH" "$LANGUAGE")
254
+ CONTENT_HASH=$(compute_hash "$FILE_PATH")
255
+
256
+ # 获取 diff 并分析变更
257
+ DIFF=$(get_git_diff "$FILE_PATH" "$COMPARE_WITH")
258
+ CHANGE_LEVEL=$(analyze_change_level "$DIFF")
259
+ CHANGE_DETAILS=$(extract_change_details "$DIFF" "$CHANGE_LEVEL")
260
+
261
+ # 输出结果
262
+ cat << EOF
263
+ {
264
+ "file_path": "$FILE_PATH",
265
+ "language": "$LANGUAGE",
266
+ "fingerprint": $CURRENT_STRUCTURE,
267
+ "content_hash": "$CONTENT_HASH",
268
+ "change_level": "$CHANGE_LEVEL",
269
+ "details": $CHANGE_DETAILS
270
+ }
271
+ EOF
272
+
273
+ log_info "完成"
@@ -0,0 +1,72 @@
1
+ name: code/fingerprint
2
+ description: |
3
+ 生成代码结构指纹,用于变更检测。
4
+
5
+ 通过提取代码的结构签名(函数签名、类结构、导入导出),
6
+ 可以区分"结构性变更"和"表面变更"(如注释、格式化)。
7
+
8
+ 用途:
9
+ - 增量分析(只处理真正变更的文件)
10
+ - 变更影响评估
11
+ - 代码审查优先级排序
12
+
13
+ inputs:
14
+ - name: file_path
15
+ type: string
16
+ required: true
17
+ description: 文件路径
18
+
19
+ - name: project_path
20
+ type: string
21
+ required: true
22
+ description: 项目根路径
23
+
24
+ - name: compare_with
25
+ type: string
26
+ required: false
27
+ description: |
28
+ 对比目标:
29
+ - "previous" - 与上一个 commit 对比
30
+ - "base" - 与基准分支对比
31
+ - 具体的 commit hash
32
+
33
+ outputs:
34
+ - name: fingerprint
35
+ type: object
36
+ description: 结构指纹对象
37
+
38
+ - name: content_hash
39
+ type: string
40
+ description: 内容哈希(SHA-256)
41
+
42
+ - name: change_level
43
+ type: string
44
+ description: |
45
+ 变更级别:
46
+ - "NONE" - 无变更
47
+ - "COSMETIC" - 表面变更(注释、格式)
48
+ - "STRUCTURAL" - 结构性变更
49
+
50
+ - name: details
51
+ type: array
52
+ description: 变更详情列表
53
+
54
+ handler: script
55
+ script: ./fingerprint.sh
56
+
57
+ examples:
58
+ - description: 检测文件变更级别
59
+ inputs:
60
+ file_path: "src/utils.ts"
61
+ project_path: "/home/user/project"
62
+ compare_with: "previous"
63
+ outputs:
64
+ fingerprint:
65
+ functions: ["helper", "format"]
66
+ classes: []
67
+ imports: ["lodash"]
68
+ content_hash: "abc123..."
69
+ change_level: "COSMETIC"
70
+ details: ["internal logic changed (no structural impact)"]
71
+
72
+ version: "1.0.0"
@@ -0,0 +1,68 @@
1
+ name: code/parse
2
+ description: |
3
+ 使用 Tree-sitter 解析代码文件,提取 AST 结构。
4
+ 支持函数、类、导入、导出等结构化信息提取。
5
+
6
+ 用途:
7
+ - 代码结构分析
8
+ - 知识图谱构建
9
+ - 变更检测(fingerprint)
10
+
11
+ inputs:
12
+ - name: file_path
13
+ type: string
14
+ required: true
15
+ description: 要解析的文件路径
16
+
17
+ - name: language
18
+ type: string
19
+ required: false
20
+ description: |
21
+ 语言类型(可选,自动检测)。
22
+ 支持:typescript, javascript, python, go, rust, java, cpp, c, ruby, php
23
+
24
+ - name: project_path
25
+ type: string
26
+ required: false
27
+ description: 项目根路径(用于相对路径计算)
28
+
29
+ outputs:
30
+ - name: ast_nodes
31
+ type: array
32
+ description: AST 节点列表
33
+
34
+ - name: functions
35
+ type: array
36
+ description: 函数列表(名称、参数、返回类型、行范围)
37
+
38
+ - name: classes
39
+ type: array
40
+ description: 类列表(名称、方法、属性、行范围)
41
+
42
+ - name: imports
43
+ type: array
44
+ description: 导入列表(来源、说明符)
45
+
46
+ - name: exports
47
+ type: array
48
+ description: 导出列表(名称、类型)
49
+
50
+ handler: builtin
51
+ handlerName: code_parse
52
+
53
+ examples:
54
+ - description: 解析 TypeScript 文件
55
+ inputs:
56
+ file_path: "src/index.ts"
57
+ project_path: "/home/user/project"
58
+ outputs:
59
+ functions:
60
+ - name: "main"
61
+ params: ["args"]
62
+ returnType: "void"
63
+ lineRange: [10, 25]
64
+ imports:
65
+ - source: "fs"
66
+ specifiers: ["readFileSync", "writeFileSync"]
67
+
68
+ version: "1.0.0"