@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,82 @@
1
+ # define-stance.yml - 立场注入工具
2
+ # ============================================================================
3
+ # 类型: 治理类工具
4
+ # 执行方式: 内置处理器
5
+ # 用途: 注入立场 prompt,引导 Agent 以特定立场思考
6
+ # 核心理念: 角色绑定立场,立场决定思考方式
7
+ # ============================================================================
8
+
9
+ name: define-stance
10
+ stage: govern
11
+ description: 注入立场 prompt(三省六部制核心工具)
12
+ category: governance
13
+ version: 1.0.0
14
+
15
+ # 输入定义
16
+ inputs:
17
+ - name: stance_id
18
+ type: string
19
+ required: true
20
+ description: |
21
+ 立场 ID,可选值:
22
+ 决策类:critic, supporter, decider
23
+ 执行类:planner, executor, tester
24
+ 专业类:architect, security, performance
25
+ 审计:auditor
26
+
27
+ - name: task
28
+ type: string
29
+ description: 当前任务描述
30
+
31
+ - name: input_content
32
+ type: string
33
+ description: 输入内容
34
+
35
+ - name: context
36
+ type: string
37
+ description: 上下文信息
38
+
39
+ - name: additional_prompt
40
+ type: string
41
+ description: 额外的 prompt 内容
42
+
43
+ # 输出定义
44
+ outputs:
45
+ - name: injected_prompt
46
+ type: string
47
+ description: 注入立场后的完整 prompt
48
+
49
+ - name: stance
50
+ type: object
51
+ description: 立场信息
52
+ properties:
53
+ id:
54
+ type: string
55
+ name:
56
+ type: string
57
+ nameZh:
58
+ type: string
59
+ category:
60
+ type: string
61
+
62
+ - name: forbidden_actions
63
+ type: array
64
+ description: 禁止行为列表
65
+
66
+ - name: focus_areas
67
+ type: array
68
+ description: 关注重点列表
69
+
70
+ # 执行配置
71
+ execute:
72
+ type: script
73
+ script: ./define-stance.sh
74
+
75
+ # 元数据
76
+ metadata:
77
+ author: Agent Studio
78
+ tags:
79
+ - governance
80
+ - stance
81
+ - prompt-injection
82
+ - stance-isolation
@@ -0,0 +1,23 @@
1
+ # generate-review-report.yml - 生成审核报告
2
+ id: governance/generate-review-report
3
+ stage: govern
4
+ name: 生成审核报告
5
+ description: 生成审核报告
6
+
7
+ inputs:
8
+ - name: artifact_type
9
+ type: string
10
+ required: true
11
+ - name: final_decision
12
+ type: string
13
+ required: true
14
+ - name: opinions
15
+ type: array
16
+ required: true
17
+ - name: statistics
18
+ type: object
19
+ required: false
20
+
21
+ outputs:
22
+ - name: report
23
+ type: object
@@ -0,0 +1,179 @@
1
+ # impeach.yml - 弹劾步骤
2
+ # ============================================================================
3
+ # 类型: 治理类步骤
4
+ # 执行方式: 内置处理器 + Agent 审核
5
+ # 用途: 发起和处理角色弹劾流程
6
+ # 核心理念: 独立审计发现问题,启动弹劾程序
7
+ # ============================================================================
8
+
9
+ name: impeach
10
+ stage: govern
11
+ description: 发起和处理角色弹劾流程
12
+ category: governance
13
+ version: 1.0.0
14
+
15
+ # 执行配置
16
+ execute:
17
+ type: builtin
18
+ handler: governance/impeach
19
+
20
+ # 输入定义
21
+ inputs:
22
+ target_id:
23
+ type: string
24
+ description: 被弹劾角色 ID
25
+ required: true
26
+
27
+ reason:
28
+ type: string
29
+ description: 弹劾理由
30
+ required: true
31
+
32
+ severity:
33
+ type: string
34
+ description: 弹劾严重程度
35
+ enum: [critical, major, minor]
36
+ required: true
37
+
38
+ evidence:
39
+ type: array
40
+ description: 证据链
41
+ items:
42
+ type: string
43
+ required: true
44
+
45
+ audit_report_id:
46
+ type: string
47
+ description: 关联的审计报告 ID
48
+ required: false
49
+
50
+ initiated_by:
51
+ type: string
52
+ description: 发起人 ID(通常是 auditor)
53
+ required: true
54
+
55
+ # 弹劾条件
56
+ impeachment_conditions:
57
+ critical:
58
+ reasons:
59
+ - 严重失职导致重大损失
60
+ - 故意隐瞒问题
61
+ - 伪造签署文档
62
+ - 滥用职权
63
+ penalty: 解雇
64
+
65
+ major:
66
+ reasons:
67
+ - 连续 3 个月绩效不达标
68
+ - 多次审核失误
69
+ - 违反工作流程
70
+ penalty: 降级 + 扣质量分
71
+
72
+ minor:
73
+ reasons:
74
+ - 工作态度问题
75
+ - 沟通不畅
76
+ - 配合度低
77
+ penalty: 警告 + 扣质量分
78
+
79
+ # 处理流程
80
+ workflow:
81
+ step_1:
82
+ name: 发起弹劾
83
+ role: auditor
84
+ actions:
85
+ - 创建弹劾记录
86
+ - 收集证据
87
+ - 通知被弹劾角色
88
+
89
+ step_2:
90
+ name: 技术负责人审核
91
+ role: tech-lead
92
+ actions:
93
+ - 审核证据
94
+ - 听取当事人陈述
95
+ - 做出初步判断
96
+
97
+ step_3:
98
+ name: 用户裁决
99
+ role: owner
100
+ actions:
101
+ - 审核弹劾报告
102
+ - 做出最终决定
103
+ - 执行处罚
104
+
105
+ # 处罚选项
106
+ penalties:
107
+ critical:
108
+ - 解雇
109
+ - 降级 + 扣质量分
110
+ - 警告 + 扣质量分
111
+
112
+ major:
113
+ - 降级 + 扣质量分
114
+ - 警告 + 扣质量分
115
+ - 无处罚(情节轻微)
116
+
117
+ minor:
118
+ - 警告 + 扣质量分
119
+ - 口头警告
120
+ - 无处罚
121
+
122
+ # 输出定义
123
+ outputs:
124
+ - name: impeachment_id
125
+ type: string
126
+ description: 弹劾记录 ID
127
+
128
+ - name: status
129
+ type: string
130
+ enum: [pending, reviewed, decided, executed, dismissed]
131
+ description: 弹劾状态
132
+
133
+ - name: tech_lead_decision
134
+ type: object
135
+ description: 技术负责人决策
136
+ properties:
137
+ decision:
138
+ type: string
139
+ enum: [proceed, dismiss]
140
+ opinion:
141
+ type: string
142
+
143
+ - name: owner_decision
144
+ type: object
145
+ description: 用户决策
146
+ properties:
147
+ decision:
148
+ type: string
149
+ enum: [approve, reject, mitigate]
150
+ penalty:
151
+ type: string
152
+
153
+ - name: timeline
154
+ type: object
155
+ description: 时间线
156
+ properties:
157
+ initiated_at:
158
+ type: number
159
+ reviewed_at:
160
+ type: number
161
+ decided_at:
162
+ type: number
163
+ executed_at:
164
+ type: number
165
+
166
+ # 保护措施
167
+ protections:
168
+ - 被弹劾角色有权申辩
169
+ - 弹劾记录需要证据支撑
170
+ - 严重弹劾需要用户最终确认
171
+ - 弹劾失败不记入档案
172
+
173
+ # 元数据
174
+ metadata:
175
+ author: Agent Studio
176
+ tags:
177
+ - governance
178
+ - impeachment
179
+ - accountability
@@ -0,0 +1,154 @@
1
+ # multi-stance-review.yml - 多立场审核步骤
2
+ # ============================================================================
3
+ # 类型: 治理类步骤
4
+ # 执行方式: 并行调用多个 Agent
5
+ # 用途: 多个立场并行审核,汇聚意见后做出决策
6
+ # 核心理念: 多角色共同审核重大决策
7
+ # ============================================================================
8
+
9
+ name: multi-stance-review
10
+ stage: govern
11
+ description: 多立场并行会审(会审制度)
12
+ category: governance
13
+ version: 1.0.0
14
+
15
+ # Agent 配置
16
+ agent: codex
17
+ temperature: 0.3
18
+
19
+ # 可用工具
20
+ tools:
21
+ - file-read
22
+ - define-stance
23
+ - validate-artifact
24
+ - aggregate-opinions
25
+
26
+ # 输入定义
27
+ inputs:
28
+ - name: artifact_type
29
+ type: string
30
+ required: true
31
+ description: 审核对象类型
32
+
33
+ - name: artifact_content
34
+ type: string
35
+ required: true
36
+ description: 审核对象内容
37
+
38
+ - name: stances
39
+ type: array
40
+ description: |
41
+ 参与审核的立场列表,默认使用决策类立场:
42
+ - critic: 挑刺者
43
+ - supporter: 支持者
44
+ - decider: 决策者
45
+ default: ["critic", "supporter", "decider"]
46
+
47
+ - name: aggregation_method
48
+ type: string
49
+ description: |
50
+ 意见汇聚方式:
51
+ - consensus: 一致同意
52
+ - majority: 多数同意
53
+ - weighted: 加权投票(critic 权重更高)
54
+ - decider: 决策者决定
55
+ default: "decider"
56
+
57
+ - name: review_criteria
58
+ type: array
59
+ description: 审核标准列表
60
+ default: []
61
+
62
+ # 输出定义
63
+ outputs:
64
+ - name: final_decision
65
+ type: string
66
+ description: |
67
+ 最终决策:
68
+ - approved: 通过
69
+ - rejected: 拒绝
70
+ - changes_requested: 要求修改
71
+
72
+ - name: reason
73
+ type: string
74
+ description: 决策理由
75
+
76
+ - name: opinions
77
+ type: array
78
+ description: 各立场审核意见
79
+ items:
80
+ type: object
81
+ properties:
82
+ stanceId:
83
+ type: string
84
+ verdict:
85
+ type: string
86
+ opinion:
87
+ type: string
88
+ issues:
89
+ type: array
90
+
91
+ - name: statistics
92
+ type: object
93
+ description: 审核统计
94
+ properties:
95
+ approve:
96
+ type: number
97
+ reject:
98
+ type: number
99
+ request_changes:
100
+ type: number
101
+ total:
102
+ type: number
103
+
104
+ # Prompt 模板
105
+ prompt: |
106
+ 你正在组织多立场会审。
107
+
108
+ ## 审核对象
109
+ 类型: {{artifact_type}}
110
+ 内容: {{artifact_content}}
111
+
112
+ ## 参与立场
113
+ {{#each stances}}
114
+ - {{this}}
115
+ {{/each}}
116
+
117
+ ## 汇聚方式
118
+ {{aggregation_method}}
119
+
120
+ ## 审核标准
121
+ {{#if review_criteria}}
122
+ {{#each review_criteria}}
123
+ - {{this}}
124
+ {{/each}}
125
+ {{else}}
126
+ - 完整性
127
+ - 可行性
128
+ - 风险评估
129
+ {{/if}}
130
+
131
+ 请按照以下流程执行:
132
+ 1. 为每个立场生成审核 prompt
133
+ 2. 并行执行各立场审核
134
+ 3. 汇聚审核意见
135
+ 4. 做出最终决策
136
+
137
+ # 执行配置
138
+ execute:
139
+ type: builtin
140
+ handler: multi-stance-review
141
+
142
+ # 并行执行配置
143
+ parallel: true
144
+ max_parallel: 3
145
+
146
+ # 元数据
147
+ metadata:
148
+ author: Agent Studio
149
+ tags:
150
+ - governance
151
+ - review
152
+ - multi-stance
153
+ - multi-stakeholder
154
+ - stance-isolation
@@ -0,0 +1,20 @@
1
+ # prepare-artifact.yml - 准备审核对象
2
+ id: governance/prepare-artifact
3
+ stage: govern
4
+ name: 准备审核对象
5
+ description: 准备审核对象内容
6
+
7
+ inputs:
8
+ - name: artifact_type
9
+ type: string
10
+ required: true
11
+ - name: content
12
+ type: string
13
+ required: true
14
+ - name: context
15
+ type: object
16
+ required: false
17
+
18
+ outputs:
19
+ - name: output
20
+ type: object
@@ -0,0 +1,262 @@
1
+ # review-spec-approval.yml - 关键变更双签审批
2
+ # ============================================================================
3
+ # 类型: 治理类步骤
4
+ # 执行方式: 工作流编排(等待外部审批)
5
+ # 用途: 关键变更(架构/API/数据模型)的双签审批
6
+ # 审批人: 架构师 + 项目负责人
7
+ # ============================================================================
8
+ # 与 AS-048 联动:动态获取项目负责人
9
+ # 与 spec-review-service.ts 联动:双签审批逻辑
10
+ # ============================================================================
11
+
12
+ name: review-spec-approval
13
+ stage: govern
14
+ description: 关键变更双签审批(架构师 + 项目负责人)
15
+ category: governance
16
+ version: 1.0.0
17
+
18
+ # 执行方式:编排步骤(非 Agent)
19
+ type: orchestration
20
+
21
+ # 输入定义
22
+ inputs:
23
+ changes:
24
+ type: array
25
+ description: Spec 变更列表
26
+ required: true
27
+ items:
28
+ type: object
29
+ properties:
30
+ type:
31
+ type: string
32
+ enum: [architecture, api, data-model, workflow, step, skill, other]
33
+ description: 变更类型
34
+ file:
35
+ type: string
36
+ description: 变更文件路径
37
+ description:
38
+ type: string
39
+ description: 变更描述
40
+ impact:
41
+ type: string
42
+ enum: [high, medium, low]
43
+ description: 影响级别
44
+ diff:
45
+ type: string
46
+ description: 变更差异
47
+
48
+ workflow_id:
49
+ type: string
50
+ description: 关联的工作流 ID
51
+ required: false
52
+
53
+ title:
54
+ type: string
55
+ description: 审查标题
56
+ required: true
57
+
58
+ description:
59
+ type: string
60
+ description: 审查描述
61
+ required: false
62
+
63
+ company_id:
64
+ type: string
65
+ description: 公司 ID(用于获取项目负责人)
66
+ required: false
67
+ default: "default-company"
68
+
69
+ requested_by:
70
+ type: string
71
+ description: 请求人 ID
72
+ required: false
73
+
74
+ # 配置
75
+ config:
76
+ # 审批超时(默认 24 小时)
77
+ approval_timeout_ms: 86400000
78
+
79
+ # 关键变更类型(需要双签)
80
+ critical_change_types:
81
+ - architecture
82
+ - api
83
+ - data-model
84
+
85
+ # 高影响级别(需要审批)
86
+ high_impact_levels:
87
+ - high
88
+
89
+ # 执行步骤
90
+ steps:
91
+ # Step 1: 分析变更
92
+ - id: analyze_changes
93
+ name: 分析变更
94
+ action: call
95
+ service: spec-review-service
96
+ method: analyzeChanges
97
+ input:
98
+ changes: ${{ inputs.changes }}
99
+ output: analysis_result
100
+
101
+ # Step 2: 判断是否需要审批
102
+ - id: check_required
103
+ name: 检查是否需要审批
104
+ action: condition
105
+ condition: ${{ steps.analyze_changes.output.required }}
106
+ on_true: create_review
107
+ on_false: skip_review
108
+
109
+ # Step 3: 创建审查(分支:需要审批)
110
+ - id: create_review
111
+ name: 创建审查请求
112
+ action: call
113
+ service: spec-review-service
114
+ method: createReview
115
+ input:
116
+ workflowId: ${{ inputs.workflow_id }}
117
+ title: ${{ inputs.title }}
118
+ description: ${{ inputs.description }}
119
+ changes: ${{ inputs.changes }}
120
+ requestedBy: ${{ inputs.requested_by }}
121
+ output: review
122
+
123
+ # Step 4: 等待审批(双签)
124
+ - id: wait_approval
125
+ name: 等待双签审批
126
+ action: wait
127
+ event: spec-review.approved
128
+ filter:
129
+ reviewId: ${{ steps.create_review.output.review.id }}
130
+ timeout_ms: ${{ config.approval_timeout_ms }}
131
+ on_timeout: approval_timeout
132
+ output: approval_result
133
+
134
+ # Step 5: 检查审批结果
135
+ - id: check_approval
136
+ name: 检查审批结果
137
+ action: condition
138
+ condition: ${{ steps.wait_approval.output.status == 'approved' }}
139
+ on_true: approval_success
140
+ on_false: approval_rejected
141
+
142
+ # 分支:审批通过
143
+ - id: approval_success
144
+ name: 审批通过
145
+ action: emit
146
+ event: spec-review.completed
147
+ data:
148
+ reviewId: ${{ steps.create_review.output.review.id }}
149
+ status: approved
150
+ approvals: ${{ steps.wait_approval.output.approvals }}
151
+
152
+ # 分支:审批拒绝
153
+ - id: approval_rejected
154
+ name: 审批拒绝
155
+ action: emit
156
+ event: spec-review.completed
157
+ data:
158
+ reviewId: ${{ steps.create_review.output.review.id }}
159
+ status: rejected
160
+ reason: ${{ steps.wait_approval.output.rejection_reason }}
161
+
162
+ # 分支:无需审批
163
+ - id: skip_review
164
+ name: 无需审批
165
+ action: emit
166
+ event: spec-review.completed
167
+ data:
168
+ status: not-required
169
+ reason: ${{ steps.analyze_changes.output.reason }}
170
+
171
+ # 分支:审批超时
172
+ - id: approval_timeout
173
+ name: 审批超时
174
+ action: emit
175
+ event: spec-review.timeout
176
+ data:
177
+ reviewId: ${{ steps.create_review.output.review.id }}
178
+ status: timeout
179
+ then:
180
+ action: fail
181
+ message: "审批超时,请重新提交"
182
+
183
+ # 输出定义
184
+ outputs:
185
+ status:
186
+ type: string
187
+ enum: [approved, rejected, not-required, timeout]
188
+ description: 审批状态
189
+ value: "${{ steps.approval_success ? 'approved' : steps.approval_rejected ? 'rejected' : steps.skip_review ? 'not-required' : 'timeout' }}"
190
+
191
+ review_id:
192
+ type: string
193
+ description: 审查 ID
194
+ value: ${{ steps.create_review.output.review.id }}
195
+
196
+ approvals:
197
+ type: object
198
+ description: 审批记录
199
+ value: ${{ steps.wait_approval.output.approvals }}
200
+ properties:
201
+ architect:
202
+ type: object
203
+ properties:
204
+ approved:
205
+ type: boolean
206
+ reviewerName:
207
+ type: string
208
+ timestamp:
209
+ type: string
210
+ projectLead:
211
+ type: object
212
+ properties:
213
+ approved:
214
+ type: boolean
215
+ reviewerName:
216
+ type: string
217
+ timestamp:
218
+ type: string
219
+
220
+ reason:
221
+ type: string
222
+ description: 原因说明
223
+ value: "${{ steps.skip_review.output.reason || steps.wait_approval.output.rejection_reason || '' }}"
224
+
225
+ # 元数据
226
+ metadata:
227
+ author: system
228
+ created_at: 2026-04-14
229
+ updated_at: 2026-04-14
230
+
231
+ # 与 AS-048 联动说明
232
+ integration:
233
+ as_048:
234
+ description: 动态获取项目负责人
235
+ usage: |
236
+ spec-review-service.notifyReviewers() 会调用:
237
+ roleService.getProjectLead(companyId)
238
+
239
+ 返回项目负责人角色信息,用于:
240
+ - 审批通知
241
+ - 双签验证
242
+
243
+ # 双签审批逻辑说明
244
+ dual_sign_logic:
245
+ description: |
246
+ 关键变更类型(architecture, api, data-model)需要双签:
247
+ - 架构师批准
248
+ - 项目负责人批准
249
+
250
+ 其他变更类型只需单签(任意一人批准即可)。
251
+
252
+ implementation: |
253
+ // spec-review-service.ts L160-180
254
+ const needsDualSign = ['architecture', 'api', 'data-model'].includes(review.changeType);
255
+
256
+ if (needsDualSign) {
257
+ if (approvals.architect?.approved && approvals.projectLead?.approved) {
258
+ newStatus = 'approved';
259
+ }
260
+ } else {
261
+ newStatus = 'approved';
262
+ }