add-coder 0.3.26 → 0.3.28

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 (323) hide show
  1. package/README.md +282 -155
  2. package/dist/index.js +481 -209
  3. package/package.json +15 -4
  4. package/templates/.add-coder-src-hash.json +186 -185
  5. package/templates/adapters/claude/hooks/doc-format-guard.ts +32 -0
  6. package/templates/adapters/claude/hooks/lib/claude-env.ts +7 -0
  7. package/templates/adapters/claude/hooks/notification.ts +24 -0
  8. package/templates/adapters/claude/hooks/permission-denied.ts +33 -0
  9. package/templates/adapters/claude/hooks/permission-gate.ts +12 -0
  10. package/templates/adapters/claude/hooks/post-tool-failure.ts +4 -0
  11. package/templates/adapters/claude/hooks/post-tool-use.ts +17 -0
  12. package/templates/adapters/claude/hooks/pre-compact.ts +10 -0
  13. package/templates/adapters/claude/hooks/pre-tool-use.ts +81 -0
  14. package/templates/adapters/claude/hooks/prompt-submit.ts +82 -0
  15. package/templates/adapters/claude/hooks/review-checklist.ts +4 -0
  16. package/templates/adapters/claude/hooks/session-end.ts +10 -0
  17. package/templates/adapters/claude/hooks/session-start.ts +24 -0
  18. package/templates/adapters/claude/hooks/stop-check.ts +15 -0
  19. package/templates/adapters/claude/hooks/stop-failure.ts +34 -0
  20. package/templates/adapters/claude/hooks/subagent-guard.ts +25 -0
  21. package/templates/adapters/claude/hooks/subagent-stop.ts +12 -0
  22. package/templates/adapters/claude/settings.json +13 -13
  23. package/templates/adapters/codex/config.toml.example +12 -0
  24. package/templates/adapters/codex/hooks/doc-format-guard.ts +30 -0
  25. package/templates/adapters/codex/hooks/notification.ts +26 -0
  26. package/templates/adapters/codex/hooks/permission-gate.ts +15 -0
  27. package/templates/adapters/codex/hooks/post-tool-failure.ts +14 -0
  28. package/templates/adapters/codex/hooks/post-tool-use.ts +85 -0
  29. package/templates/adapters/codex/hooks/pre-compact.ts +20 -0
  30. package/templates/adapters/codex/hooks/pre-tool-use.ts +141 -0
  31. package/templates/adapters/codex/hooks/prompt-submit.ts +38 -0
  32. package/templates/adapters/codex/hooks/review-checklist.ts +5 -0
  33. package/templates/adapters/codex/hooks/session-end.ts +19 -0
  34. package/templates/adapters/codex/hooks/session-start.ts +45 -0
  35. package/templates/adapters/codex/hooks/stop-check.ts +59 -0
  36. package/templates/adapters/codex/hooks/subagent-guard.ts +22 -0
  37. package/templates/adapters/codex/hooks/subagent-stop.ts +20 -0
  38. package/templates/adapters/codex/hooks.json +67 -1
  39. package/templates/adapters/qoder/hooks/doc-format-guard.ts +34 -0
  40. package/templates/adapters/qoder/hooks/lib/context-inject.ts +61 -0
  41. package/templates/adapters/qoder/hooks/lib/qoder-env.ts +23 -0
  42. package/templates/adapters/qoder/hooks/lib/review-checklist.ts +5 -0
  43. package/templates/adapters/qoder/hooks/notification.ts +34 -0
  44. package/templates/adapters/qoder/hooks/permission-gate.ts +26 -0
  45. package/templates/adapters/qoder/hooks/post-tool-failure.ts +30 -0
  46. package/templates/adapters/qoder/hooks/post-tool-use.ts +32 -0
  47. package/templates/adapters/qoder/hooks/pre-compact.ts +16 -0
  48. package/templates/adapters/qoder/hooks/pre-tool-use.ts +112 -0
  49. package/templates/adapters/qoder/hooks/prompt-submit.ts +66 -0
  50. package/templates/adapters/qoder/hooks/review-checklist.ts +24 -0
  51. package/templates/adapters/qoder/hooks/session-end.ts +27 -0
  52. package/templates/adapters/qoder/hooks/session-start.ts +83 -0
  53. package/templates/adapters/qoder/hooks/stop-check.ts +69 -0
  54. package/templates/adapters/qoder/hooks/subagent-guard.ts +16 -0
  55. package/templates/adapters/qoder/hooks/subagent-stop.ts +33 -0
  56. package/templates/adapters/qoder/settings.json +13 -13
  57. package/templates/adapters/trae/hooks/doc-format-guard.ts +30 -0
  58. package/templates/adapters/trae/hooks/notification.ts +22 -0
  59. package/templates/adapters/trae/hooks/permission-gate.ts +15 -0
  60. package/templates/adapters/trae/hooks/post-tool-failure.ts +14 -0
  61. package/templates/adapters/trae/hooks/post-tool-use.ts +24 -0
  62. package/templates/adapters/trae/hooks/pre-compact.ts +15 -0
  63. package/templates/adapters/trae/hooks/pre-tool-use.ts +40 -0
  64. package/templates/adapters/trae/hooks/prompt-submit.ts +29 -0
  65. package/templates/adapters/trae/hooks/review-checklist.ts +5 -0
  66. package/templates/adapters/trae/hooks/session-end.ts +16 -0
  67. package/templates/adapters/trae/hooks/session-start.ts +15 -0
  68. package/templates/adapters/trae/hooks/stop-check.ts +20 -0
  69. package/templates/adapters/trae/hooks/subagent-guard.ts +22 -0
  70. package/templates/adapters/trae/hooks/subagent-stop.ts +15 -0
  71. package/templates/adapters/trae/hooks.json +1 -1
  72. package/templates/adapters/vscode/hooks/doc-format-guard.ts +27 -0
  73. package/templates/adapters/vscode/hooks/notification.ts +22 -0
  74. package/templates/adapters/vscode/hooks/permission-gate.ts +15 -0
  75. package/templates/adapters/vscode/hooks/post-tool-failure.ts +32 -0
  76. package/templates/adapters/vscode/hooks/post-tool-use.ts +25 -0
  77. package/templates/adapters/vscode/hooks/pre-compact.ts +15 -0
  78. package/templates/adapters/vscode/hooks/pre-tool-use.ts +78 -0
  79. package/templates/adapters/vscode/hooks/prompt-submit.ts +74 -0
  80. package/templates/adapters/vscode/hooks/review-checklist.ts +5 -0
  81. package/templates/adapters/vscode/hooks/session-end.ts +16 -0
  82. package/templates/adapters/vscode/hooks/session-start.ts +24 -0
  83. package/templates/adapters/vscode/hooks/stop-check.ts +21 -0
  84. package/templates/adapters/vscode/hooks/subagent-guard.ts +21 -0
  85. package/templates/adapters/vscode/hooks/subagent-stop.ts +15 -0
  86. package/templates/core/docs/ADD-governance-claude-code.md +4 -4
  87. package/templates/core/docs/ADD-governance-codex.md +6 -6
  88. package/templates/core/docs/ADD-governance-qoder-cn.md +5 -5
  89. package/templates/core/docs/ADD-governance-trae.md +3 -3
  90. package/templates/core/docs/ADD-governance-vscode-copilot.md +22 -23
  91. package/templates/core/governance/audit-bridge.ts +47 -0
  92. package/templates/core/governance/common.ts +299 -0
  93. package/templates/core/governance/context-inject.ts +53 -0
  94. package/templates/core/governance/doc-format-guard.ts +440 -0
  95. package/templates/core/governance/notification-router.ts +62 -0
  96. package/templates/core/governance/notify.ts +66 -0
  97. package/templates/core/governance/permission-gate-router.ts +42 -0
  98. package/templates/core/governance/post-tool-failure-router.ts +56 -0
  99. package/templates/core/governance/post-tool-router.ts +212 -0
  100. package/templates/core/governance/pre-compact-guard.ts +41 -0
  101. package/templates/core/governance/pre-tool-guard.ts +309 -0
  102. package/templates/core/governance/preload-templates.ts +241 -0
  103. package/templates/core/governance/prompt-router.ts +222 -0
  104. package/templates/core/governance/review-checklist-guard.ts +186 -0
  105. package/templates/core/governance/rules.ts +720 -0
  106. package/templates/core/governance/session-end.ts +88 -0
  107. package/templates/core/governance/session-start-guard.ts +99 -0
  108. package/templates/core/governance/state-detect.ts +6 -0
  109. package/templates/core/governance/stop-router.ts +140 -0
  110. package/templates/core/governance/subagent-guard-router.ts +35 -0
  111. package/templates/core/governance/subagent-stop-router.ts +93 -0
  112. package/templates/core/governance/subagent-stop.ts +75 -0
  113. package/templates/core/governance/vocabulary.ts +109 -0
  114. package/templates/core/hooks/doc-format-guard.ts +21 -0
  115. package/templates/core/hooks/notification.ts +11 -0
  116. package/templates/core/hooks/permission-gate.ts +7 -0
  117. package/templates/core/hooks/post-tool-failure.ts +7 -0
  118. package/templates/core/hooks/post-tool-use.ts +23 -0
  119. package/templates/core/hooks/pre-compact.ts +9 -0
  120. package/templates/core/hooks/pre-tool-use.ts +30 -0
  121. package/templates/core/hooks/prompt-submit.ts +11 -0
  122. package/templates/core/hooks/review-checklist.ts +4 -0
  123. package/templates/core/hooks/session-end.ts +10 -0
  124. package/templates/core/hooks/session-start.ts +9 -0
  125. package/templates/core/hooks/stop-check.ts +14 -0
  126. package/templates/core/hooks/subagent-guard.ts +8 -0
  127. package/templates/core/hooks/subagent-stop.ts +9 -0
  128. package/templates/core/prisma/add.prisma +140 -82
  129. package/templates/core/rules/project_rules.md +27 -24
  130. package/templates/core/scripts/db-ensure.sh +8 -0
  131. package/templates/core/scripts/gen-plan-index.sh +4 -15
  132. package/templates/core/scripts/mcp-server/notifications/hitl.ts +9 -1
  133. package/templates/core/scripts/mcp-server/notifications/hook.ts +25 -9
  134. package/templates/core/scripts/mcp-server/resources/hitl-approval-widget.ts +34 -0
  135. package/templates/core/scripts/mcp-server/resources/hook-events-report.ts +14 -2
  136. package/templates/core/scripts/mcp-server/resources/index.ts +2 -0
  137. package/templates/core/scripts/mcp-server/sampling/review.ts +25 -10
  138. package/templates/core/scripts/mcp-server/shared/db-types.ts +33 -8
  139. package/templates/core/scripts/mcp-server/shared/dps-scoring.strategy.ts +1 -1
  140. package/templates/core/scripts/mcp-server/shared/env.ts +28 -8
  141. package/templates/core/scripts/mcp-server/shared/fs.ts +3 -0
  142. package/templates/core/scripts/mcp-server/shared/hitl-interaction.strategy.ts +2 -3
  143. package/templates/core/scripts/mcp-server/shared/hitl-lifecycle-mutation.ts +129 -0
  144. package/templates/core/scripts/mcp-server/shared/hitl-proposal-mutation.ts +98 -0
  145. package/templates/core/scripts/mcp-server/shared/hitl-ui.ts +3 -0
  146. package/templates/core/scripts/mcp-server/shared/plan-lifecycle-events.ts +62 -0
  147. package/templates/core/scripts/mcp-server/shared/plan-lifecycle-mutation.ts +78 -0
  148. package/templates/core/scripts/mcp-server/shared/plan-lifecycle-subscriber.ts +145 -0
  149. package/templates/core/scripts/mcp-server/shared/plan-lifecycle.ts +153 -0
  150. package/templates/core/scripts/mcp-server/shared/plan-round-events.ts +56 -0
  151. package/templates/core/scripts/mcp-server/shared/plan-round-mutation.ts +143 -0
  152. package/templates/core/scripts/mcp-server/shared/plan-round-store.ts +47 -0
  153. package/templates/core/scripts/mcp-server/shared/plan-round-subscriber.ts +99 -0
  154. package/templates/core/scripts/mcp-server/shared/plan-status-store.ts +37 -0
  155. package/templates/core/scripts/mcp-server/shared/plan-tracking-mutation.ts +71 -0
  156. package/templates/core/scripts/mcp-server/shared/prisma.ts +12 -6
  157. package/templates/core/scripts/mcp-server/shared/project-root-strategy.ts +1 -2
  158. package/templates/core/scripts/mcp-server/shared/quant-recheck.strategy.ts +16 -0
  159. package/templates/core/scripts/mcp-server/shared/redact.ts +28 -0
  160. package/templates/core/scripts/mcp-server/shared/response.ts +3 -2
  161. package/templates/core/scripts/mcp-server/shared/runtime-context.ts +77 -0
  162. package/templates/core/scripts/mcp-server/shared/schema-topology.ts +159 -0
  163. package/templates/core/scripts/mcp-server/tools/audit.ts +49 -7
  164. package/templates/core/scripts/mcp-server/tools/context.ts +117 -121
  165. package/templates/core/scripts/mcp-server/tools/contract.ts +34 -9
  166. package/templates/core/scripts/mcp-server/tools/gateway/check_add_route_status.ts +50 -3
  167. package/templates/core/scripts/mcp-server/tools/gateway/check_doc_similarity.ts +218 -0
  168. package/templates/core/scripts/mcp-server/tools/gateway/check_dps.ts +22 -7
  169. package/templates/core/scripts/mcp-server/tools/gateway/check_rahs.ts +86 -4
  170. package/templates/core/scripts/mcp-server/tools/gateway/check_spec_sync.ts +19 -6
  171. package/templates/core/scripts/mcp-server/tools/gateway/index.ts +2 -0
  172. package/templates/core/scripts/mcp-server/tools/hitl.ts +160 -75
  173. package/templates/core/scripts/mcp-server/tools/hook-event-report.ts +9 -2
  174. package/templates/core/scripts/mcp-server/tools/index.ts +69 -3
  175. package/templates/core/scripts/mcp-server/tools/plan.ts +152 -17
  176. package/templates/core/scripts/mcp-server/tools/review.ts +44 -15
  177. package/templates/core/scripts/mcp-server.ts +60 -1
  178. package/templates/core/scripts/plan-status-bridge.ts +26 -0
  179. package/templates/core/skills/add-paradigm/SKILL.md +2 -2
  180. package/templates/core/templates/add-route-template.schema.json +24 -56
  181. package/templates/core/templates/collab-contract-template.md +1 -1
  182. package/templates/core/templates/handoff-multi-round-template.schema.json +48 -0
  183. package/templates/core/templates/handoff-single-round-template.schema.json +92 -0
  184. package/templates/core/templates/handoff-single-round.schema.json +1 -1
  185. package/templates/core/templates/hitl-approval-widget.html +222 -37
  186. package/templates/core/templates/spec-template.schema.json +9 -46
  187. package/templates/core/templates/standard-plan-template.schema.json +1 -1
  188. package/templates/core/templates/tasks-template.schema.json +13 -54
  189. package/templates/adapters/claude/hooks/doc-format-guard.sh +0 -202
  190. package/templates/adapters/claude/hooks/lib/common.sh +0 -261
  191. package/templates/adapters/claude/hooks/lib/context-inject.sh +0 -96
  192. package/templates/adapters/claude/hooks/lib/notify.sh +0 -34
  193. package/templates/adapters/claude/hooks/lib/preload-templates.sh +0 -187
  194. package/templates/adapters/claude/hooks/lib/session-end.sh +0 -76
  195. package/templates/adapters/claude/hooks/lib/state-detect.sh +0 -117
  196. package/templates/adapters/claude/hooks/lib/subagent-stop.sh +0 -90
  197. package/templates/adapters/claude/hooks/lib/vocabulary.sh +0 -56
  198. package/templates/adapters/claude/hooks/notification.sh +0 -45
  199. package/templates/adapters/claude/hooks/permission-denied.sh +0 -42
  200. package/templates/adapters/claude/hooks/permission-gate.sh +0 -18
  201. package/templates/adapters/claude/hooks/post-tool-failure.sh +0 -10
  202. package/templates/adapters/claude/hooks/post-tool-use.sh +0 -35
  203. package/templates/adapters/claude/hooks/pre-compact.sh +0 -37
  204. package/templates/adapters/claude/hooks/pre-tool-use.sh +0 -153
  205. package/templates/adapters/claude/hooks/prompt-submit.sh +0 -99
  206. package/templates/adapters/claude/hooks/review-checklist.sh +0 -10
  207. package/templates/adapters/claude/hooks/session-end.sh +0 -21
  208. package/templates/adapters/claude/hooks/session-start.sh +0 -36
  209. package/templates/adapters/claude/hooks/stop-check.sh +0 -45
  210. package/templates/adapters/claude/hooks/stop-failure.sh +0 -44
  211. package/templates/adapters/claude/hooks/subagent-guard.sh +0 -36
  212. package/templates/adapters/claude/hooks/subagent-stop.sh +0 -20
  213. package/templates/adapters/codex/hooks/doc-format-guard.sh +0 -261
  214. package/templates/adapters/codex/hooks/lib/common.sh +0 -261
  215. package/templates/adapters/codex/hooks/lib/context-inject.sh +0 -96
  216. package/templates/adapters/codex/hooks/lib/notify.sh +0 -34
  217. package/templates/adapters/codex/hooks/lib/preload-templates.sh +0 -187
  218. package/templates/adapters/codex/hooks/lib/session-end.sh +0 -76
  219. package/templates/adapters/codex/hooks/lib/state-detect.sh +0 -117
  220. package/templates/adapters/codex/hooks/lib/subagent-stop.sh +0 -90
  221. package/templates/adapters/codex/hooks/lib/vocabulary.sh +0 -56
  222. package/templates/adapters/codex/hooks/notification.sh +0 -45
  223. package/templates/adapters/codex/hooks/permission-gate.sh +0 -18
  224. package/templates/adapters/codex/hooks/post-tool-failure.sh +0 -10
  225. package/templates/adapters/codex/hooks/post-tool-use.sh +0 -138
  226. package/templates/adapters/codex/hooks/pre-compact.sh +0 -37
  227. package/templates/adapters/codex/hooks/pre-tool-use.sh +0 -217
  228. package/templates/adapters/codex/hooks/prompt-submit.sh +0 -87
  229. package/templates/adapters/codex/hooks/review-checklist.sh +0 -10
  230. package/templates/adapters/codex/hooks/session-end.sh +0 -38
  231. package/templates/adapters/codex/hooks/session-start.sh +0 -53
  232. package/templates/adapters/codex/hooks/stop-check.sh +0 -45
  233. package/templates/adapters/codex/hooks/subagent-guard.sh +0 -15
  234. package/templates/adapters/codex/hooks/subagent-stop.sh +0 -47
  235. package/templates/adapters/qoder/hooks/doc-format-guard.sh +0 -260
  236. package/templates/adapters/qoder/hooks/lib/common.sh +0 -261
  237. package/templates/adapters/qoder/hooks/lib/context-inject.sh +0 -96
  238. package/templates/adapters/qoder/hooks/lib/notify.sh +0 -34
  239. package/templates/adapters/qoder/hooks/lib/preload-templates.sh +0 -187
  240. package/templates/adapters/qoder/hooks/lib/session-end.sh +0 -76
  241. package/templates/adapters/qoder/hooks/lib/state-detect.sh +0 -117
  242. package/templates/adapters/qoder/hooks/lib/subagent-stop.sh +0 -90
  243. package/templates/adapters/qoder/hooks/lib/vocabulary.sh +0 -56
  244. package/templates/adapters/qoder/hooks/notification.sh +0 -25
  245. package/templates/adapters/qoder/hooks/permission-gate.sh +0 -8
  246. package/templates/adapters/qoder/hooks/post-tool-failure.sh +0 -8
  247. package/templates/adapters/qoder/hooks/post-tool-use.sh +0 -121
  248. package/templates/adapters/qoder/hooks/pre-compact.sh +0 -37
  249. package/templates/adapters/qoder/hooks/pre-tool-use.sh +0 -154
  250. package/templates/adapters/qoder/hooks/prompt-submit.sh +0 -96
  251. package/templates/adapters/qoder/hooks/review-checklist.sh +0 -157
  252. package/templates/adapters/qoder/hooks/session-end.sh +0 -24
  253. package/templates/adapters/qoder/hooks/session-start.sh +0 -45
  254. package/templates/adapters/qoder/hooks/stop-check.sh +0 -48
  255. package/templates/adapters/qoder/hooks/subagent-guard.sh +0 -27
  256. package/templates/adapters/qoder/hooks/subagent-stop.sh +0 -26
  257. package/templates/adapters/trae/hooks/doc-format-guard.sh +0 -261
  258. package/templates/adapters/trae/hooks/lib/common.sh +0 -261
  259. package/templates/adapters/trae/hooks/lib/context-inject.sh +0 -96
  260. package/templates/adapters/trae/hooks/lib/notify.sh +0 -34
  261. package/templates/adapters/trae/hooks/lib/preload-templates.sh +0 -187
  262. package/templates/adapters/trae/hooks/lib/session-end.sh +0 -76
  263. package/templates/adapters/trae/hooks/lib/state-detect.sh +0 -117
  264. package/templates/adapters/trae/hooks/lib/subagent-stop.sh +0 -90
  265. package/templates/adapters/trae/hooks/lib/vocabulary.sh +0 -56
  266. package/templates/adapters/trae/hooks/notification.sh +0 -45
  267. package/templates/adapters/trae/hooks/permission-gate.sh +0 -18
  268. package/templates/adapters/trae/hooks/post-tool-failure.sh +0 -10
  269. package/templates/adapters/trae/hooks/post-tool-use.sh +0 -138
  270. package/templates/adapters/trae/hooks/pre-compact.sh +0 -37
  271. package/templates/adapters/trae/hooks/pre-tool-use.sh +0 -217
  272. package/templates/adapters/trae/hooks/prompt-submit.sh +0 -87
  273. package/templates/adapters/trae/hooks/review-checklist.sh +0 -10
  274. package/templates/adapters/trae/hooks/session-end.sh +0 -38
  275. package/templates/adapters/trae/hooks/session-start.sh +0 -53
  276. package/templates/adapters/trae/hooks/stop-check.sh +0 -45
  277. package/templates/adapters/trae/hooks/subagent-guard.sh +0 -15
  278. package/templates/adapters/trae/hooks/subagent-stop.sh +0 -47
  279. package/templates/adapters/vscode/hooks/doc-format-guard.sh +0 -201
  280. package/templates/adapters/vscode/hooks/lib/common.sh +0 -261
  281. package/templates/adapters/vscode/hooks/lib/context-inject.sh +0 -96
  282. package/templates/adapters/vscode/hooks/lib/notify.sh +0 -34
  283. package/templates/adapters/vscode/hooks/lib/preload-templates.sh +0 -187
  284. package/templates/adapters/vscode/hooks/lib/session-end.sh +0 -76
  285. package/templates/adapters/vscode/hooks/lib/state-detect.sh +0 -117
  286. package/templates/adapters/vscode/hooks/lib/subagent-stop.sh +0 -90
  287. package/templates/adapters/vscode/hooks/lib/vocabulary.sh +0 -56
  288. package/templates/adapters/vscode/hooks/notification.sh +0 -45
  289. package/templates/adapters/vscode/hooks/permission-gate.sh +0 -18
  290. package/templates/adapters/vscode/hooks/post-tool-failure.sh +0 -28
  291. package/templates/adapters/vscode/hooks/post-tool-use.sh +0 -35
  292. package/templates/adapters/vscode/hooks/pre-compact.sh +0 -37
  293. package/templates/adapters/vscode/hooks/pre-tool-use.sh +0 -153
  294. package/templates/adapters/vscode/hooks/prompt-submit.sh +0 -99
  295. package/templates/adapters/vscode/hooks/review-checklist.sh +0 -10
  296. package/templates/adapters/vscode/hooks/session-end.sh +0 -13
  297. package/templates/adapters/vscode/hooks/session-start.sh +0 -35
  298. package/templates/adapters/vscode/hooks/stop-check.sh +0 -53
  299. package/templates/adapters/vscode/hooks/subagent-guard.sh +0 -37
  300. package/templates/adapters/vscode/hooks/subagent-stop.sh +0 -12
  301. package/templates/core/hooks/doc-format-guard.sh +0 -261
  302. package/templates/core/hooks/lib/common.sh +0 -261
  303. package/templates/core/hooks/lib/context-inject.sh +0 -96
  304. package/templates/core/hooks/lib/notify.sh +0 -34
  305. package/templates/core/hooks/lib/preload-templates.sh +0 -187
  306. package/templates/core/hooks/lib/session-end.sh +0 -76
  307. package/templates/core/hooks/lib/state-detect.sh +0 -117
  308. package/templates/core/hooks/lib/subagent-stop.sh +0 -90
  309. package/templates/core/hooks/lib/vocabulary.sh +0 -56
  310. package/templates/core/hooks/notification.sh +0 -45
  311. package/templates/core/hooks/permission-gate.sh +0 -18
  312. package/templates/core/hooks/post-tool-failure.sh +0 -10
  313. package/templates/core/hooks/post-tool-use.sh +0 -138
  314. package/templates/core/hooks/pre-compact.sh +0 -37
  315. package/templates/core/hooks/pre-tool-use.sh +0 -217
  316. package/templates/core/hooks/prompt-submit.sh +0 -87
  317. package/templates/core/hooks/review-checklist.sh +0 -10
  318. package/templates/core/hooks/session-end.sh +0 -38
  319. package/templates/core/hooks/session-start.sh +0 -53
  320. package/templates/core/hooks/stop-check.sh +0 -45
  321. package/templates/core/hooks/subagent-guard.sh +0 -15
  322. package/templates/core/hooks/subagent-stop.sh +0 -47
  323. package/templates/shared/hooks-lib/common.sh +0 -22
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "add-coder",
3
- "version": "0.3.26",
3
+ "version": "0.3.28",
4
4
  "private": false,
5
5
  "description": "[codein2027](https://github.com/xiaomingming92/codein2027) - A complete scaffolding for building the ADD programming paradigm, the implementation layer for AI code governance. Core principle: Audit as Infrastructure. Breaks the black-box programming process and cross-session amnesia, evolving programming paradigms into an auditable, traceable, and convergent new era. npx-ready.\n\n[codein2027](https://github.com/xiaomingming92/codein2027) 快速构建 ADD 编程范式的完整脚手架——AI 代码治理的落地方案。以「审计即基础设施」为核心,彻底打破编程过程黑盒与跨轮失忆,让编程范式进化为可审计、可追溯、可收敛的新时代。npx 即用,人人可体验。",
6
6
  "repository": {
@@ -40,10 +40,10 @@
40
40
  "email": "wujixmm@gmail.com",
41
41
  "license": "AGPL-3.0-only",
42
42
  "dependencies": {
43
- "@ariga/atlas": "^1.3.0",
44
43
  "@huggingface/transformers": "^3.8.1",
45
44
  "@modelcontextprotocol/server": "2.0.0",
46
45
  "commander": "^13.1.0",
46
+ "find-up": "^8.0.0",
47
47
  "smol-toml": "^1.7.0",
48
48
  "vector-cosine-similarity": "^1.8.0",
49
49
  "zod": "^4.4.3"
@@ -54,6 +54,7 @@
54
54
  "@prisma/client": "^7.0.0",
55
55
  "dotenv": "*",
56
56
  "prisma": "^7.0.0",
57
+ "pg": "^8.16.0",
57
58
  "tsx": ">=4",
58
59
  "vector-cosine-similarity": "^1.8.0"
59
60
  },
@@ -73,6 +74,9 @@
73
74
  "@prisma/adapter-pg": {
74
75
  "optional": false
75
76
  },
77
+ "pg": {
78
+ "optional": true
79
+ },
76
80
  "@huggingface/transformers": {
77
81
  "optional": false
78
82
  }
@@ -80,12 +84,18 @@
80
84
  "devDependencies": {
81
85
  "@eslint/js": "^9.39.4",
82
86
  "@types/node": "^22.20.1",
87
+ "@types/pg": "^8.20.4",
88
+ "esbuild": "0.27.7",
83
89
  "eslint": "^9.39.4",
90
+ "pg": "^8.22.0",
84
91
  "tsup": "^8.4.0",
85
92
  "typescript": "^6.0.3",
86
93
  "typescript-eslint": "^8.62.1",
87
94
  "vitest": "^4.1.10"
88
95
  },
96
+ "optionalDependencies": {
97
+ "@ariga/atlas": "^1.3.0"
98
+ },
89
99
  "scripts": {
90
100
  "build": "tsup",
91
101
  "predev": "npm run db:ensure",
@@ -96,9 +106,10 @@
96
106
  "benchmark": "tsx scripts/benchmark/benchmark-sync.ts",
97
107
  "lint": "eslint src/",
98
108
  "lint:fix": "eslint src/ --fix",
99
- "generate": "tsx src/caijuehub/transcribe.ts",
109
+ "generate": "tsx src/caijuehub/transcribe/index.ts",
100
110
  "podman-add-coder-up": "podman-compose --env-file .env.development -f podman-compose.add.yml up -d",
101
111
  "podman-add-coder-down": "podman-compose --env-file .env.development -f podman-compose.add.yml down",
102
- "test": "vitest run"
112
+ "test": "vitest run",
113
+ "generate:check": "tsx scripts/generate-idempotency-check.ts"
103
114
  }
104
115
  }
@@ -1,103 +1,76 @@
1
1
  {
2
- "_version": "0.3.26",
3
- "adapters/claude/hooks/doc-format-guard.sh": "73f36a12",
4
- "adapters/claude/hooks/lib/common.sh": "4f3e64ad",
5
- "adapters/claude/hooks/lib/context-inject.sh": "cfc8c65e",
6
- "adapters/claude/hooks/lib/notify.sh": "e0033e53",
7
- "adapters/claude/hooks/lib/preload-templates.sh": "96dd67fe",
8
- "adapters/claude/hooks/lib/session-end.sh": "29813cbc",
9
- "adapters/claude/hooks/lib/state-detect.sh": "b87dd85a",
10
- "adapters/claude/hooks/lib/subagent-stop.sh": "4cc1d446",
11
- "adapters/claude/hooks/lib/vocabulary.sh": "d5a92ac3",
12
- "adapters/claude/hooks/notification.sh": "60bf9b01",
13
- "adapters/claude/hooks/permission-denied.sh": "0a0605df",
14
- "adapters/claude/hooks/permission-gate.sh": "bcca7732",
15
- "adapters/claude/hooks/post-tool-failure.sh": "669b1b65",
16
- "adapters/claude/hooks/post-tool-use.sh": "f54dd009",
17
- "adapters/claude/hooks/pre-compact.sh": "4248f84f",
18
- "adapters/claude/hooks/pre-tool-use.sh": "080f8979",
19
- "adapters/claude/hooks/prompt-submit.sh": "2fe9e42c",
20
- "adapters/claude/hooks/review-checklist.sh": "b383a983",
21
- "adapters/claude/hooks/session-end.sh": "777ae808",
22
- "adapters/claude/hooks/session-start.sh": "fd1d5e4f",
23
- "adapters/claude/hooks/stop-check.sh": "41bc519a",
24
- "adapters/claude/hooks/stop-failure.sh": "e3d6c335",
25
- "adapters/claude/hooks/subagent-guard.sh": "5922efba",
26
- "adapters/claude/hooks/subagent-stop.sh": "0f89e28c",
2
+ "_version": "0.3.28",
3
+ "adapters/claude/hooks/doc-format-guard.ts": "2abf8013",
4
+ "adapters/claude/hooks/lib/claude-env.ts": "170b40ca",
5
+ "adapters/claude/hooks/notification.ts": "f14ca7b6",
6
+ "adapters/claude/hooks/permission-denied.ts": "8d773db9",
7
+ "adapters/claude/hooks/permission-gate.ts": "858f2dc6",
8
+ "adapters/claude/hooks/post-tool-failure.ts": "8c53fdd4",
9
+ "adapters/claude/hooks/post-tool-use.ts": "54c1840a",
10
+ "adapters/claude/hooks/pre-compact.ts": "fdb49e54",
11
+ "adapters/claude/hooks/pre-tool-use.ts": "c47cc5d5",
12
+ "adapters/claude/hooks/prompt-submit.ts": "c3847e2a",
13
+ "adapters/claude/hooks/review-checklist.ts": "94695330",
14
+ "adapters/claude/hooks/session-end.ts": "3c963eae",
15
+ "adapters/claude/hooks/session-start.ts": "3f762d49",
16
+ "adapters/claude/hooks/stop-check.ts": "967fd318",
17
+ "adapters/claude/hooks/stop-failure.ts": "b132759b",
18
+ "adapters/claude/hooks/subagent-guard.ts": "f33fc276",
19
+ "adapters/claude/hooks/subagent-stop.ts": "b016ebdf",
27
20
  "adapters/claude/mcp.json": "4ddc5120",
28
- "adapters/claude/settings.json": "067ccc45",
29
- "adapters/codex/hooks/doc-format-guard.sh": "aea5f606",
30
- "adapters/codex/hooks/lib/common.sh": "4f3e64ad",
31
- "adapters/codex/hooks/lib/context-inject.sh": "cfc8c65e",
32
- "adapters/codex/hooks/lib/notify.sh": "e0033e53",
33
- "adapters/codex/hooks/lib/preload-templates.sh": "96dd67fe",
34
- "adapters/codex/hooks/lib/session-end.sh": "29813cbc",
35
- "adapters/codex/hooks/lib/state-detect.sh": "135bde23",
36
- "adapters/codex/hooks/lib/subagent-stop.sh": "4cc1d446",
37
- "adapters/codex/hooks/lib/vocabulary.sh": "d5a92ac3",
38
- "adapters/codex/hooks/notification.sh": "f7aed25d",
39
- "adapters/codex/hooks/permission-gate.sh": "bcca7732",
40
- "adapters/codex/hooks/post-tool-failure.sh": "669b1b65",
41
- "adapters/codex/hooks/post-tool-use.sh": "27123aee",
42
- "adapters/codex/hooks/pre-compact.sh": "6164c007",
43
- "adapters/codex/hooks/pre-tool-use.sh": "797664b8",
44
- "adapters/codex/hooks/prompt-submit.sh": "a41371ea",
45
- "adapters/codex/hooks/review-checklist.sh": "b383a983",
46
- "adapters/codex/hooks/session-end.sh": "3cc8c346",
47
- "adapters/codex/hooks/session-start.sh": "aa8faa0f",
48
- "adapters/codex/hooks/stop-check.sh": "dc4829be",
49
- "adapters/codex/hooks/subagent-guard.sh": "47d04662",
50
- "adapters/codex/hooks/subagent-stop.sh": "0a34648b",
51
- "adapters/codex/hooks.json": "d9c99f6b",
21
+ "adapters/claude/settings.json": "9cf9603a",
22
+ "adapters/codex/config.toml.example": "62c03d71",
23
+ "adapters/codex/hooks/doc-format-guard.ts": "566b835f",
24
+ "adapters/codex/hooks/notification.ts": "a4fd2749",
25
+ "adapters/codex/hooks/permission-gate.ts": "15af671c",
26
+ "adapters/codex/hooks/post-tool-failure.ts": "bddd1f4e",
27
+ "adapters/codex/hooks/post-tool-use.ts": "a7a2fc6c",
28
+ "adapters/codex/hooks/pre-compact.ts": "c0671f9b",
29
+ "adapters/codex/hooks/pre-tool-use.ts": "3750e60b",
30
+ "adapters/codex/hooks/prompt-submit.ts": "625cdc5e",
31
+ "adapters/codex/hooks/review-checklist.ts": "9a664173",
32
+ "adapters/codex/hooks/session-end.ts": "7fcb6f86",
33
+ "adapters/codex/hooks/session-start.ts": "4eacd44f",
34
+ "adapters/codex/hooks/stop-check.ts": "ee1801dd",
35
+ "adapters/codex/hooks/subagent-guard.ts": "e5ccf88b",
36
+ "adapters/codex/hooks/subagent-stop.ts": "a27e6a9e",
37
+ "adapters/codex/hooks.json": "3c78fb72",
52
38
  "adapters/codex/settings.json": "44136fa3",
53
- "adapters/qoder/hooks/doc-format-guard.sh": "6f8aa245",
54
- "adapters/qoder/hooks/lib/common.sh": "4f3e64ad",
55
- "adapters/qoder/hooks/lib/context-inject.sh": "cfc8c65e",
56
- "adapters/qoder/hooks/lib/notify.sh": "e0033e53",
57
- "adapters/qoder/hooks/lib/preload-templates.sh": "96dd67fe",
58
- "adapters/qoder/hooks/lib/session-end.sh": "29813cbc",
59
- "adapters/qoder/hooks/lib/state-detect.sh": "b87dd85a",
60
- "adapters/qoder/hooks/lib/subagent-stop.sh": "4cc1d446",
61
- "adapters/qoder/hooks/lib/vocabulary.sh": "d5a92ac3",
62
- "adapters/qoder/hooks/notification.sh": "7d4efea6",
63
- "adapters/qoder/hooks/permission-gate.sh": "3bf27b1a",
64
- "adapters/qoder/hooks/post-tool-failure.sh": "8bc7a0e4",
65
- "adapters/qoder/hooks/post-tool-use.sh": "051cb6ed",
66
- "adapters/qoder/hooks/pre-compact.sh": "092fa6cf",
67
- "adapters/qoder/hooks/pre-tool-use.sh": "565cff92",
68
- "adapters/qoder/hooks/prompt-submit.sh": "336f262e",
69
- "adapters/qoder/hooks/review-checklist.sh": "666831c8",
70
- "adapters/qoder/hooks/session-end.sh": "c50339df",
71
- "adapters/qoder/hooks/session-start.sh": "a4307a78",
72
- "adapters/qoder/hooks/stop-check.sh": "974db988",
73
- "adapters/qoder/hooks/subagent-guard.sh": "ce60eaac",
74
- "adapters/qoder/hooks/subagent-stop.sh": "5a2c78c6",
39
+ "adapters/qoder/hooks/doc-format-guard.ts": "12e360db",
40
+ "adapters/qoder/hooks/lib/context-inject.ts": "aaee941a",
41
+ "adapters/qoder/hooks/lib/qoder-env.ts": "ec8c3243",
42
+ "adapters/qoder/hooks/lib/review-checklist.ts": "23a06b37",
43
+ "adapters/qoder/hooks/notification.ts": "01a25a5b",
44
+ "adapters/qoder/hooks/permission-gate.ts": "8478e48e",
45
+ "adapters/qoder/hooks/post-tool-failure.ts": "b9439d5c",
46
+ "adapters/qoder/hooks/post-tool-use.ts": "c7e9ce26",
47
+ "adapters/qoder/hooks/pre-compact.ts": "70a8e8f8",
48
+ "adapters/qoder/hooks/pre-tool-use.ts": "2f0cab18",
49
+ "adapters/qoder/hooks/prompt-submit.ts": "9050e0cb",
50
+ "adapters/qoder/hooks/review-checklist.ts": "cf4ac191",
51
+ "adapters/qoder/hooks/session-end.ts": "e9bf7cd4",
52
+ "adapters/qoder/hooks/session-start.ts": "eeb089e0",
53
+ "adapters/qoder/hooks/stop-check.ts": "53447287",
54
+ "adapters/qoder/hooks/subagent-guard.ts": "0c10171b",
55
+ "adapters/qoder/hooks/subagent-stop.ts": "b41e08af",
75
56
  "adapters/qoder/mcp.json": "b2075957",
76
- "adapters/qoder/settings.json": "4bae3c9a",
57
+ "adapters/qoder/settings.json": "31799ee7",
77
58
  "adapters/qoder/sync-policy.json": "9cb6ff90",
78
- "adapters/trae/hooks/doc-format-guard.sh": "5f528aff",
79
- "adapters/trae/hooks/lib/common.sh": "4f3e64ad",
80
- "adapters/trae/hooks/lib/context-inject.sh": "cfc8c65e",
81
- "adapters/trae/hooks/lib/notify.sh": "e0033e53",
82
- "adapters/trae/hooks/lib/preload-templates.sh": "96dd67fe",
83
- "adapters/trae/hooks/lib/session-end.sh": "29813cbc",
84
- "adapters/trae/hooks/lib/state-detect.sh": "135bde23",
85
- "adapters/trae/hooks/lib/subagent-stop.sh": "4cc1d446",
86
- "adapters/trae/hooks/lib/vocabulary.sh": "d5a92ac3",
87
- "adapters/trae/hooks/notification.sh": "f7aed25d",
88
- "adapters/trae/hooks/permission-gate.sh": "bcca7732",
89
- "adapters/trae/hooks/post-tool-failure.sh": "669b1b65",
90
- "adapters/trae/hooks/post-tool-use.sh": "27123aee",
91
- "adapters/trae/hooks/pre-compact.sh": "6164c007",
92
- "adapters/trae/hooks/pre-tool-use.sh": "2d7fc7a7",
93
- "adapters/trae/hooks/prompt-submit.sh": "a41371ea",
94
- "adapters/trae/hooks/review-checklist.sh": "b383a983",
95
- "adapters/trae/hooks/session-end.sh": "3cc8c346",
96
- "adapters/trae/hooks/session-start.sh": "aa8faa0f",
97
- "adapters/trae/hooks/stop-check.sh": "dc4829be",
98
- "adapters/trae/hooks/subagent-guard.sh": "47d04662",
99
- "adapters/trae/hooks/subagent-stop.sh": "0a34648b",
100
- "adapters/trae/hooks.json": "e5045c2c",
59
+ "adapters/trae/hooks/doc-format-guard.ts": "14968f12",
60
+ "adapters/trae/hooks/notification.ts": "f0b4b606",
61
+ "adapters/trae/hooks/permission-gate.ts": "c53aedc7",
62
+ "adapters/trae/hooks/post-tool-failure.ts": "4cd97dac",
63
+ "adapters/trae/hooks/post-tool-use.ts": "7b1e2f4f",
64
+ "adapters/trae/hooks/pre-compact.ts": "5de3b0fe",
65
+ "adapters/trae/hooks/pre-tool-use.ts": "a7486c97",
66
+ "adapters/trae/hooks/prompt-submit.ts": "95ebd771",
67
+ "adapters/trae/hooks/review-checklist.ts": "343bd699",
68
+ "adapters/trae/hooks/session-end.ts": "64ce383f",
69
+ "adapters/trae/hooks/session-start.ts": "d6b4fdc7",
70
+ "adapters/trae/hooks/stop-check.ts": "b33ad5e4",
71
+ "adapters/trae/hooks/subagent-guard.ts": "eab8cbd9",
72
+ "adapters/trae/hooks/subagent-stop.ts": "5a9d53bb",
73
+ "adapters/trae/hooks.json": "e9d9eae7",
101
74
  "adapters/trae/settings.json": "ca3d163b",
102
75
  "adapters/vscode/.github/hooks/error-occurred.json": "9caa13dc",
103
76
  "adapters/vscode/.github/hooks/post-tool-use.json": "bff9d4d8",
@@ -110,60 +83,67 @@
110
83
  "adapters/vscode/.github/hooks/subagent-stop.json": "47dbdd8d",
111
84
  "adapters/vscode/.github/hooks/user-prompt-submit.json": "3a608d62",
112
85
  "adapters/vscode/extensions.json": "0f4024c1",
113
- "adapters/vscode/hooks/doc-format-guard.sh": "97a7370e",
114
- "adapters/vscode/hooks/lib/common.sh": "4f3e64ad",
115
- "adapters/vscode/hooks/lib/context-inject.sh": "cfc8c65e",
116
- "adapters/vscode/hooks/lib/notify.sh": "e0033e53",
117
- "adapters/vscode/hooks/lib/preload-templates.sh": "96dd67fe",
118
- "adapters/vscode/hooks/lib/session-end.sh": "29813cbc",
119
- "adapters/vscode/hooks/lib/state-detect.sh": "b87dd85a",
120
- "adapters/vscode/hooks/lib/subagent-stop.sh": "4cc1d446",
121
- "adapters/vscode/hooks/lib/vocabulary.sh": "d5a92ac3",
122
- "adapters/vscode/hooks/notification.sh": "f7aed25d",
123
- "adapters/vscode/hooks/permission-gate.sh": "bcca7732",
124
- "adapters/vscode/hooks/post-tool-failure.sh": "355cfab1",
125
- "adapters/vscode/hooks/post-tool-use.sh": "5f188718",
126
- "adapters/vscode/hooks/pre-compact.sh": "a0908f0e",
127
- "adapters/vscode/hooks/pre-tool-use.sh": "4bf878e7",
128
- "adapters/vscode/hooks/prompt-submit.sh": "3e56d1a9",
129
- "adapters/vscode/hooks/review-checklist.sh": "b383a983",
130
- "adapters/vscode/hooks/session-end.sh": "7b407b9f",
131
- "adapters/vscode/hooks/session-start.sh": "ad724a3e",
132
- "adapters/vscode/hooks/stop-check.sh": "df1ad9dd",
133
- "adapters/vscode/hooks/subagent-guard.sh": "5d0ea685",
134
- "adapters/vscode/hooks/subagent-stop.sh": "dd19f712",
86
+ "adapters/vscode/hooks/doc-format-guard.ts": "38e71c50",
87
+ "adapters/vscode/hooks/notification.ts": "5eed547d",
88
+ "adapters/vscode/hooks/permission-gate.ts": "ad096bc1",
89
+ "adapters/vscode/hooks/post-tool-failure.ts": "f7bc81b3",
90
+ "adapters/vscode/hooks/post-tool-use.ts": "42146851",
91
+ "adapters/vscode/hooks/pre-compact.ts": "15e4a043",
92
+ "adapters/vscode/hooks/pre-tool-use.ts": "8e8e588d",
93
+ "adapters/vscode/hooks/prompt-submit.ts": "767b13d2",
94
+ "adapters/vscode/hooks/review-checklist.ts": "f5fb4557",
95
+ "adapters/vscode/hooks/session-end.ts": "acdd9f42",
96
+ "adapters/vscode/hooks/session-start.ts": "54b262b0",
97
+ "adapters/vscode/hooks/stop-check.ts": "7a69b075",
98
+ "adapters/vscode/hooks/subagent-guard.ts": "773dc2c8",
99
+ "adapters/vscode/hooks/subagent-stop.ts": "a614b97d",
135
100
  "adapters/vscode/launch.json": "f2b79855",
136
101
  "adapters/vscode/settings.json": "7cabd00e",
137
102
  "adapters/vscode/tasks.json": "654d7fbd",
138
103
  "core/agents/add-flow-guardian.md": "c3e650d2",
139
- "core/docs/ADD-governance-claude-code.md": "0f582a7e",
140
- "core/docs/ADD-governance-codex.md": "289e8b71",
141
- "core/docs/ADD-governance-qoder-cn.md": "332a7253",
142
- "core/docs/ADD-governance-trae.md": "ffb29a0e",
143
- "core/docs/ADD-governance-vscode-copilot.md": "74062e88",
144
- "core/hooks/doc-format-guard.sh": "3a1beea8",
145
- "core/hooks/lib/common.sh": "4f3e64ad",
146
- "core/hooks/lib/context-inject.sh": "cfc8c65e",
147
- "core/hooks/lib/notify.sh": "e0033e53",
148
- "core/hooks/lib/preload-templates.sh": "96dd67fe",
149
- "core/hooks/lib/session-end.sh": "29813cbc",
150
- "core/hooks/lib/state-detect.sh": "135bde23",
151
- "core/hooks/lib/subagent-stop.sh": "4cc1d446",
152
- "core/hooks/lib/vocabulary.sh": "d5a92ac3",
153
- "core/hooks/notification.sh": "f7aed25d",
154
- "core/hooks/permission-gate.sh": "bcca7732",
155
- "core/hooks/post-tool-failure.sh": "669b1b65",
156
- "core/hooks/post-tool-use.sh": "27123aee",
157
- "core/hooks/pre-compact.sh": "6164c007",
158
- "core/hooks/pre-tool-use.sh": "f967ab24",
159
- "core/hooks/prompt-submit.sh": "a41371ea",
160
- "core/hooks/review-checklist.sh": "b383a983",
161
- "core/hooks/session-end.sh": "3cc8c346",
162
- "core/hooks/session-start.sh": "aa8faa0f",
163
- "core/hooks/stop-check.sh": "dc4829be",
164
- "core/hooks/subagent-guard.sh": "47d04662",
165
- "core/hooks/subagent-stop.sh": "0a34648b",
166
- "core/prisma/add.prisma": "037bd7e9",
104
+ "core/docs/ADD-governance-claude-code.md": "b11fabb9",
105
+ "core/docs/ADD-governance-codex.md": "7ce9443d",
106
+ "core/docs/ADD-governance-qoder-cn.md": "54d79441",
107
+ "core/docs/ADD-governance-trae.md": "ec2976ae",
108
+ "core/docs/ADD-governance-vscode-copilot.md": "ab7885a4",
109
+ "core/governance/audit-bridge.ts": "1a0d5ccd",
110
+ "core/governance/common.ts": "37570397",
111
+ "core/governance/context-inject.ts": "8ded8188",
112
+ "core/governance/doc-format-guard.ts": "70978fc9",
113
+ "core/governance/notification-router.ts": "526ee71c",
114
+ "core/governance/notify.ts": "b7e8543f",
115
+ "core/governance/permission-gate-router.ts": "e4fa8376",
116
+ "core/governance/post-tool-failure-router.ts": "7542b2a0",
117
+ "core/governance/post-tool-router.ts": "556f9200",
118
+ "core/governance/pre-compact-guard.ts": "e1c2b2e7",
119
+ "core/governance/pre-tool-guard.ts": "c64b7382",
120
+ "core/governance/preload-templates.ts": "cfd6d3ca",
121
+ "core/governance/prompt-router.ts": "15ca2987",
122
+ "core/governance/review-checklist-guard.ts": "b24568b1",
123
+ "core/governance/rules.ts": "ffd7b843",
124
+ "core/governance/session-end.ts": "108fc3f6",
125
+ "core/governance/session-start-guard.ts": "96666e11",
126
+ "core/governance/state-detect.ts": "55afc935",
127
+ "core/governance/stop-router.ts": "b59fb651",
128
+ "core/governance/subagent-guard-router.ts": "398fb80e",
129
+ "core/governance/subagent-stop-router.ts": "f331f59f",
130
+ "core/governance/subagent-stop.ts": "56101604",
131
+ "core/governance/vocabulary.ts": "477d762b",
132
+ "core/hooks/doc-format-guard.ts": "8d9b16a9",
133
+ "core/hooks/notification.ts": "00732f1c",
134
+ "core/hooks/permission-gate.ts": "32400e27",
135
+ "core/hooks/post-tool-failure.ts": "23c76f04",
136
+ "core/hooks/post-tool-use.ts": "9f3abfa1",
137
+ "core/hooks/pre-compact.ts": "ec87ebf1",
138
+ "core/hooks/pre-tool-use.ts": "8e1ee6ea",
139
+ "core/hooks/prompt-submit.ts": "eb0aabdd",
140
+ "core/hooks/review-checklist.ts": "c7b3bb50",
141
+ "core/hooks/session-end.ts": "b390ddb0",
142
+ "core/hooks/session-start.ts": "2a3f796c",
143
+ "core/hooks/stop-check.ts": "0c3fc40a",
144
+ "core/hooks/subagent-guard.ts": "37019300",
145
+ "core/hooks/subagent-stop.ts": "9eebd61f",
146
+ "core/prisma/add.prisma": "a543cd84",
167
147
  "core/reports/REPORT-WORKFLOW.md": "03d39b21",
168
148
  "core/reports/boundary-runtime-report.md": "6fd8053f",
169
149
  "core/reports/code-review-combined-report.md": "195d52aa",
@@ -175,58 +155,78 @@
175
155
  "core/rules/profiles/index.toml": "b83332d4",
176
156
  "core/rules/profiles/machineserver-profile.md": "8a36cf39",
177
157
  "core/rules/profiles/webapp-profile.md": "e493ae7b",
178
- "core/rules/project_rules.md": "82b25e08",
158
+ "core/rules/project_rules.md": "094821ad",
179
159
  "core/rules/theory-practice-map.toml": "b1db99fd",
180
- "core/scripts/db-ensure.sh": "1ef7a9f3",
181
- "core/scripts/gen-plan-index.sh": "bfc6ad3e",
160
+ "core/scripts/db-ensure.sh": "94a5ff92",
161
+ "core/scripts/gen-plan-index.sh": "47836bec",
182
162
  "core/scripts/mcp-server/elicitation/confirm.ts": "924857b8",
183
163
  "core/scripts/mcp-server/elicitation/index.ts": "44c5dc3f",
184
164
  "core/scripts/mcp-server/index.ts": "3483ec45",
185
- "core/scripts/mcp-server/notifications/hitl.ts": "96eb7c5d",
186
- "core/scripts/mcp-server/notifications/hook.ts": "a6cb861f",
165
+ "core/scripts/mcp-server/notifications/hitl.ts": "7b71338a",
166
+ "core/scripts/mcp-server/notifications/hook.ts": "31bc0ffb",
187
167
  "core/scripts/mcp-server/notifications/index.ts": "b6615afa",
188
168
  "core/scripts/mcp-server/resources/add-coder-version.ts": "2384fa40",
189
169
  "core/scripts/mcp-server/resources/add-state.ts": "1c1cc3a2",
190
- "core/scripts/mcp-server/resources/hook-events-report.ts": "1d4b5996",
191
- "core/scripts/mcp-server/resources/index.ts": "50e19629",
170
+ "core/scripts/mcp-server/resources/hitl-approval-widget.ts": "f663610e",
171
+ "core/scripts/mcp-server/resources/hook-events-report.ts": "9b62bacd",
172
+ "core/scripts/mcp-server/resources/index.ts": "d2d723f3",
192
173
  "core/scripts/mcp-server/resources/round-task.ts": "104a0d74",
193
174
  "core/scripts/mcp-server/sampling/index.ts": "7ee26d92",
194
- "core/scripts/mcp-server/sampling/review.ts": "5db7a8df",
195
- "core/scripts/mcp-server/shared/db-types.ts": "299915ee",
196
- "core/scripts/mcp-server/shared/dps-scoring.strategy.ts": "f1c901dc",
197
- "core/scripts/mcp-server/shared/env.ts": "57f4c2f2",
198
- "core/scripts/mcp-server/shared/fs.ts": "0e66a214",
199
- "core/scripts/mcp-server/shared/hitl-interaction.strategy.ts": "7c5c26f5",
175
+ "core/scripts/mcp-server/sampling/review.ts": "dd6e22ff",
176
+ "core/scripts/mcp-server/shared/db-types.ts": "bd97e8b6",
177
+ "core/scripts/mcp-server/shared/dps-scoring.strategy.ts": "92ecf32b",
178
+ "core/scripts/mcp-server/shared/env.ts": "f79ab09c",
179
+ "core/scripts/mcp-server/shared/fs.ts": "be216ce3",
180
+ "core/scripts/mcp-server/shared/hitl-interaction.strategy.ts": "dcfe946f",
181
+ "core/scripts/mcp-server/shared/hitl-lifecycle-mutation.ts": "06952c62",
182
+ "core/scripts/mcp-server/shared/hitl-proposal-mutation.ts": "87a7a372",
183
+ "core/scripts/mcp-server/shared/hitl-ui.ts": "51d574f2",
200
184
  "core/scripts/mcp-server/shared/package.json": "e3d5a4a2",
201
- "core/scripts/mcp-server/shared/prisma.ts": "a9618f99",
202
- "core/scripts/mcp-server/shared/project-root-strategy.ts": "1a5bdc57",
203
- "core/scripts/mcp-server/shared/response.ts": "f7806b67",
185
+ "core/scripts/mcp-server/shared/plan-lifecycle-events.ts": "ae99b9a0",
186
+ "core/scripts/mcp-server/shared/plan-lifecycle-mutation.ts": "303d9674",
187
+ "core/scripts/mcp-server/shared/plan-lifecycle-subscriber.ts": "1b1c2b84",
188
+ "core/scripts/mcp-server/shared/plan-lifecycle.ts": "6a49ff4d",
189
+ "core/scripts/mcp-server/shared/plan-round-events.ts": "86b6ba3f",
190
+ "core/scripts/mcp-server/shared/plan-round-mutation.ts": "c058e930",
191
+ "core/scripts/mcp-server/shared/plan-round-store.ts": "bc28bd09",
192
+ "core/scripts/mcp-server/shared/plan-round-subscriber.ts": "43fcf257",
193
+ "core/scripts/mcp-server/shared/plan-status-store.ts": "5b7bcfd2",
194
+ "core/scripts/mcp-server/shared/plan-tracking-mutation.ts": "2fd19676",
195
+ "core/scripts/mcp-server/shared/prisma.ts": "9be3b5bf",
196
+ "core/scripts/mcp-server/shared/project-root-strategy.ts": "8dde9bf3",
197
+ "core/scripts/mcp-server/shared/quant-recheck.strategy.ts": "12211d20",
198
+ "core/scripts/mcp-server/shared/redact.ts": "22e008aa",
199
+ "core/scripts/mcp-server/shared/response.ts": "0d1539a8",
204
200
  "core/scripts/mcp-server/shared/run-command.ts": "42caf972",
201
+ "core/scripts/mcp-server/shared/runtime-context.ts": "51d0b45f",
202
+ "core/scripts/mcp-server/shared/schema-topology.ts": "a680b738",
205
203
  "core/scripts/mcp-server/tasks/index.ts": "c040eb75",
206
204
  "core/scripts/mcp-server/tasks/runner.ts": "d84bd35d",
207
205
  "core/scripts/mcp-server/tasks/store.ts": "2fce1a92",
208
- "core/scripts/mcp-server/tools/audit.ts": "8564e46f",
209
- "core/scripts/mcp-server/tools/context.ts": "99a2ac03",
210
- "core/scripts/mcp-server/tools/contract.ts": "93dea040",
206
+ "core/scripts/mcp-server/tools/audit.ts": "705292b3",
207
+ "core/scripts/mcp-server/tools/context.ts": "d7d4e546",
208
+ "core/scripts/mcp-server/tools/contract.ts": "14b6ab8f",
211
209
  "core/scripts/mcp-server/tools/docs.ts": "034e473c",
212
210
  "core/scripts/mcp-server/tools/gateway/check_add_route_completeness.ts": "b58e76ee",
213
- "core/scripts/mcp-server/tools/gateway/check_add_route_status.ts": "23fbbb6b",
214
- "core/scripts/mcp-server/tools/gateway/check_dps.ts": "4d599b38",
215
- "core/scripts/mcp-server/tools/gateway/check_rahs.ts": "4078b0f1",
216
- "core/scripts/mcp-server/tools/gateway/check_spec_sync.ts": "486df441",
211
+ "core/scripts/mcp-server/tools/gateway/check_add_route_status.ts": "4caf552c",
212
+ "core/scripts/mcp-server/tools/gateway/check_doc_similarity.ts": "2cba51c5",
213
+ "core/scripts/mcp-server/tools/gateway/check_dps.ts": "92020f8e",
214
+ "core/scripts/mcp-server/tools/gateway/check_rahs.ts": "7091a262",
215
+ "core/scripts/mcp-server/tools/gateway/check_spec_sync.ts": "560a88ad",
217
216
  "core/scripts/mcp-server/tools/gateway/helpers.ts": "f8794a92",
218
- "core/scripts/mcp-server/tools/gateway/index.ts": "559acb75",
217
+ "core/scripts/mcp-server/tools/gateway/index.ts": "cffe9783",
219
218
  "core/scripts/mcp-server/tools/gateway.backup": "65eae393",
220
- "core/scripts/mcp-server/tools/hitl.ts": "d61277f5",
221
- "core/scripts/mcp-server/tools/hook-event-report.ts": "3f21836e",
222
- "core/scripts/mcp-server/tools/index.ts": "884172ba",
223
- "core/scripts/mcp-server/tools/plan.ts": "8ce5a7ab",
219
+ "core/scripts/mcp-server/tools/hitl.ts": "04b6b807",
220
+ "core/scripts/mcp-server/tools/hook-event-report.ts": "1d825b3f",
221
+ "core/scripts/mcp-server/tools/index.ts": "443128c8",
222
+ "core/scripts/mcp-server/tools/plan.ts": "d20b300c",
224
223
  "core/scripts/mcp-server/tools/quality.ts": "c4634453",
225
224
  "core/scripts/mcp-server/tools/registrar.ts": "efd81b3a",
226
- "core/scripts/mcp-server/tools/review.ts": "52d78450",
225
+ "core/scripts/mcp-server/tools/review.ts": "65c35e31",
227
226
  "core/scripts/mcp-server/types.ts": "6c5e60bc",
228
- "core/scripts/mcp-server.ts": "99cc6833",
229
- "core/skills/add-paradigm/SKILL.md": "5d4fa389",
227
+ "core/scripts/mcp-server.ts": "0c9b0666",
228
+ "core/scripts/plan-status-bridge.ts": "70c5d8b7",
229
+ "core/skills/add-paradigm/SKILL.md": "55df369a",
230
230
  "core/skills/session-init/SKILL.md": "bb1205b0",
231
231
  "core/specs/add-coder-npm-package/checklist.md": "ed92032c",
232
232
  "core/specs/add-coder-npm-package/spec.md": "c7d0f235",
@@ -235,18 +235,20 @@
235
235
  "core/templates/TERMINOLOGY.md": "e9f4f781",
236
236
  "core/templates/add-route-template-heavyweight.md": "0e107ac0",
237
237
  "core/templates/add-route-template.md": "da7022df",
238
- "core/templates/add-route-template.schema.json": "867a45c1",
238
+ "core/templates/add-route-template.schema.json": "cca77a6e",
239
239
  "core/templates/checklist-template.md": "d6b73a5c",
240
240
  "core/templates/checklist-template.schema.json": "fb3a73e8",
241
- "core/templates/collab-contract-template.md": "bccba0fd",
241
+ "core/templates/collab-contract-template.md": "b8a52503",
242
242
  "core/templates/collab-contract-template.schema.json": "ae0f482c",
243
243
  "core/templates/fix-verification-template.md": "9c9ed175",
244
244
  "core/templates/fix-verification-template.schema.json": "a18bc6a5",
245
245
  "core/templates/handoff-multi-round-template.md": "d3a2375d",
246
+ "core/templates/handoff-multi-round-template.schema.json": "c752a9dc",
246
247
  "core/templates/handoff-multi-round.schema.json": "abed4220",
247
248
  "core/templates/handoff-single-round-template.md": "dceb7c86",
248
- "core/templates/handoff-single-round.schema.json": "0627cda2",
249
- "core/templates/hitl-approval-widget.html": "b31f3d0f",
249
+ "core/templates/handoff-single-round-template.schema.json": "201f8b5c",
250
+ "core/templates/handoff-single-round.schema.json": "19486507",
251
+ "core/templates/hitl-approval-widget.html": "7045227d",
250
252
  "core/templates/hitl-template.md": "44989804",
251
253
  "core/templates/hitl-template.schema.json": "e7ecc53e",
252
254
  "core/templates/index.md": "0fb42ea5",
@@ -268,12 +270,11 @@
268
270
  "core/templates/simple-plan-template.md": "5b2d8dd6",
269
271
  "core/templates/simple-plan-template.schema.json": "02718806",
270
272
  "core/templates/spec-template.md": "619b01cc",
271
- "core/templates/spec-template.schema.json": "051b6e5d",
273
+ "core/templates/spec-template.schema.json": "9e5d530b",
272
274
  "core/templates/standard-plan-template.md": "7beafc59",
273
- "core/templates/standard-plan-template.schema.json": "ca2bbb11",
275
+ "core/templates/standard-plan-template.schema.json": "95dc6e03",
274
276
  "core/templates/tasks-template.md": "2b9d0d52",
275
- "core/templates/tasks-template.schema.json": "fff6eb47",
277
+ "core/templates/tasks-template.schema.json": "2e691c8a",
276
278
  "core/tools/README.md": "26a63460",
277
- "core/vocabulary/add-governance-vocabulary.md": "ee9e2bd2",
278
- "shared/hooks-lib/common.sh": "441eee52"
279
+ "core/vocabulary/add-governance-vocabulary.md": "ee9e2bd2"
279
280
  }
@@ -0,0 +1,32 @@
1
+ // doc-format-guard.ts — schema.json 驱动的 ADD 文档格式守卫(Claude 版,Task 3.1 子类最小化)
2
+ // 继承 core DocFormatGuard;差异点仅两个(bash 原文 L87-104 逐字对照):
3
+ // ① 内容探测链: 加载 [doc.adapter_content_rules] claude 独立链(构造参数 adapterName)
4
+ // ——「## 四、Handoff」分支前置 + simple-standard-plan-template.md 映射
5
+ // ② 无算法规则段(反作弊/HITL 表/handoff 冲突不校验)——override runAlgoChecks
6
+
7
+ import { readFileSync } from "node:fs"
8
+ import { DocFormatGuard } from "../../../core/governance/doc-format-guard.js"
9
+
10
+ class ClaudeDocFormatGuard extends DocFormatGuard {
11
+ constructor(projectDir: string, magicDir: string) {
12
+ super(projectDir, magicDir, "claude")
13
+ }
14
+
15
+ /** 差异点 ②: claude 版无算法规则段 */
16
+ protected override runAlgoChecks(_templateName: string, _filePath: string, _content: string): void {
17
+ // claude 版不执行算法化规则校验(bash 原文无此段)
18
+ }
19
+ }
20
+
21
+ // ── 主入口 ──
22
+ const PROJECT_DIR = process.env.PROJECT_DIR || process.cwd()
23
+ const MAGIC_DIR = process.env.MAGIC_DIR || ".qoder"
24
+
25
+ const guard = new ClaudeDocFormatGuard(PROJECT_DIR, MAGIC_DIR)
26
+ let raw = ""
27
+ try {
28
+ raw = readFileSync(0, "utf-8")
29
+ } catch {
30
+ raw = ""
31
+ }
32
+ process.exitCode = guard.run(raw)
@@ -0,0 +1,7 @@
1
+ // lib/claude-env.ts — Claude 私有环境解析(CLAUDE_PROJECT_DIR 优先)
2
+ // 契约: claude 端所有 hook 的 PROJECT_DIR 来源 = ${CLAUDE_PROJECT_DIR:-$PWD}
3
+
4
+ /** Claude 项目目录解析(对齐 bash ${CLAUDE_PROJECT_DIR:-$PWD}) */
5
+ export function resolveClaudeProjectDir(): string {
6
+ return process.env.CLAUDE_PROJECT_DIR || process.cwd()
7
+ }
@@ -0,0 +1,24 @@
1
+ // notification.ts — Notification 入口(Claude 版,Task 3.1 继承体系)
2
+ // 继承 core NotificationRouter,命名子类 ClaudeNotificationRouter:
3
+ // ① 探测循环(.claude/.qoder/.vscode/.add)与 reviews 提醒 = 基类(bash 原文逐字对齐)
4
+ // ② 兜底 magicDir = ".claude"(构造参数注入,claude 协议差异)
5
+ // ③ 提醒文本 = 基类默认(含 Plan 前缀,与 claude bash 原文一致)
6
+ // 协议差异仅剩: PROJECT_DIR 来源 CLAUDE_PROJECT_DIR(claude-env 注入链)
7
+
8
+ import { readHookInput } from "../../../core/governance/common.js"
9
+ import { NotificationRouter } from "../../../core/governance/notification-router.js"
10
+ import { resolveClaudeProjectDir } from "./lib/claude-env.js"
11
+
12
+ class ClaudeNotificationRouter extends NotificationRouter {
13
+ /** 协议差异封装: fallbackMagicDir = ".claude"(claude 端兜底,bash 原文逐字) */
14
+ constructor(projectDir: string) {
15
+ super(projectDir, ".claude")
16
+ }
17
+
18
+ // 当前无 override(提醒文本与 core 基线一致);命名子类承载端身份 + 未来演进位
19
+ }
20
+
21
+ process.env.PROJECT_DIR = resolveClaudeProjectDir()
22
+
23
+ const input = readHookInput()
24
+ process.exit(new ClaudeNotificationRouter(process.env.PROJECT_DIR).run(input))