@gong-ym/ai-spec-auto 0.2.14 → 0.2.15

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 (631) hide show
  1. package/.agents/commands/README.md +33 -33
  2. package/.agents/commands/claude/spec-start-review.md +88 -88
  3. package/.agents/commands/codex/spec-continue.md +74 -74
  4. package/.agents/commands/codex/spec-orchestrate.md +35 -35
  5. package/.agents/commands/codex/spec-start-review.md +88 -88
  6. package/.agents/commands/codex/spec-start.md +67 -67
  7. package/.agents/commands/codex/spec-status.md +22 -22
  8. package/.agents/commands/codex/spec-stop.md +29 -29
  9. package/.agents/commands/codex/spec-update.md +40 -40
  10. package/.agents/commands/common/branch-review.md +117 -117
  11. package/.agents/commands/common/project-init.md +25 -25
  12. package/.agents/commands/common/spec-continue.md +74 -74
  13. package/.agents/commands/common/spec-orchestrate.md +35 -35
  14. package/.agents/commands/common/spec-start-review.md +82 -82
  15. package/.agents/commands/common/spec-start.md +67 -67
  16. package/.agents/commands/common/spec-status.md +22 -22
  17. package/.agents/commands/common/spec-stop.md +29 -29
  18. package/.agents/commands/common/spec-update.md +60 -40
  19. package/.agents/commands/cursor/opsx-apply.md +55 -55
  20. package/.agents/commands/cursor/opsx-archive.md +48 -48
  21. package/.agents/commands/cursor/opsx-explore.md +45 -45
  22. package/.agents/commands/cursor/opsx-propose.md +59 -59
  23. package/.agents/commands/cursor/spec-continue.md +63 -63
  24. package/.agents/commands/cursor/spec-orchestrate.md +53 -53
  25. package/.agents/commands/cursor/spec-start-review.md +78 -78
  26. package/.agents/commands/cursor/spec-start.md +59 -59
  27. package/.agents/commands/cursor/spec-status.md +30 -30
  28. package/.agents/commands/cursor/spec-stop.md +29 -29
  29. package/.agents/commands/cursor/spec-update.md +41 -41
  30. package/.agents/flows/FRONTMATTER.md +263 -263
  31. package/.agents/flows/RUN_OUTPUT.md +263 -263
  32. package/.agents/flows/common/README.md +29 -29
  33. package/.agents/flows/common/bugfix-to-verification.md +95 -95
  34. package/.agents/flows/common/change-to-architecture-review.md +89 -89
  35. package/.agents/flows/common/change-to-release.md +94 -94
  36. package/.agents/flows/common/prd-to-delivery.md +184 -184
  37. package/.agents/flows/common/requirement-to-observability.md +97 -97
  38. package/.agents/orchestration/README.md +22 -22
  39. package/.agents/orchestration/expert-dispatch-spec.md +155 -155
  40. package/.agents/orchestration/expert-executor-spec.md +84 -84
  41. package/.agents/orchestration/expert-runtime-action-spec.md +73 -73
  42. package/.agents/orchestration/runtime-state-handoff-spec.md +264 -264
  43. package/.agents/orchestration/task-anchor-spec.md +212 -212
  44. package/.agents/orchestration/task-orchestrator-adapter-payload.md +153 -153
  45. package/.agents/orchestration/task-orchestrator-bootstrap-payload.md +145 -145
  46. package/.agents/orchestration/task-orchestrator-output-extractor-spec.md +93 -93
  47. package/.agents/orchestration/task-orchestrator-run-plan-template.md +312 -312
  48. package/.agents/orchestration/task-orchestrator-runtime-hooks.md +214 -214
  49. package/.agents/registry/README.md +63 -63
  50. package/.agents/registry/flows.json +125 -125
  51. package/.agents/registry/profiles.json +101 -101
  52. package/.agents/registry/roles.json +1265 -1265
  53. package/.agents/registry/rules.json +148 -148
  54. package/.agents/registry/scenario-packages.json +123 -123
  55. package/.agents/registry/skills.json +130 -130
  56. package/.agents/roles/INDEX.md +346 -346
  57. package/.agents/roles/common/README.md +76 -76
  58. package/.agents/roles/common/archive-change.md +80 -80
  59. package/.agents/roles/common/backend-implementer.md +92 -92
  60. package/.agents/roles/common/code-guardian.md +151 -151
  61. package/.agents/roles/common/frontend-implementer.md +146 -146
  62. package/.agents/roles/common/requirement-analyst.md +138 -138
  63. package/.agents/roles/common/task-orchestrator-routing.md +301 -301
  64. package/.agents/roles/common/task-orchestrator.md +224 -224
  65. package/.agents/roles/common/tooling-implementer.md +92 -92
  66. package/.agents/roles/domains/README.md +35 -35
  67. package/.agents/roles/domains/delivery/README.md +11 -11
  68. package/.agents/roles/domains/delivery/container-specialist.md +50 -50
  69. package/.agents/roles/domains/delivery/deployment-specialist.md +50 -50
  70. package/.agents/roles/domains/delivery/pipeline-specialist.md +50 -50
  71. package/.agents/roles/domains/demand-design/README.md +16 -16
  72. package/.agents/roles/domains/demand-design/api-contract-specialist.md +52 -52
  73. package/.agents/roles/domains/demand-design/design-collaborator.md +58 -58
  74. package/.agents/roles/domains/documentation/README.md +11 -11
  75. package/.agents/roles/domains/documentation/api-doc-specialist.md +50 -50
  76. package/.agents/roles/domains/documentation/component-doc-specialist.md +49 -49
  77. package/.agents/roles/domains/documentation/technical-writing-specialist.md +48 -48
  78. package/.agents/roles/domains/engineering/README.md +17 -17
  79. package/.agents/roles/domains/engineering/architecture-advisor.md +53 -53
  80. package/.agents/roles/domains/engineering/build-specialist.md +51 -51
  81. package/.agents/roles/domains/engineering/dependency-governor.md +52 -52
  82. package/.agents/roles/domains/governance/README.md +17 -17
  83. package/.agents/roles/domains/governance/api-governance-specialist.md +51 -51
  84. package/.agents/roles/domains/governance/lint-policy-specialist.md +49 -49
  85. package/.agents/roles/domains/governance/route-governance-specialist.md +52 -52
  86. package/.agents/roles/domains/observability/README.md +11 -11
  87. package/.agents/roles/domains/observability/error-tracker.md +50 -50
  88. package/.agents/roles/domains/observability/event-instrumentation-specialist.md +51 -51
  89. package/.agents/roles/domains/observability/rum-analyst.md +50 -50
  90. package/.agents/roles/domains/performance/README.md +11 -11
  91. package/.agents/roles/domains/performance/asset-optimizer.md +50 -50
  92. package/.agents/roles/domains/performance/performance-auditor.md +56 -56
  93. package/.agents/roles/domains/performance/vitals-analyst.md +50 -50
  94. package/.agents/roles/domains/security-a11y/README.md +11 -11
  95. package/.agents/roles/domains/security-a11y/a11y-auditor.md +50 -50
  96. package/.agents/roles/domains/security-a11y/aria-specialist.md +51 -51
  97. package/.agents/roles/domains/security-a11y/security-reviewer.md +49 -49
  98. package/.agents/roles/domains/testing/README.md +12 -12
  99. package/.agents/roles/domains/testing/coverage-analyst.md +50 -50
  100. package/.agents/roles/domains/testing/e2e-test-specialist.md +51 -51
  101. package/.agents/roles/domains/testing/unit-test-specialist.md +56 -56
  102. package/.agents/roles/domains/testing/verification-reviewer.md +67 -67
  103. package/.agents/rules/README.md +87 -87
  104. package/.agents/rules/common/02-/347/274/226/347/240/201/350/247/204/350/214/203.md +45 -45
  105. package/.agents/rules/common/08-/351/200/232/347/224/250/347/272/246/346/235/237.md +63 -63
  106. package/.agents/rules/common/10-/346/226/207/346/241/243/350/247/204/350/214/203.md +101 -101
  107. package/.agents/rules/common/12-Superpowers/346/211/247/350/241/214/350/247/204/350/214/203.md +46 -46
  108. package/.agents/rules/common/14-/345/256/241/350/256/241/346/261/207/346/212/245/350/247/204/350/214/203.md +107 -107
  109. package/.agents/rules/common/15-visual-gate-wait.md +90 -90
  110. package/.agents/rules/profiles/nestjs/01-/351/241/271/347/233/256/346/246/202/350/277/260.md +27 -27
  111. package/.agents/rules/profiles/nestjs/03-/351/241/271/347/233/256/347/273/223/346/236/204.md +20 -20
  112. package/.agents/rules/profiles/nestjs/04-/346/250/241/345/235/227/347/273/223/346/236/204/350/247/204/350/214/203.md +24 -24
  113. package/.agents/rules/profiles/nestjs/05-/346/216/245/345/217/243/344/270/216/345/245/221/347/272/246/350/247/204/350/214/203.md +24 -24
  114. package/.agents/rules/profiles/nestjs/06-/346/225/260/346/215/256/350/256/277/351/227/256/350/247/204/350/214/203.md +24 -24
  115. package/.agents/rules/profiles/nestjs/07-/351/205/215/347/275/256/344/270/216/350/277/220/350/241/214/346/227/266/350/247/204/350/214/203.md +20 -20
  116. package/.agents/rules/profiles/nestjs/09-/345/274/202/345/270/270/344/270/216/346/227/245/345/277/227/350/247/204/350/214/203.md +20 -20
  117. package/.agents/rules/profiles/nestjs/11-/346/265/213/350/257/225/350/247/204/350/214/203.md +24 -24
  118. package/.agents/rules/profiles/nestjs/13-/344/273/243/347/240/201/346/240/274/345/274/217/345/214/226/344/270/216/346/243/200/346/237/245.md +20 -20
  119. package/.agents/rules/profiles/node-tooling/01-/351/241/271/347/233/256/346/246/202/350/277/260.md +30 -30
  120. package/.agents/rules/profiles/node-tooling/03-/351/241/271/347/233/256/347/273/223/346/236/204.md +37 -37
  121. package/.agents/rules/profiles/node-tooling/04-CLI/344/270/216/346/250/241/345/235/227/350/247/204/350/214/203.md +42 -42
  122. package/.agents/rules/profiles/node-tooling/05-Contract/344/270/216Schema/350/247/204/350/214/203.md +42 -42
  123. package/.agents/rules/profiles/node-tooling/06-/350/277/220/350/241/214/346/227/266/346/226/207/344/273/266/350/247/204/350/214/203.md +30 -30
  124. package/.agents/rules/profiles/node-tooling/07-/346/227/245/345/277/227/344/270/216/351/224/231/350/257/257/345/244/204/347/220/206/350/247/204/350/214/203.md +60 -60
  125. package/.agents/rules/profiles/node-tooling/09-/350/204/232/346/234/254/344/270/216/345/205/245/345/217/243/350/247/204/350/214/203.md +45 -45
  126. package/.agents/rules/profiles/node-tooling/11-/346/265/213/350/257/225/350/247/204/350/214/203.md +41 -41
  127. package/.agents/rules/profiles/node-tooling/13-/344/273/243/347/240/201/346/240/274/345/274/217/345/214/226/344/270/216/346/243/200/346/237/245.md +55 -55
  128. package/.agents/rules/profiles/react/01-/351/241/271/347/233/256/346/246/202/350/277/260.md +29 -29
  129. package/.agents/rules/profiles/react/03-/351/241/271/347/233/256/347/273/223/346/236/204.md +104 -104
  130. package/.agents/rules/profiles/react/04-/347/273/204/344/273/266/350/247/204/350/214/203.md +46 -46
  131. package/.agents/rules/profiles/react/05-API/350/247/204/350/214/203.md +67 -67
  132. package/.agents/rules/profiles/react/06-/350/267/257/347/224/261/350/247/204/350/214/203.md +54 -54
  133. package/.agents/rules/profiles/react/07-/347/212/266/346/200/201/347/256/241/347/220/206.md +226 -226
  134. package/.agents/rules/profiles/react/09-/346/240/267/345/274/217/350/247/204/350/214/203.md +71 -71
  135. package/.agents/rules/profiles/react/11-/346/265/213/350/257/225/350/247/204/350/214/203.md +80 -80
  136. package/.agents/rules/profiles/react/13-/344/273/243/347/240/201/346/240/274/345/274/217/345/214/226/344/270/216/346/243/200/346/237/245.md +159 -159
  137. package/.agents/rules/profiles/springboot/01-/351/241/271/347/233/256/346/246/202/350/277/260.md +31 -31
  138. package/.agents/rules/profiles/springboot/03-/351/241/271/347/233/256/347/273/223/346/236/204.md +37 -37
  139. package/.agents/rules/profiles/springboot/04-/345/210/206/345/261/202/350/247/204/350/214/203.md +33 -33
  140. package/.agents/rules/profiles/springboot/05-/346/216/245/345/217/243/344/270/216/345/245/221/347/272/246/350/247/204/350/214/203.md +51 -51
  141. package/.agents/rules/profiles/springboot/06-/346/225/260/346/215/256/350/256/277/351/227/256/350/247/204/350/214/203.md +34 -34
  142. package/.agents/rules/profiles/springboot/07-/351/205/215/347/275/256/344/270/216/350/277/220/350/241/214/346/227/266/350/247/204/350/214/203.md +38 -38
  143. package/.agents/rules/profiles/springboot/09-/345/274/202/345/270/270/344/270/216/346/227/245/345/277/227/350/247/204/350/214/203.md +48 -48
  144. package/.agents/rules/profiles/springboot/11-/346/265/213/350/257/225/350/247/204/350/214/203.md +43 -43
  145. package/.agents/rules/profiles/springboot/13-/344/273/243/347/240/201/346/240/274/345/274/217/345/214/226/344/270/216/346/243/200/346/237/245.md +48 -48
  146. package/.agents/rules/profiles/vue/01-/351/241/271/347/233/256/346/246/202/350/277/260.md +47 -47
  147. package/.agents/rules/profiles/vue/03-/351/241/271/347/233/256/347/273/223/346/236/204.md +106 -106
  148. package/.agents/rules/profiles/vue/04-/347/273/204/344/273/266/350/247/204/350/214/203.md +61 -61
  149. package/.agents/rules/profiles/vue/05-API/350/247/204/350/214/203.md +67 -67
  150. package/.agents/rules/profiles/vue/06-/350/267/257/347/224/261/350/247/204/350/214/203.md +69 -69
  151. package/.agents/rules/profiles/vue/07-/347/212/266/346/200/201/347/256/241/347/220/206.md +93 -93
  152. package/.agents/rules/profiles/vue/09-/346/240/267/345/274/217/350/247/204/350/214/203.md +67 -67
  153. package/.agents/rules/profiles/vue/11-/346/265/213/350/257/225/350/247/204/350/214/203.md +80 -80
  154. package/.agents/rules/profiles/vue/13-/344/273/243/347/240/201/346/240/274/345/274/217/345/214/226/344/270/216/346/243/200/346/237/245.md +159 -159
  155. package/.agents/skills/README.md +171 -171
  156. package/.agents/skills/common/archive-change/SKILL.md +180 -180
  157. package/.agents/skills/common/branch-code-reviewer/SKILL.md +533 -533
  158. package/.agents/skills/common/branch-code-reviewer/references/business-risk-guide.md +293 -293
  159. package/.agents/skills/common/branch-code-reviewer/references/html-template-guide.md +121 -121
  160. package/.agents/skills/common/config-and-secret-scan/SKILL.md +99 -99
  161. package/.agents/skills/common/create-proposal/SKILL.md +192 -192
  162. package/.agents/skills/common/create-proposal/evals/evals.json +16 -16
  163. package/.agents/skills/common/create-proposal/evals/train_queries.json +18 -18
  164. package/.agents/skills/common/create-proposal/evals/validation_queries.json +18 -18
  165. package/.agents/skills/common/create-proposal/references/interaction-spec-template.md +42 -42
  166. package/.agents/skills/common/create-test/SKILL.md +292 -292
  167. package/.agents/skills/common/dependency-impact-graph/SKILL.md +80 -80
  168. package/.agents/skills/common/execute-task/SKILL.md +206 -206
  169. package/.agents/skills/common/execute-task/evals/evals.json +16 -16
  170. package/.agents/skills/common/execute-task/evals/train_queries.json +18 -18
  171. package/.agents/skills/common/execute-task/evals/validation_queries.json +18 -18
  172. package/.agents/skills/common/find-skills/SKILL.md +144 -144
  173. package/.agents/skills/common/install-ai-spec-auto/SKILL.md +260 -260
  174. package/.agents/skills/common/install-ai-spec-auto/evals/evals.json +17 -17
  175. package/.agents/skills/common/install-ai-spec-auto/evals/train_queries.json +18 -18
  176. package/.agents/skills/common/install-ai-spec-auto/evals/validation_queries.json +18 -18
  177. package/.agents/skills/common/project-init/SKILL.md +178 -178
  178. package/.agents/skills/common/project-init/evals/evals.json +16 -16
  179. package/.agents/skills/common/project-init/evals/train_queries.json +18 -18
  180. package/.agents/skills/common/project-init/evals/validation_queries.json +18 -18
  181. package/.agents/skills/common/project-init/references/custom-rule-generation.md +89 -89
  182. package/.agents/skills/common/project-init/references/deep-scan-rules.md +67 -67
  183. package/.agents/skills/common/project-init/references/output-contracts.md +71 -71
  184. package/.agents/skills/common/project-init/references/repo-fact-gathering.md +83 -83
  185. package/.agents/skills/common/project-init/references/scope-resolution.md +76 -76
  186. package/.agents/skills/common/project-init/scripts/inspect-project.js +112 -112
  187. package/.agents/skills/common/skill-creator/LICENSE.txt +201 -201
  188. package/.agents/skills/common/skill-creator/SKILL.md +370 -370
  189. package/.agents/skills/common/skill-creator/evals/evals.json +16 -16
  190. package/.agents/skills/common/skill-creator/evals/train_queries.json +18 -18
  191. package/.agents/skills/common/skill-creator/evals/validation_queries.json +18 -18
  192. package/.agents/skills/common/skill-creator/references/output-patterns.md +82 -82
  193. package/.agents/skills/common/skill-creator/references/workflows.md +27 -27
  194. package/.agents/skills/common/skill-creator/scripts/init_skill.py +209 -209
  195. package/.agents/skills/common/skill-creator/scripts/package_skill.py +110 -110
  196. package/.agents/skills/common/skill-creator/scripts/quick_validate.py +51 -51
  197. package/.agents/skills/common/skill-optimizer/SKILL.md +102 -102
  198. package/.agents/skills/common/skill-optimizer/evals/evals.json +16 -16
  199. package/.agents/skills/common/skill-optimizer/evals/train_queries.json +18 -18
  200. package/.agents/skills/common/skill-optimizer/evals/validation_queries.json +18 -18
  201. package/.agents/skills/common/skill-optimizer/references/design-patterns.md +26 -26
  202. package/.agents/skills/common/skill-optimizer/references/review-checklist.md +22 -22
  203. package/.agents/skills/common/using-superpowers/SKILL.md +151 -151
  204. package/.agents/skills/common/wait-for-gate-signal/SKILL.md +85 -85
  205. package/.agents/skills/domains/README.md +19 -19
  206. package/.agents/skills/domains/ui-ux-pro-max/SKILL.md +58 -58
  207. package/.agents/skills/domains/web/design-analysis/SKILL.md +89 -89
  208. package/.agents/skills/domains/web/design-analysis/rules/analysis-order.md +61 -61
  209. package/.agents/skills/domains/web/design-analysis/rules/analysis-priorities.md +136 -136
  210. package/.agents/skills/domains/web/design-analysis/rules/checklist-common-misses.md +107 -107
  211. package/.agents/skills/domains/web/design-analysis/rules/implementation-common-errors.md +204 -204
  212. package/.agents/skills/domains/web/design-analysis/rules/implementation-guidelines.md +211 -211
  213. package/.agents/skills/domains/web/design-analysis/rules/output-analysis-checklist.md +247 -247
  214. package/.agents/skills/domains/web/design-analysis/rules/tools-design-guidelines.md +108 -108
  215. package/.agents/skills/domains/web/design-analysis/rules/workflow-element-extraction.md +162 -162
  216. package/.agents/skills/domains/web/design-analysis/rules/workflow-layout-map.md +131 -131
  217. package/.agents/skills/domains/web/design-analysis/rules/workflow-output-checklist.md +70 -70
  218. package/.agents/skills/domains/web/design-analysis/rules/workflow-style-summary.md +91 -91
  219. package/.agents/skills/domains/web/route-permission-map/SKILL.md +103 -103
  220. package/.agents/skills/domains/web/ui-verification/SKILL.md +114 -114
  221. package/.agents/skills/domains/web/ui-verification/evals/evals.json +16 -16
  222. package/.agents/skills/domains/web/ui-verification/evals/train_queries.json +18 -18
  223. package/.agents/skills/domains/web/ui-verification/evals/validation_queries.json +18 -18
  224. package/.agents/skills/domains/web/ui-verification/rules/comparison-content-image.md +34 -34
  225. package/.agents/skills/domains/web/ui-verification/rules/comparison-content-text.md +30 -30
  226. package/.agents/skills/domains/web/ui-verification/rules/comparison-hierarchy.md +33 -33
  227. package/.agents/skills/domains/web/ui-verification/rules/comparison-layout.md +35 -35
  228. package/.agents/skills/domains/web/ui-verification/rules/errors-alignment.md +42 -42
  229. package/.agents/skills/domains/web/ui-verification/rules/errors-button-dimensions.md +28 -28
  230. package/.agents/skills/domains/web/ui-verification/rules/errors-button-position.md +25 -25
  231. package/.agents/skills/domains/web/ui-verification/rules/errors-css-priority.md +50 -50
  232. package/.agents/skills/domains/web/ui-verification/rules/errors-flex-column-width.md +46 -46
  233. package/.agents/skills/domains/web/ui-verification/rules/errors-flex-layout.md +46 -46
  234. package/.agents/skills/domains/web/ui-verification/rules/errors-grid-container-width.md +44 -44
  235. package/.agents/skills/domains/web/ui-verification/rules/errors-page-container-width.md +39 -39
  236. package/.agents/skills/domains/web/ui-verification/rules/tools-browser-navigation.md +53 -53
  237. package/.agents/skills/domains/web/ui-verification/rules/tools-design-guidelines.md +53 -53
  238. package/.agents/skills/domains/web/ui-verification/rules/workflow-checklist.md +27 -27
  239. package/.agents/skills/domains/web/ui-verification/rules/workflow-problem-list.md +56 -56
  240. package/.agents/skills/domains/web/ui-verification/rules/workflow-reflection.md +44 -44
  241. package/.agents/skills/domains/web/ui-verification/rules/writing-alignment.md +44 -44
  242. package/.agents/skills/domains/web/ui-verification/rules/writing-element-completeness.md +63 -63
  243. package/.agents/skills/domains/web/ui-verification/rules/writing-list-layout.md +75 -75
  244. package/.agents/skills/domains/web/ui-verification/rules/writing-page-container-width.md +37 -37
  245. package/.agents/skills/domains/web/web-design-guidelines/SKILL.md +40 -40
  246. package/.agents/skills/profiles/nestjs/README.md +4 -4
  247. package/.agents/skills/profiles/node-tooling/README.md +9 -9
  248. package/.agents/skills/profiles/react/create-api/SKILL.md +145 -145
  249. package/.agents/skills/profiles/react/create-component/SKILL.md +160 -160
  250. package/.agents/skills/profiles/react/create-route/SKILL.md +168 -168
  251. package/.agents/skills/profiles/react/create-store/SKILL.md +262 -262
  252. package/.agents/skills/profiles/react/theme-variables/SKILL.md +82 -82
  253. package/.agents/skills/profiles/react/vercel-composition-patterns/AGENTS.md +899 -899
  254. package/.agents/skills/profiles/react/vercel-composition-patterns/SKILL.md +81 -81
  255. package/.agents/skills/profiles/react/vercel-composition-patterns/rules/architecture-avoid-boolean-props.md +100 -100
  256. package/.agents/skills/profiles/react/vercel-composition-patterns/rules/architecture-compound-components.md +112 -112
  257. package/.agents/skills/profiles/react/vercel-composition-patterns/rules/patterns-children-over-render-props.md +87 -87
  258. package/.agents/skills/profiles/react/vercel-composition-patterns/rules/patterns-explicit-variants.md +100 -100
  259. package/.agents/skills/profiles/react/vercel-composition-patterns/rules/state-context-interface.md +191 -191
  260. package/.agents/skills/profiles/react/vercel-composition-patterns/rules/state-decouple-implementation.md +113 -113
  261. package/.agents/skills/profiles/react/vercel-composition-patterns/rules/state-lift-state.md +125 -125
  262. package/.agents/skills/profiles/react/vercel-react-best-practices/AGENTS.md +2934 -2934
  263. package/.agents/skills/profiles/react/vercel-react-best-practices/SKILL.md +136 -136
  264. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -55
  265. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/advanced-init-once.md +42 -42
  266. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/advanced-use-latest.md +39 -39
  267. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/async-api-routes.md +38 -38
  268. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/async-defer-await.md +80 -80
  269. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/async-dependencies.md +51 -51
  270. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/async-parallel.md +28 -28
  271. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -99
  272. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -59
  273. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/bundle-conditional.md +31 -31
  274. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -49
  275. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -35
  276. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/bundle-preload.md +50 -50
  277. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/client-event-listeners.md +74 -74
  278. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -71
  279. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -48
  280. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/client-swr-dedup.md +56 -56
  281. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -107
  282. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/js-cache-function-results.md +80 -80
  283. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/js-cache-property-access.md +28 -28
  284. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/js-cache-storage.md +70 -70
  285. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/js-combine-iterations.md +32 -32
  286. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/js-early-exit.md +50 -50
  287. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -45
  288. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/js-index-maps.md +37 -37
  289. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/js-length-check-first.md +49 -49
  290. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/js-min-max-loop.md +82 -82
  291. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -24
  292. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -57
  293. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/rendering-activity.md +26 -26
  294. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -47
  295. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -40
  296. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -38
  297. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -46
  298. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -82
  299. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -30
  300. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -28
  301. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -75
  302. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -39
  303. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/rerender-dependencies.md +45 -45
  304. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -40
  305. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/rerender-derived-state.md +29 -29
  306. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -74
  307. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -58
  308. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -38
  309. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/rerender-memo.md +44 -44
  310. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -45
  311. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -35
  312. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/rerender-transitions.md +40 -40
  313. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -73
  314. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -73
  315. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/server-auth-actions.md +96 -96
  316. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/server-cache-lru.md +41 -41
  317. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/server-cache-react.md +76 -76
  318. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/server-dedup-props.md +65 -65
  319. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -83
  320. package/.agents/skills/profiles/react/vercel-react-best-practices/rules/server-serialization.md +38 -38
  321. package/.agents/skills/profiles/springboot/README.md +10 -10
  322. package/.agents/skills/profiles/vue/create-api/SKILL.md +105 -105
  323. package/.agents/skills/profiles/vue/create-component/SKILL.md +76 -76
  324. package/.agents/skills/profiles/vue/create-route/SKILL.md +141 -141
  325. package/.agents/skills/profiles/vue/create-store/SKILL.md +97 -97
  326. package/.agents/skills/profiles/vue/create-view/SKILL.md +81 -81
  327. package/.agents/skills/profiles/vue/theme-variables/SKILL.md +73 -73
  328. package/.agents/skills/profiles/vue/vue-best-practices/SKILL.md +166 -166
  329. package/.agents/skills/profiles/vue/vue-best-practices/references/animation-class-based-technique.md +254 -254
  330. package/.agents/skills/profiles/vue/vue-best-practices/references/animation-state-driven-technique.md +291 -291
  331. package/.agents/skills/profiles/vue/vue-best-practices/references/component-async.md +97 -97
  332. package/.agents/skills/profiles/vue/vue-best-practices/references/component-data-flow.md +307 -307
  333. package/.agents/skills/profiles/vue/vue-best-practices/references/component-fallthrough-attrs.md +174 -174
  334. package/.agents/skills/profiles/vue/vue-best-practices/references/component-keep-alive.md +137 -137
  335. package/.agents/skills/profiles/vue/vue-best-practices/references/component-slots.md +216 -216
  336. package/.agents/skills/profiles/vue/vue-best-practices/references/component-suspense.md +228 -228
  337. package/.agents/skills/profiles/vue/vue-best-practices/references/component-teleport.md +108 -108
  338. package/.agents/skills/profiles/vue/vue-best-practices/references/component-transition-group.md +128 -128
  339. package/.agents/skills/profiles/vue/vue-best-practices/references/component-transition.md +125 -125
  340. package/.agents/skills/profiles/vue/vue-best-practices/references/composables.md +290 -290
  341. package/.agents/skills/profiles/vue/vue-best-practices/references/directives.md +162 -162
  342. package/.agents/skills/profiles/vue/vue-best-practices/references/perf-avoid-component-abstraction-in-lists.md +159 -159
  343. package/.agents/skills/profiles/vue/vue-best-practices/references/perf-v-once-v-memo-directives.md +182 -182
  344. package/.agents/skills/profiles/vue/vue-best-practices/references/perf-virtualize-large-lists.md +187 -187
  345. package/.agents/skills/profiles/vue/vue-best-practices/references/plugins.md +166 -166
  346. package/.agents/skills/profiles/vue/vue-best-practices/references/reactivity.md +344 -344
  347. package/.agents/skills/profiles/vue/vue-best-practices/references/render-functions.md +201 -201
  348. package/.agents/skills/profiles/vue/vue-best-practices/references/sfc.md +310 -310
  349. package/.agents/skills/profiles/vue/vue-best-practices/references/state-management.md +135 -135
  350. package/.agents/skills/profiles/vue/vue-best-practices/references/updated-hook-performance.md +187 -187
  351. package/.agents/templates/common/README.md +23 -23
  352. package/.agents/templates/common/bugfix.md +22 -22
  353. package/.agents/templates/common/create-expert-package.md +458 -458
  354. package/.agents/templates/common/mock-page.md +28 -28
  355. package/.agents/templates/common/new-component.md +25 -25
  356. package/.agents/templates/common/new-page.md +31 -31
  357. package/.cursor/mcp.json +35 -35
  358. package/.qoder/mcp.json +26 -26
  359. package/bin/archive-change.js +560 -474
  360. package/bin/check-command.js +62 -62
  361. package/bin/cli.js +0 -0
  362. package/bin/command-template-renderer.js +40 -40
  363. package/bin/context-command.js +102 -102
  364. package/bin/demo-runtime-smoke.js +760 -760
  365. package/bin/execution-semantics.js +821 -821
  366. package/bin/executor-command.js +93 -93
  367. package/bin/expert-dispatch.js +334 -334
  368. package/bin/expert-executor.js +1148 -1148
  369. package/bin/guard-command.js +52 -52
  370. package/bin/hub-command.js +876 -876
  371. package/bin/ide-command.js +242 -242
  372. package/bin/init-command.js +193 -193
  373. package/bin/install-workflow.js +35 -3
  374. package/bin/manifest-export.js +34 -34
  375. package/bin/profile-registry.js +90 -90
  376. package/bin/protocol-workflow.js +452 -446
  377. package/bin/repair-command.js +161 -161
  378. package/bin/repo-map.js +177 -177
  379. package/bin/report-command.js +236 -236
  380. package/bin/runtime-bootstrap.js +428 -428
  381. package/bin/runtime-embedded.js +101 -101
  382. package/bin/runtime-fallback.js +106 -106
  383. package/bin/runtime-launcher.js +116 -116
  384. package/bin/runtime-paths.js +177 -177
  385. package/bin/runtime-registry.js +289 -289
  386. package/bin/runtime-state.js +2541 -2541
  387. package/bin/scan.js +96 -96
  388. package/bin/self-upgrade.js +206 -206
  389. package/bin/skill-spec-validator.js +457 -457
  390. package/bin/spec-command.js +366 -366
  391. package/bin/superpowers.js +384 -384
  392. package/bin/sync-command.js +59 -59
  393. package/bin/sync.js +1904 -1904
  394. package/bin/task-orchestrator-adapter.js +341 -341
  395. package/bin/task-orchestrator-extractor.js +274 -274
  396. package/bin/task-orchestrator-runner.js +1208 -1208
  397. package/bin/telemetry/README.md +66 -66
  398. package/bin/telemetry/aspect.js +153 -153
  399. package/bin/telemetry/collect.js +67 -67
  400. package/bin/telemetry/config.js +114 -114
  401. package/bin/telemetry/defaults.json +5 -5
  402. package/bin/telemetry/healthcheck.js +195 -195
  403. package/bin/telemetry/identity.js +53 -53
  404. package/bin/telemetry/index.js +25 -25
  405. package/bin/telemetry/reporter.js +83 -83
  406. package/bin/telemetry/safe.js +39 -39
  407. package/bin/validate-registry.js +740 -740
  408. package/bin/visual-bridge-config.js +117 -117
  409. package/bin/visual-bridge.js +287 -287
  410. package/bin/visual-command.js +432 -432
  411. package/bin/worktree-command.js +194 -194
  412. package/configs/common/.editorconfig +15 -15
  413. package/configs/common/.husky/commit-msg +4 -4
  414. package/configs/common/.husky/pre-commit +4 -4
  415. package/configs/common/.lintstagedrc +11 -11
  416. package/configs/common/.prettierignore +11 -11
  417. package/configs/common/.prettierrc.json +11 -11
  418. package/configs/common/.stylelintignore +14 -14
  419. package/configs/common/.stylelintrc.json +21 -21
  420. package/configs/common/commitlint.config.js +3 -3
  421. package/configs/profiles/nestjs/.gitkeep +1 -1
  422. package/configs/profiles/node-tooling/.gitkeep +1 -1
  423. package/configs/profiles/react/.eslintignore +6 -6
  424. package/configs/profiles/react/.eslintrc.js +16 -16
  425. package/configs/profiles/react/.stylelintrc.json +18 -18
  426. package/configs/profiles/springboot/.gitkeep +1 -1
  427. package/configs/profiles/vue/.eslintignore +6 -6
  428. package/configs/profiles/vue/.eslintrc.cjs +17 -17
  429. package/contracts/README.md +28 -28
  430. package/contracts/fixtures/asset-package.fixture.json +26 -26
  431. package/contracts/fixtures/asset-usage-feedback.fixture.json +14 -14
  432. package/contracts/fixtures/evidence-report.fixture.json +28 -28
  433. package/contracts/fixtures/manifest.fixture.json +20 -20
  434. package/contracts/fixtures/run-event.fixture.json +15 -15
  435. package/contracts/schemas/asset-package.schema.json +76 -76
  436. package/contracts/schemas/asset-usage-feedback.schema.json +57 -57
  437. package/contracts/schemas/evidence-report.schema.json +60 -60
  438. package/contracts/schemas/manifest.schema.json +63 -63
  439. package/contracts/schemas/run-event.schema.json +72 -72
  440. package/install.ps1 +35 -35
  441. package/install.sh +17 -17
  442. package/internal/ai-protocol-workflow.js +5824 -5600
  443. package/internal/hub-client.js +98 -98
  444. package/internal/hub-sync-selection.js +69 -69
  445. package/internal/visual-hooks/README.md +481 -481
  446. package/internal/visual-hooks/config-loader.js +218 -218
  447. package/internal/visual-hooks/control-puller.js +206 -206
  448. package/internal/visual-hooks/gate-signal.js +150 -150
  449. package/internal/visual-hooks/inbox-consumer.js +469 -469
  450. package/internal/visual-hooks/index.js +197 -197
  451. package/internal/visual-hooks/push-client.js +189 -189
  452. package/internal/visual-hooks/receipt-pusher.js +176 -176
  453. package/internal/visual-hooks/runtime-state-pusher.js +128 -128
  454. package/openspec/config.yaml.template +52 -52
  455. package/openspec/schemas/expert-delivery/schema.yaml +68 -68
  456. package/openspec/schemas/expert-delivery/templates/checklist.md +39 -39
  457. package/openspec/schemas/expert-delivery/templates/design.md +61 -61
  458. package/openspec/schemas/expert-delivery/templates/iterations.md +25 -25
  459. package/openspec/schemas/expert-delivery/templates/proposal.md +45 -45
  460. package/openspec/schemas/expert-delivery/templates/spec.md +29 -29
  461. package/openspec/schemas/expert-delivery/templates/tasks.md +24 -24
  462. package/package.json +1 -1
  463. package/scripts/acceptance-zero-intrusion.sh +168 -168
  464. package/scripts/hub-sync-assets.config.example.json +296 -296
  465. package/scripts/hub-sync-assets.js +2038 -2038
  466. package/scripts/local-verify.sh +280 -280
  467. package/scripts/post-publish-auto-fix-check.js +404 -404
  468. package/scripts/post-publish-verify.sh +175 -175
  469. package/scripts/setup-cursor-manual-test.sh +107 -107
  470. package/scripts/setup-cursor-spec-archive-test.sh +111 -111
  471. package/scripts/setup-visual-integration.sh +225 -225
  472. package/scripts/test-integration.sh +176 -176
  473. package/scripts/update-test-project.sh +93 -93
  474. package/scripts/upload-four-web.sh +57 -57
  475. package/scripts/verify-install-ps1-bom.js +26 -26
  476. package/src/agent/agent-context.js +259 -259
  477. package/src/agent/agent-profile.js +185 -185
  478. package/src/agent/agent-templates.js +161 -161
  479. package/src/agent/agent-types.js +108 -108
  480. package/src/agent/collaboration-protocol.js +333 -333
  481. package/src/agent/conflict-handler.js +364 -364
  482. package/src/agent/file-permission.js +121 -121
  483. package/src/agent/index.js +38 -38
  484. package/src/agent/permission-audit.js +151 -151
  485. package/src/agent/review-repair-loop.js +270 -270
  486. package/src/agent/tool-permission.js +101 -101
  487. package/src/asset/asset-dependency.js +322 -322
  488. package/src/asset/asset-feedback.js +350 -350
  489. package/src/asset/asset-fork.js +300 -300
  490. package/src/asset/asset-install.js +278 -278
  491. package/src/asset/asset-installer.js +497 -497
  492. package/src/asset/asset-lifecycle.js +324 -324
  493. package/src/asset/asset-manager.js +245 -245
  494. package/src/asset/asset-package-manager.js +349 -349
  495. package/src/asset/asset-package.js +186 -186
  496. package/src/asset/asset-quality.js +262 -262
  497. package/src/asset/asset-registry.js +387 -387
  498. package/src/asset/asset-version.js +293 -293
  499. package/src/asset/index.js +86 -86
  500. package/src/cache/agent-profile-cache.js +59 -59
  501. package/src/cache/asset-cache.js +63 -63
  502. package/src/cache/global-cache.js +61 -61
  503. package/src/cache/manifest-cache.js +30 -30
  504. package/src/check/check-service.js +32 -32
  505. package/src/config/config-layer.js +343 -343
  506. package/src/config/config-loader.js +60 -60
  507. package/src/config/defaults.js +49 -49
  508. package/src/connectors/hub/asset-package.js +72 -72
  509. package/src/connectors/hub/asset-usage-feedback.js +46 -46
  510. package/src/connectors/hub/hub-connector.js +44 -44
  511. package/src/connectors/hub/index.js +21 -21
  512. package/src/connectors/visual/evidence-report.js +49 -49
  513. package/src/connectors/visual/index.js +15 -15
  514. package/src/connectors/visual/queue.js +41 -41
  515. package/src/connectors/visual/run-event.js +81 -81
  516. package/src/connectors/visual/visual-connector.js +77 -77
  517. package/src/context/context-budget.js +59 -59
  518. package/src/context/context-builder.js +285 -285
  519. package/src/context/context-loader.js +116 -116
  520. package/src/context/context-planner.js +158 -158
  521. package/src/context/types.js +96 -96
  522. package/src/contracts/index.js +63 -63
  523. package/src/executor/executor-registry.js +78 -78
  524. package/src/executor/executor-result-parser.js +44 -44
  525. package/src/executor/executor-runner.js +141 -141
  526. package/src/executor/executor-selector.js +139 -139
  527. package/src/executor/executor-timeout.js +36 -36
  528. package/src/executor/providers/base-provider-utils.js +189 -189
  529. package/src/executor/providers/claude-code-executor-provider.js +128 -128
  530. package/src/executor/providers/codex-executor-provider.js +126 -126
  531. package/src/executor/providers/cursor-executor-provider.js +99 -99
  532. package/src/executor/types.js +137 -137
  533. package/src/git/branch-manager.js +71 -71
  534. package/src/git/dirty-checker.js +43 -43
  535. package/src/git/dirty-strategy-handler.js +29 -29
  536. package/src/git/git-command.js +37 -37
  537. package/src/git/git-repository-detector.js +45 -45
  538. package/src/git/multi-repo-worktree-planner.js +88 -88
  539. package/src/git/policy.js +19 -19
  540. package/src/git/strategies/block-dirty-strategy.js +34 -34
  541. package/src/git/strategies/ignore-dirty-strategy.js +33 -33
  542. package/src/git/strategies/patch-snapshot-strategy.js +53 -53
  543. package/src/git/strategies/wip-commit-strategy.js +38 -38
  544. package/src/git/types.js +71 -71
  545. package/src/git/worktree-manager.js +85 -85
  546. package/src/governance/asset-review.js +351 -351
  547. package/src/governance/audit-log.js +368 -368
  548. package/src/governance/gray-release.js +312 -312
  549. package/src/governance/index.js +31 -31
  550. package/src/governance/policy-types.js +56 -56
  551. package/src/governance/rbac-types.js +171 -171
  552. package/src/governance/rbac.js +382 -382
  553. package/src/governance/rollback.js +360 -360
  554. package/src/governance/security-policy.js +354 -354
  555. package/src/hook/hook-config-writer.js +125 -125
  556. package/src/hub/hub-client.js +186 -186
  557. package/src/hub/hub-config.js +39 -39
  558. package/src/hub/project-facts.js +31 -31
  559. package/src/hub/runtime-feedback-reporter.js +55 -55
  560. package/src/ide/adapters/adapter-protocol.js +385 -385
  561. package/src/ide/adapters/claude-adapter.js +419 -419
  562. package/src/ide/adapters/codex-adapter.js +60 -60
  563. package/src/ide/adapters/cursor-adapter.js +484 -484
  564. package/src/ide/adapters/index.js +24 -24
  565. package/src/ide/anchors/markdown-anchor-writer.js +152 -152
  566. package/src/ide/ide-service.js +270 -270
  567. package/src/ide/ide-types.js +94 -94
  568. package/src/ide/links/link-mode-resolver.js +160 -160
  569. package/src/ide/registry/ide-registry-builder.js +165 -165
  570. package/src/incident/incident-writer.js +47 -47
  571. package/src/incident/types.js +22 -22
  572. package/src/init/ide-linker.js +126 -126
  573. package/src/init/ide-pointer-injector.js +75 -75
  574. package/src/init/init-applier.js +197 -197
  575. package/src/init/init-plan.js +294 -294
  576. package/src/init/init-service.js +65 -65
  577. package/src/init/manifest-installer.js +302 -302
  578. package/src/init/types.js +26 -26
  579. package/src/project/config-writer.js +83 -83
  580. package/src/project/context-index-writer.js +82 -82
  581. package/src/project/json-utils.js +72 -72
  582. package/src/project/local-state-writer.js +50 -50
  583. package/src/project/lock-file-writer.js +98 -98
  584. package/src/project/manifest-writer.js +126 -126
  585. package/src/project/policy-config-writer.js +91 -91
  586. package/src/project/project-config-writer.js +74 -74
  587. package/src/project/project-files.js +39 -39
  588. package/src/project/registry-index-writer.js +43 -43
  589. package/src/project/workspace-config-writer.js +63 -63
  590. package/src/run/index.js +11 -11
  591. package/src/run/run-id.js +32 -32
  592. package/src/run/run-service.js +269 -269
  593. package/src/run/run-store.js +80 -80
  594. package/src/scanner/aggregator/detection-aggregator.js +23 -23
  595. package/src/scanner/boundary/boundary-resolver.js +229 -229
  596. package/src/scanner/detectors/detector-registry.js +44 -44
  597. package/src/scanner/detectors/fastapi-detector.js +46 -46
  598. package/src/scanner/detectors/go-detector.js +46 -46
  599. package/src/scanner/detectors/nestjs-detector.js +57 -57
  600. package/src/scanner/detectors/nextjs-detector.js +52 -52
  601. package/src/scanner/detectors/react-vite-detector.js +52 -52
  602. package/src/scanner/detectors/react-webpack-detector.js +57 -57
  603. package/src/scanner/detectors/springboot-detector.js +46 -46
  604. package/src/scanner/detectors/springcloud-detector.js +46 -46
  605. package/src/scanner/detectors/springmvc-detector.js +46 -46
  606. package/src/scanner/detectors/vue-vite-detector.js +52 -52
  607. package/src/scanner/engine.js +72 -72
  608. package/src/scanner/facts/fact-extractor.js +211 -211
  609. package/src/scanner/types.js +30 -30
  610. package/src/security/asset-tamper-checker.js +188 -188
  611. package/src/security/checksum.js +40 -40
  612. package/src/spec/spec-writer.js +302 -302
  613. package/src/state-machine/circuit-breaker.js +112 -112
  614. package/src/state-machine/escape-hatch.js +49 -49
  615. package/src/state-machine/stage-runner.js +281 -281
  616. package/src/state-machine/state-machine.js +24 -24
  617. package/src/state-machine/transition-guard.js +36 -36
  618. package/src/state-machine/types.js +37 -37
  619. package/src/sync/sync-service.js +192 -192
  620. package/src/visual/agent-visual.js +142 -142
  621. package/src/visual/event-gateway.js +357 -357
  622. package/src/visual/event-mapper.js +128 -128
  623. package/src/visual/hook-dashboard.js +216 -216
  624. package/src/visual/index.js +27 -27
  625. package/src/visual/metrics.js +287 -287
  626. package/src/visual/privacy-filter.js +100 -100
  627. package/src/visual/risk-board.js +252 -252
  628. package/src/visual/timeline.js +245 -245
  629. package/src/visual/visual-client.js +94 -94
  630. package/src/visual/visual-config.js +40 -40
  631. package/src/visual/visual-reporter.js +88 -88
@@ -1,481 +1,481 @@
1
- # Visual Hooks - 切面式数据推送机制
2
-
3
- ## 概述
4
-
5
- `visual-hooks` 是 `ai-spec-auto` 与 `engineered-spec-visual` 之间的切面式数据推送层。
6
-
7
- **设计原则**:
8
-
9
- - **零侵入**:不修改 auto 现有协议逻辑,只在 3-5 个关键节点新增 hook 调用
10
- - **优雅降级**:visual 服务不可用时,hook 调用自动降级,不影响主流程
11
- - **配置驱动**:通过 `.ai-spec/visual-config.json` 控制启用与否,默认不启用
12
- - **独立目录**:所有 visual 相关代码聚合在此目录,便于维护或移除
13
-
14
- ## 目录结构
15
-
16
- ```text
17
- internal/visual-hooks/
18
- ├── index.js # Hook 注册与降级入口
19
- ├── config-loader.js # 加载 .ai-spec/visual-config.json
20
- ├── push-client.js # HTTP/WebSocket 推送客户端
21
- ├── hooks/ # Hook 实现(未来扩展)
22
- │ ├── on-run-start.js
23
- │ ├── on-run-state-change.js
24
- │ └── on-archive-complete.js
25
- └── README.md # 本文档
26
- ```
27
-
28
- ## 使用方式
29
-
30
- ### 1. 配置文件
31
-
32
- 在项目根目录创建 `.ai-spec/visual-config.json`:
33
-
34
- ```json
35
- {
36
- "enabled": true,
37
- "visual_url": "http://visual-server:3000",
38
- "workspace_id": "my-project",
39
- "workspace_name": "项目显示名称",
40
- "push_mode": "hook",
41
- "push_timeout_ms": 3000,
42
- "retry_times": 1
43
- }
44
- ```
45
-
46
- **配置字段说明**:
47
-
48
- | 字段 | 类型 | 必填 | 默认值 | 说明 |
49
- | --- | --- | --- | --- | --- |
50
- | `enabled` | boolean | 是 | false | 是否启用 visual 推送 |
51
- | `visual_url` | string | 是 | - | visual 服务地址(含协议和端口) |
52
- | `workspace_id` | string | 是 | - | 工作区唯一标识 |
53
- | `workspace_name` | string | 否 | `workspace_id` | 工作区显示名称 |
54
- | `push_mode` | string | 否 | "hook" | 推送模式:`hook`(实时)或 `collector`(仅批量) |
55
- | `push_timeout_ms` | number | 否 | 3000 | 推送超时时间(毫秒) |
56
- | `retry_times` | number | 否 | 1 | 推送失败重试次数 |
57
-
58
- ### 2. 代码集成
59
-
60
- #### 2.1 初始化 Hooks
61
-
62
- 在 auto 项目的入口文件中初始化 hooks:
63
-
64
- ```javascript
65
- // bin/cli.js
66
-
67
- import { initVisualHooks } from '../internal/visual-hooks/index.js';
68
-
69
- // 初始化 visual hooks(只执行一次)
70
- const visualHooks = initVisualHooks();
71
- ```
72
-
73
- #### 2.2 触发 Hook: onRunStart
74
-
75
- 在 `protocol-step` 命令入口,run 启动时触发:
76
-
77
- ```javascript
78
- // bin/cli.js - protocol-step 命令
79
-
80
- async function protocolStep(input) {
81
- const runId = generateRunId();
82
- const workspaceId = detectWorkspaceId();
83
-
84
- // 触发 hook:run 启动
85
- await visualHooks?.onRunStart?.(runId, workspaceId, input);
86
-
87
- // 继续现有逻辑
88
- // ...
89
- }
90
- ```
91
-
92
- #### 2.3 触发 Hook: onRunStateChange
93
-
94
- 在 `expert-executor` 执行完专家后,状态变更时触发:
95
-
96
- ```javascript
97
- // internal/runner/expert-executor.js
98
-
99
- import { getVisualHooks } from '../visual-hooks/index.js';
100
-
101
- async function executeExpert(expertName, input) {
102
- // 执行专家(现有逻辑)
103
- const result = await runExpert(expertName, input);
104
-
105
- // 更新运行态(现有逻辑)
106
- const newRunState = updateCurrentRunState(result);
107
-
108
- // 触发 hook:状态变更
109
- const hooks = getVisualHooks();
110
- await hooks?.onRunStateChange?.(newRunState);
111
-
112
- return result;
113
- }
114
- ```
115
-
116
- #### 2.4 触发 Hook: onArchiveComplete
117
-
118
- 在 `archive-change` 完成归档后触发:
119
-
120
- ```javascript
121
- // internal/runtime/archive-change.js
122
-
123
- import { getVisualHooks } from '../visual-hooks/index.js';
124
-
125
- async function archiveChange(archiveInput) {
126
- // 执行归档(现有逻辑)
127
- const archiveResult = await performArchive(archiveInput);
128
-
129
- // 触发 hook:归档完成
130
- const hooks = getVisualHooks();
131
- await hooks?.onArchiveComplete?.(archiveResult);
132
-
133
- return archiveResult;
134
- }
135
- ```
136
-
137
- ### 3. 降级机制
138
-
139
- **降级触发条件**:
140
-
141
- 1. 配置文件不存在或 `enabled: false`
142
- 2. `visual_url` 无效或无法访问
143
- 3. 推送超时(默认 3 秒)
144
- 4. 推送失败(网络错误、服务端错误)
145
-
146
- **降级行为**:
147
-
148
- - `initVisualHooks()` 返回 `null`
149
- - hook 调用 `visualHooks?.method?.()` 直接跳过(可选链)
150
- - 只在日志中记录警告,不抛异常
151
- - auto 协议推进完全不受影响
152
-
153
- **日志示例**:
154
-
155
- ```text
156
- [visual-hooks] disabled or not configured
157
- [visual-hooks] push failed: ECONNREFUSED
158
- [visual-hooks] push timeout after 3000ms
159
- [visual-hooks] push failed (attempt 1/2), retrying...
160
- ```
161
-
162
- ## API 文档
163
-
164
- ### initVisualHooks()
165
-
166
- 初始化 visual hooks。
167
-
168
- **返回值**:`VisualHooks | null`
169
-
170
- - 成功:返回 hooks 对象
171
- - 失败:返回 `null`(配置未启用或加载失败)
172
-
173
- **示例**:
174
-
175
- ```javascript
176
- import { initVisualHooks } from './internal/visual-hooks/index.js';
177
-
178
- const hooks = initVisualHooks();
179
-
180
- if (hooks) {
181
- console.log('Visual hooks enabled');
182
- console.log('Config:', hooks.config);
183
- } else {
184
- console.log('Visual hooks disabled');
185
- }
186
- ```
187
-
188
- ### getVisualHooks()
189
-
190
- 获取当前 hooks 实例(不触发初始化)。
191
-
192
- **返回值**:`VisualHooks | null`
193
-
194
- **示例**:
195
-
196
- ```javascript
197
- import { getVisualHooks } from './internal/visual-hooks/index.js';
198
-
199
- const hooks = getVisualHooks();
200
- await hooks?.onRunStart?.(runId, workspaceId, input);
201
- ```
202
-
203
- ### loadVisualConfig()
204
-
205
- 加载 visual 配置文件。
206
-
207
- **返回值**:`VisualConfig | null`
208
-
209
- **配置加载优先级**:
210
-
211
- 1. `.ai-spec/visual-config.json`(项目级)
212
- 2. `~/.ai-spec/visual-config.json`(用户级)
213
- 3. 环境变量覆盖:
214
- - `AI_SPEC_VISUAL_ENABLED`
215
- - `AI_SPEC_VISUAL_URL`
216
- - `AI_SPEC_VISUAL_WORKSPACE_ID`
217
-
218
- **示例**:
219
-
220
- ```javascript
221
- import { loadVisualConfig } from './internal/visual-hooks/config-loader.js';
222
-
223
- const config = loadVisualConfig();
224
- if (config) {
225
- console.log('Visual URL:', config.visual_url);
226
- }
227
- ```
228
-
229
- ### createConfigExample(targetPath)
230
-
231
- 创建配置文件示例。
232
-
233
- **参数**:
234
-
235
- - `targetPath` (string): 目标文件路径
236
-
237
- **返回值**:`boolean`
238
-
239
- **示例**:
240
-
241
- ```javascript
242
- import { createConfigExample } from './internal/visual-hooks/config-loader.js';
243
-
244
- // 在项目根目录创建示例配置
245
- createConfigExample('.ai-spec/visual-config.example.json');
246
- ```
247
-
248
- ## 数据推送协议
249
-
250
- ### 推送端点
251
-
252
- ```
253
- POST /api/internal/ingest/raw
254
- Content-Type: application/json
255
- X-Workspace-ID: {workspace_id}
256
- ```
257
-
258
- ### 请求体结构
259
-
260
- ```json
261
- {
262
- "sourceKind": "hook-push",
263
- "workspaceId": "my-project",
264
- "rawEvents": [
265
- {
266
- "sourceKind": "hook-event",
267
- "sourcePath": "internal/visual-hooks",
268
- "eventType": "run.started",
269
- "eventKey": "run_abc:run.started:1234567890",
270
- "dedupeKey": "hash_value",
271
- "checksum": "sha256_hash",
272
- "occurredAt": "2026-04-21T10:00:00Z",
273
- "entityType": "run",
274
- "entityId": "run_abc",
275
- "payload": {
276
- "run_id": "run_abc",
277
- "workspace_id": "my-project",
278
- "input": { /* protocol-step 输入 */ },
279
- "started_at": "2026-04-21T10:00:00Z"
280
- }
281
- }
282
- ]
283
- }
284
- ```
285
-
286
- ### 事件类型
287
-
288
- | 事件类型 | 触发时机 | Payload 字段 |
289
- | --- | --- | --- |
290
- | `run.started` | protocol-step 启动 | `run_id`, `workspace_id`, `input`, `started_at` |
291
- | `run.state_changed` | 运行态变更 | 完整的 `current-run.json` 内容 |
292
- | `run.archived` | 归档完成 | `run_id`, `workspace_id`, 归档结果, `archived_at` |
293
-
294
- ## 故障排查
295
-
296
- ### 问题 1:hooks 未初始化
297
-
298
- **症状**:
299
-
300
- ```text
301
- [visual-hooks] disabled or not configured
302
- ```
303
-
304
- **排查步骤**:
305
-
306
- 1. 检查配置文件是否存在:`ls -la .ai-spec/visual-config.json`
307
- 2. 检查 `enabled` 字段是否为 `true`
308
- 3. 检查 `visual_url` 和 `workspace_id` 是否正确
309
-
310
- ### 问题 2:推送超时
311
-
312
- **症状**:
313
-
314
- ```text
315
- [visual-hooks] push timeout after 3000ms
316
- ```
317
-
318
- **排查步骤**:
319
-
320
- 1. 检查 visual 服务是否运行:`curl http://visual-url:3000/api/health`
321
- 2. 检查网络连通性:`ping visual-server`
322
- 3. 增加 `push_timeout_ms` 配置(如改为 5000)
323
-
324
- ### 问题 3:推送失败
325
-
326
- **症状**:
327
-
328
- ```text
329
- [visual-hooks] push failed: ECONNREFUSED
330
- [visual-hooks] push failed: 500 Internal Server Error
331
- ```
332
-
333
- **排查步骤**:
334
-
335
- 1. 检查 visual 服务日志:`docker-compose logs visual`
336
- 2. 检查 visual 数据库连接是否正常
337
- 3. 尝试手动推送测试:
338
- ```bash
339
- curl -X POST http://visual-url:3000/api/internal/ingest/raw \
340
- -H "Content-Type: application/json" \
341
- -H "X-Workspace-ID: test" \
342
- -d '{"sourceKind":"test","workspaceId":"test","rawEvents":[]}'
343
- ```
344
-
345
- ### 问题 4:hooks 不触发
346
-
347
- **症状**:
348
-
349
- 配置正确但 visual 控制台没有数据
350
-
351
- **排查步骤**:
352
-
353
- 1. 检查 hook 调用是否存在:搜索代码中的 `visualHooks?.on`
354
- 2. 检查日志中是否有 `[visual-hooks] on...Pushed` 输出
355
- 3. 启用调试日志:`export DEBUG=visual-hooks:*`
356
-
357
- ## 环境变量
358
-
359
- 支持以下环境变量覆盖配置:
360
-
361
- | 环境变量 | 说明 | 示例 |
362
- | --- | --- | --- |
363
- | `AI_SPEC_VISUAL_ENABLED` | 启用/禁用 | `true` / `false` |
364
- | `AI_SPEC_VISUAL_URL` | Visual 服务地址 | `http://visual-server:3000` |
365
- | `AI_SPEC_VISUAL_WORKSPACE_ID` | 工作区 ID | `my-project` |
366
- | `AI_SPEC_VISUAL_PUSH_TIMEOUT_MS` | 推送超时(毫秒) | `5000` |
367
-
368
- **使用示例**:
369
-
370
- ```bash
371
- # 临时禁用 visual hooks
372
- AI_SPEC_VISUAL_ENABLED=false npx ai-spec-auto protocol-step
373
-
374
- # 使用不同的 visual 服务
375
- AI_SPEC_VISUAL_URL=http://visual-test:3000 npx ai-spec-auto protocol-step
376
- ```
377
-
378
- ## 测试
379
-
380
- ### 单元测试
381
-
382
- ```bash
383
- # 运行 visual-hooks 单元测试
384
- npm test -- internal/visual-hooks
385
- ```
386
-
387
- ### 集成测试
388
-
389
- ```bash
390
- # 1. 启动 visual 服务
391
- cd /path/to/engineered-spec-visual
392
- docker-compose up -d
393
-
394
- # 2. 配置 auto 项目
395
- cd /path/to/test-project
396
- cat > .ai-spec/visual-config.json <<EOF
397
- {
398
- "enabled": true,
399
- "visual_url": "http://localhost:3000",
400
- "workspace_id": "test-project"
401
- }
402
- EOF
403
-
404
- # 3. 执行协议命令
405
- npx ai-spec-auto protocol-step
406
-
407
- # 4. 验证推送
408
- curl http://localhost:3000/api/workspaces
409
- ```
410
-
411
- ## 维护指南
412
-
413
- ### 新增 Hook
414
-
415
- 如果需要新增 hook(如 `onRunPaused`),步骤如下:
416
-
417
- 1. 在 `index.js` 的 `initVisualHooks()` 中添加新 hook 方法
418
- 2. 在对应的触发点调用 `hooks?.onRunPaused?.()`
419
- 3. 更新本文档的"事件类型"表格
420
- 4. 添加单元测试
421
-
422
- ### 移除 Hooks
423
-
424
- 如果需要完全移除 visual hooks:
425
-
426
- 1. 删除 `internal/visual-hooks/` 目录
427
- 2. 移除代码中的 hook 调用(搜索 `visualHooks`)
428
- 3. 移除配置文件 `.ai-spec/visual-config.json`
429
-
430
- ## Gate Signal(审批 → IDE 原对话自动继续)
431
-
432
- `gate-signal.js` 是切面能力:当 `inbox-consumer.js` 成功应用 `approve_gate` /
433
- `reject_gate` / `resume_run` 后,会额外写一份 `.ai-spec/gate-signal.json`,
434
- 供 IDE 中的 AI(Cursor / Claude Code)通过规则/技能轮询,实现 Visual 页面点
435
- 批准后原对话自动继续。
436
-
437
- 当 `reject_gate` 携带 `payload.decision = "request_changes"` 时,会按“要求补充后重审”
438
- 处理:
439
-
440
- - 保持 `current-run.json.status = waiting-approval`
441
- - 保持 `pending_gate` 不清空
442
- - 事件类型写为 `gate-request-changes`
443
- - `.ai-spec/gate-signal.json` 写 `decision = "request_changes"`
444
- - `.ai-spec/next-step.md` 追加“补齐资产后重新提交审批”的提示
445
-
446
- **契约(`schema_version: 1`)**:
447
-
448
- ```json
449
- {
450
- "schema_version": 1,
451
- "run_id": "run_2026xxxx",
452
- "gate": "before-implementation",
453
- "decision": "approved | rejected | resumed | request_changes",
454
- "reason": "可选",
455
- "actor_id": "可选",
456
- "ts_ms": 1714000000000,
457
- "ts_iso": "2026-04-23T..."
458
- }
459
- ```
460
-
461
- **AI 读侧判定**:`signal.run_id === currentRunId && signal.gate === currentGate
462
- && signal.ts_ms > waitStartedAt`,四项校验全部通过才视为命中;其余情况忽略。
463
-
464
- **解耦保证**:
465
-
466
- - 所有 IO 失败静默写 `.ai-spec/logs/gate-signal.log`,**绝不**影响 `inbox-consumer`
467
- 返回的 `applied | rejected | conflict` 结果。
468
- - 原子写(`.tmp` → rename),避免读侧读到半写文件。
469
- - 对应 IDE 侧规则/技能:
470
- - `.agents/rules/common/15-visual-gate-wait.md`
471
- - `.agents/skills/common/wait-for-gate-signal/SKILL.md`
472
-
473
- ## 相关文档
474
-
475
- - [需求说明-visual补充.md](../../docs/five/需求说明-visual补充.md) - Visual 完整需求说明
476
- - [快速部署指南](../../../engineered-spec-visual/docs/快速部署指南.md) - Visual 服务部署
477
- - [架构设计与治理说明](../../docs/four/架构设计与治理说明.md) - 整体架构
478
-
479
- ## 许可证
480
-
481
- UNLICENSED
1
+ # Visual Hooks - 切面式数据推送机制
2
+
3
+ ## 概述
4
+
5
+ `visual-hooks` 是 `ai-spec-auto` 与 `engineered-spec-visual` 之间的切面式数据推送层。
6
+
7
+ **设计原则**:
8
+
9
+ - **零侵入**:不修改 auto 现有协议逻辑,只在 3-5 个关键节点新增 hook 调用
10
+ - **优雅降级**:visual 服务不可用时,hook 调用自动降级,不影响主流程
11
+ - **配置驱动**:通过 `.ai-spec/visual-config.json` 控制启用与否,默认不启用
12
+ - **独立目录**:所有 visual 相关代码聚合在此目录,便于维护或移除
13
+
14
+ ## 目录结构
15
+
16
+ ```text
17
+ internal/visual-hooks/
18
+ ├── index.js # Hook 注册与降级入口
19
+ ├── config-loader.js # 加载 .ai-spec/visual-config.json
20
+ ├── push-client.js # HTTP/WebSocket 推送客户端
21
+ ├── hooks/ # Hook 实现(未来扩展)
22
+ │ ├── on-run-start.js
23
+ │ ├── on-run-state-change.js
24
+ │ └── on-archive-complete.js
25
+ └── README.md # 本文档
26
+ ```
27
+
28
+ ## 使用方式
29
+
30
+ ### 1. 配置文件
31
+
32
+ 在项目根目录创建 `.ai-spec/visual-config.json`:
33
+
34
+ ```json
35
+ {
36
+ "enabled": true,
37
+ "visual_url": "http://visual-server:3000",
38
+ "workspace_id": "my-project",
39
+ "workspace_name": "项目显示名称",
40
+ "push_mode": "hook",
41
+ "push_timeout_ms": 3000,
42
+ "retry_times": 1
43
+ }
44
+ ```
45
+
46
+ **配置字段说明**:
47
+
48
+ | 字段 | 类型 | 必填 | 默认值 | 说明 |
49
+ | --- | --- | --- | --- | --- |
50
+ | `enabled` | boolean | 是 | false | 是否启用 visual 推送 |
51
+ | `visual_url` | string | 是 | - | visual 服务地址(含协议和端口) |
52
+ | `workspace_id` | string | 是 | - | 工作区唯一标识 |
53
+ | `workspace_name` | string | 否 | `workspace_id` | 工作区显示名称 |
54
+ | `push_mode` | string | 否 | "hook" | 推送模式:`hook`(实时)或 `collector`(仅批量) |
55
+ | `push_timeout_ms` | number | 否 | 3000 | 推送超时时间(毫秒) |
56
+ | `retry_times` | number | 否 | 1 | 推送失败重试次数 |
57
+
58
+ ### 2. 代码集成
59
+
60
+ #### 2.1 初始化 Hooks
61
+
62
+ 在 auto 项目的入口文件中初始化 hooks:
63
+
64
+ ```javascript
65
+ // bin/cli.js
66
+
67
+ import { initVisualHooks } from '../internal/visual-hooks/index.js';
68
+
69
+ // 初始化 visual hooks(只执行一次)
70
+ const visualHooks = initVisualHooks();
71
+ ```
72
+
73
+ #### 2.2 触发 Hook: onRunStart
74
+
75
+ 在 `protocol-step` 命令入口,run 启动时触发:
76
+
77
+ ```javascript
78
+ // bin/cli.js - protocol-step 命令
79
+
80
+ async function protocolStep(input) {
81
+ const runId = generateRunId();
82
+ const workspaceId = detectWorkspaceId();
83
+
84
+ // 触发 hook:run 启动
85
+ await visualHooks?.onRunStart?.(runId, workspaceId, input);
86
+
87
+ // 继续现有逻辑
88
+ // ...
89
+ }
90
+ ```
91
+
92
+ #### 2.3 触发 Hook: onRunStateChange
93
+
94
+ 在 `expert-executor` 执行完专家后,状态变更时触发:
95
+
96
+ ```javascript
97
+ // internal/runner/expert-executor.js
98
+
99
+ import { getVisualHooks } from '../visual-hooks/index.js';
100
+
101
+ async function executeExpert(expertName, input) {
102
+ // 执行专家(现有逻辑)
103
+ const result = await runExpert(expertName, input);
104
+
105
+ // 更新运行态(现有逻辑)
106
+ const newRunState = updateCurrentRunState(result);
107
+
108
+ // 触发 hook:状态变更
109
+ const hooks = getVisualHooks();
110
+ await hooks?.onRunStateChange?.(newRunState);
111
+
112
+ return result;
113
+ }
114
+ ```
115
+
116
+ #### 2.4 触发 Hook: onArchiveComplete
117
+
118
+ 在 `archive-change` 完成归档后触发:
119
+
120
+ ```javascript
121
+ // internal/runtime/archive-change.js
122
+
123
+ import { getVisualHooks } from '../visual-hooks/index.js';
124
+
125
+ async function archiveChange(archiveInput) {
126
+ // 执行归档(现有逻辑)
127
+ const archiveResult = await performArchive(archiveInput);
128
+
129
+ // 触发 hook:归档完成
130
+ const hooks = getVisualHooks();
131
+ await hooks?.onArchiveComplete?.(archiveResult);
132
+
133
+ return archiveResult;
134
+ }
135
+ ```
136
+
137
+ ### 3. 降级机制
138
+
139
+ **降级触发条件**:
140
+
141
+ 1. 配置文件不存在或 `enabled: false`
142
+ 2. `visual_url` 无效或无法访问
143
+ 3. 推送超时(默认 3 秒)
144
+ 4. 推送失败(网络错误、服务端错误)
145
+
146
+ **降级行为**:
147
+
148
+ - `initVisualHooks()` 返回 `null`
149
+ - hook 调用 `visualHooks?.method?.()` 直接跳过(可选链)
150
+ - 只在日志中记录警告,不抛异常
151
+ - auto 协议推进完全不受影响
152
+
153
+ **日志示例**:
154
+
155
+ ```text
156
+ [visual-hooks] disabled or not configured
157
+ [visual-hooks] push failed: ECONNREFUSED
158
+ [visual-hooks] push timeout after 3000ms
159
+ [visual-hooks] push failed (attempt 1/2), retrying...
160
+ ```
161
+
162
+ ## API 文档
163
+
164
+ ### initVisualHooks()
165
+
166
+ 初始化 visual hooks。
167
+
168
+ **返回值**:`VisualHooks | null`
169
+
170
+ - 成功:返回 hooks 对象
171
+ - 失败:返回 `null`(配置未启用或加载失败)
172
+
173
+ **示例**:
174
+
175
+ ```javascript
176
+ import { initVisualHooks } from './internal/visual-hooks/index.js';
177
+
178
+ const hooks = initVisualHooks();
179
+
180
+ if (hooks) {
181
+ console.log('Visual hooks enabled');
182
+ console.log('Config:', hooks.config);
183
+ } else {
184
+ console.log('Visual hooks disabled');
185
+ }
186
+ ```
187
+
188
+ ### getVisualHooks()
189
+
190
+ 获取当前 hooks 实例(不触发初始化)。
191
+
192
+ **返回值**:`VisualHooks | null`
193
+
194
+ **示例**:
195
+
196
+ ```javascript
197
+ import { getVisualHooks } from './internal/visual-hooks/index.js';
198
+
199
+ const hooks = getVisualHooks();
200
+ await hooks?.onRunStart?.(runId, workspaceId, input);
201
+ ```
202
+
203
+ ### loadVisualConfig()
204
+
205
+ 加载 visual 配置文件。
206
+
207
+ **返回值**:`VisualConfig | null`
208
+
209
+ **配置加载优先级**:
210
+
211
+ 1. `.ai-spec/visual-config.json`(项目级)
212
+ 2. `~/.ai-spec/visual-config.json`(用户级)
213
+ 3. 环境变量覆盖:
214
+ - `AI_SPEC_VISUAL_ENABLED`
215
+ - `AI_SPEC_VISUAL_URL`
216
+ - `AI_SPEC_VISUAL_WORKSPACE_ID`
217
+
218
+ **示例**:
219
+
220
+ ```javascript
221
+ import { loadVisualConfig } from './internal/visual-hooks/config-loader.js';
222
+
223
+ const config = loadVisualConfig();
224
+ if (config) {
225
+ console.log('Visual URL:', config.visual_url);
226
+ }
227
+ ```
228
+
229
+ ### createConfigExample(targetPath)
230
+
231
+ 创建配置文件示例。
232
+
233
+ **参数**:
234
+
235
+ - `targetPath` (string): 目标文件路径
236
+
237
+ **返回值**:`boolean`
238
+
239
+ **示例**:
240
+
241
+ ```javascript
242
+ import { createConfigExample } from './internal/visual-hooks/config-loader.js';
243
+
244
+ // 在项目根目录创建示例配置
245
+ createConfigExample('.ai-spec/visual-config.example.json');
246
+ ```
247
+
248
+ ## 数据推送协议
249
+
250
+ ### 推送端点
251
+
252
+ ```
253
+ POST /api/internal/ingest/raw
254
+ Content-Type: application/json
255
+ X-Workspace-ID: {workspace_id}
256
+ ```
257
+
258
+ ### 请求体结构
259
+
260
+ ```json
261
+ {
262
+ "sourceKind": "hook-push",
263
+ "workspaceId": "my-project",
264
+ "rawEvents": [
265
+ {
266
+ "sourceKind": "hook-event",
267
+ "sourcePath": "internal/visual-hooks",
268
+ "eventType": "run.started",
269
+ "eventKey": "run_abc:run.started:1234567890",
270
+ "dedupeKey": "hash_value",
271
+ "checksum": "sha256_hash",
272
+ "occurredAt": "2026-04-21T10:00:00Z",
273
+ "entityType": "run",
274
+ "entityId": "run_abc",
275
+ "payload": {
276
+ "run_id": "run_abc",
277
+ "workspace_id": "my-project",
278
+ "input": { /* protocol-step 输入 */ },
279
+ "started_at": "2026-04-21T10:00:00Z"
280
+ }
281
+ }
282
+ ]
283
+ }
284
+ ```
285
+
286
+ ### 事件类型
287
+
288
+ | 事件类型 | 触发时机 | Payload 字段 |
289
+ | --- | --- | --- |
290
+ | `run.started` | protocol-step 启动 | `run_id`, `workspace_id`, `input`, `started_at` |
291
+ | `run.state_changed` | 运行态变更 | 完整的 `current-run.json` 内容 |
292
+ | `run.archived` | 归档完成 | `run_id`, `workspace_id`, 归档结果, `archived_at` |
293
+
294
+ ## 故障排查
295
+
296
+ ### 问题 1:hooks 未初始化
297
+
298
+ **症状**:
299
+
300
+ ```text
301
+ [visual-hooks] disabled or not configured
302
+ ```
303
+
304
+ **排查步骤**:
305
+
306
+ 1. 检查配置文件是否存在:`ls -la .ai-spec/visual-config.json`
307
+ 2. 检查 `enabled` 字段是否为 `true`
308
+ 3. 检查 `visual_url` 和 `workspace_id` 是否正确
309
+
310
+ ### 问题 2:推送超时
311
+
312
+ **症状**:
313
+
314
+ ```text
315
+ [visual-hooks] push timeout after 3000ms
316
+ ```
317
+
318
+ **排查步骤**:
319
+
320
+ 1. 检查 visual 服务是否运行:`curl http://visual-url:3000/api/health`
321
+ 2. 检查网络连通性:`ping visual-server`
322
+ 3. 增加 `push_timeout_ms` 配置(如改为 5000)
323
+
324
+ ### 问题 3:推送失败
325
+
326
+ **症状**:
327
+
328
+ ```text
329
+ [visual-hooks] push failed: ECONNREFUSED
330
+ [visual-hooks] push failed: 500 Internal Server Error
331
+ ```
332
+
333
+ **排查步骤**:
334
+
335
+ 1. 检查 visual 服务日志:`docker-compose logs visual`
336
+ 2. 检查 visual 数据库连接是否正常
337
+ 3. 尝试手动推送测试:
338
+ ```bash
339
+ curl -X POST http://visual-url:3000/api/internal/ingest/raw \
340
+ -H "Content-Type: application/json" \
341
+ -H "X-Workspace-ID: test" \
342
+ -d '{"sourceKind":"test","workspaceId":"test","rawEvents":[]}'
343
+ ```
344
+
345
+ ### 问题 4:hooks 不触发
346
+
347
+ **症状**:
348
+
349
+ 配置正确但 visual 控制台没有数据
350
+
351
+ **排查步骤**:
352
+
353
+ 1. 检查 hook 调用是否存在:搜索代码中的 `visualHooks?.on`
354
+ 2. 检查日志中是否有 `[visual-hooks] on...Pushed` 输出
355
+ 3. 启用调试日志:`export DEBUG=visual-hooks:*`
356
+
357
+ ## 环境变量
358
+
359
+ 支持以下环境变量覆盖配置:
360
+
361
+ | 环境变量 | 说明 | 示例 |
362
+ | --- | --- | --- |
363
+ | `AI_SPEC_VISUAL_ENABLED` | 启用/禁用 | `true` / `false` |
364
+ | `AI_SPEC_VISUAL_URL` | Visual 服务地址 | `http://visual-server:3000` |
365
+ | `AI_SPEC_VISUAL_WORKSPACE_ID` | 工作区 ID | `my-project` |
366
+ | `AI_SPEC_VISUAL_PUSH_TIMEOUT_MS` | 推送超时(毫秒) | `5000` |
367
+
368
+ **使用示例**:
369
+
370
+ ```bash
371
+ # 临时禁用 visual hooks
372
+ AI_SPEC_VISUAL_ENABLED=false npx ai-spec-auto protocol-step
373
+
374
+ # 使用不同的 visual 服务
375
+ AI_SPEC_VISUAL_URL=http://visual-test:3000 npx ai-spec-auto protocol-step
376
+ ```
377
+
378
+ ## 测试
379
+
380
+ ### 单元测试
381
+
382
+ ```bash
383
+ # 运行 visual-hooks 单元测试
384
+ npm test -- internal/visual-hooks
385
+ ```
386
+
387
+ ### 集成测试
388
+
389
+ ```bash
390
+ # 1. 启动 visual 服务
391
+ cd /path/to/engineered-spec-visual
392
+ docker-compose up -d
393
+
394
+ # 2. 配置 auto 项目
395
+ cd /path/to/test-project
396
+ cat > .ai-spec/visual-config.json <<EOF
397
+ {
398
+ "enabled": true,
399
+ "visual_url": "http://localhost:3000",
400
+ "workspace_id": "test-project"
401
+ }
402
+ EOF
403
+
404
+ # 3. 执行协议命令
405
+ npx ai-spec-auto protocol-step
406
+
407
+ # 4. 验证推送
408
+ curl http://localhost:3000/api/workspaces
409
+ ```
410
+
411
+ ## 维护指南
412
+
413
+ ### 新增 Hook
414
+
415
+ 如果需要新增 hook(如 `onRunPaused`),步骤如下:
416
+
417
+ 1. 在 `index.js` 的 `initVisualHooks()` 中添加新 hook 方法
418
+ 2. 在对应的触发点调用 `hooks?.onRunPaused?.()`
419
+ 3. 更新本文档的"事件类型"表格
420
+ 4. 添加单元测试
421
+
422
+ ### 移除 Hooks
423
+
424
+ 如果需要完全移除 visual hooks:
425
+
426
+ 1. 删除 `internal/visual-hooks/` 目录
427
+ 2. 移除代码中的 hook 调用(搜索 `visualHooks`)
428
+ 3. 移除配置文件 `.ai-spec/visual-config.json`
429
+
430
+ ## Gate Signal(审批 → IDE 原对话自动继续)
431
+
432
+ `gate-signal.js` 是切面能力:当 `inbox-consumer.js` 成功应用 `approve_gate` /
433
+ `reject_gate` / `resume_run` 后,会额外写一份 `.ai-spec/gate-signal.json`,
434
+ 供 IDE 中的 AI(Cursor / Claude Code)通过规则/技能轮询,实现 Visual 页面点
435
+ 批准后原对话自动继续。
436
+
437
+ 当 `reject_gate` 携带 `payload.decision = "request_changes"` 时,会按“要求补充后重审”
438
+ 处理:
439
+
440
+ - 保持 `current-run.json.status = waiting-approval`
441
+ - 保持 `pending_gate` 不清空
442
+ - 事件类型写为 `gate-request-changes`
443
+ - `.ai-spec/gate-signal.json` 写 `decision = "request_changes"`
444
+ - `.ai-spec/next-step.md` 追加“补齐资产后重新提交审批”的提示
445
+
446
+ **契约(`schema_version: 1`)**:
447
+
448
+ ```json
449
+ {
450
+ "schema_version": 1,
451
+ "run_id": "run_2026xxxx",
452
+ "gate": "before-implementation",
453
+ "decision": "approved | rejected | resumed | request_changes",
454
+ "reason": "可选",
455
+ "actor_id": "可选",
456
+ "ts_ms": 1714000000000,
457
+ "ts_iso": "2026-04-23T..."
458
+ }
459
+ ```
460
+
461
+ **AI 读侧判定**:`signal.run_id === currentRunId && signal.gate === currentGate
462
+ && signal.ts_ms > waitStartedAt`,四项校验全部通过才视为命中;其余情况忽略。
463
+
464
+ **解耦保证**:
465
+
466
+ - 所有 IO 失败静默写 `.ai-spec/logs/gate-signal.log`,**绝不**影响 `inbox-consumer`
467
+ 返回的 `applied | rejected | conflict` 结果。
468
+ - 原子写(`.tmp` → rename),避免读侧读到半写文件。
469
+ - 对应 IDE 侧规则/技能:
470
+ - `.agents/rules/common/15-visual-gate-wait.md`
471
+ - `.agents/skills/common/wait-for-gate-signal/SKILL.md`
472
+
473
+ ## 相关文档
474
+
475
+ - [需求说明-visual补充.md](../../docs/five/需求说明-visual补充.md) - Visual 完整需求说明
476
+ - [快速部署指南](../../../engineered-spec-visual/docs/快速部署指南.md) - Visual 服务部署
477
+ - [架构设计与治理说明](../../docs/four/架构设计与治理说明.md) - 整体架构
478
+
479
+ ## 许可证
480
+
481
+ UNLICENSED