speccore 8.3.348 → 8.3.363

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 (254) hide show
  1. package/.agents/skills/spec-verify/SKILL.md +22 -1
  2. package/dist/cli.js +19 -4
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/about.d.ts.map +1 -1
  5. package/dist/commands/about.js +36 -1
  6. package/dist/commands/about.js.map +1 -1
  7. package/dist/commands/analyze/add-platform.d.ts +3 -0
  8. package/dist/commands/analyze/add-platform.d.ts.map +1 -0
  9. package/dist/commands/analyze/add-platform.js +82 -0
  10. package/dist/commands/analyze/add-platform.js.map +1 -0
  11. package/dist/commands/analyze/audit-fix.d.ts +3 -0
  12. package/dist/commands/analyze/audit-fix.d.ts.map +1 -0
  13. package/dist/commands/analyze/audit-fix.js +73 -0
  14. package/dist/commands/analyze/audit-fix.js.map +1 -0
  15. package/dist/commands/analyze/context-guard.d.ts +3 -0
  16. package/dist/commands/analyze/context-guard.d.ts.map +1 -0
  17. package/dist/commands/analyze/context-guard.js +75 -0
  18. package/dist/commands/analyze/context-guard.js.map +1 -0
  19. package/dist/commands/analyze/doc.d.ts +3 -0
  20. package/dist/commands/analyze/doc.d.ts.map +1 -0
  21. package/dist/commands/analyze/doc.js +77 -0
  22. package/dist/commands/analyze/doc.js.map +1 -0
  23. package/dist/commands/analyze/feature.d.ts +3 -0
  24. package/dist/commands/analyze/feature.d.ts.map +1 -0
  25. package/dist/commands/analyze/feature.js +75 -0
  26. package/dist/commands/analyze/feature.js.map +1 -0
  27. package/dist/commands/analyze/from-code.d.ts +3 -0
  28. package/dist/commands/analyze/from-code.d.ts.map +1 -0
  29. package/dist/commands/analyze/from-code.js +94 -0
  30. package/dist/commands/analyze/from-code.js.map +1 -0
  31. package/dist/commands/analyze/incremental.d.ts +3 -0
  32. package/dist/commands/analyze/incremental.d.ts.map +1 -0
  33. package/dist/commands/analyze/incremental.js +90 -0
  34. package/dist/commands/analyze/incremental.js.map +1 -0
  35. package/dist/commands/analyze/modes.d.ts +13 -0
  36. package/dist/commands/analyze/modes.d.ts.map +1 -0
  37. package/dist/commands/analyze/modes.js +147 -0
  38. package/dist/commands/analyze/modes.js.map +1 -0
  39. package/dist/commands/analyze/module.d.ts +3 -0
  40. package/dist/commands/analyze/module.d.ts.map +1 -0
  41. package/dist/commands/analyze/module.js +95 -0
  42. package/dist/commands/analyze/module.js.map +1 -0
  43. package/dist/commands/analyze/overview.d.ts +3 -0
  44. package/dist/commands/analyze/overview.d.ts.map +1 -0
  45. package/dist/commands/analyze/overview.js +125 -0
  46. package/dist/commands/analyze/overview.js.map +1 -0
  47. package/dist/commands/analyze/shared.d.ts +53 -0
  48. package/dist/commands/analyze/shared.d.ts.map +1 -0
  49. package/dist/commands/analyze/shared.js +34 -0
  50. package/dist/commands/analyze/shared.js.map +1 -0
  51. package/dist/commands/analyze/units.d.ts +46 -0
  52. package/dist/commands/analyze/units.d.ts.map +1 -0
  53. package/dist/commands/analyze/units.js +950 -0
  54. package/dist/commands/analyze/units.js.map +1 -0
  55. package/dist/commands/analyze.d.ts +6 -88
  56. package/dist/commands/analyze.d.ts.map +1 -1
  57. package/dist/commands/analyze.js +97 -1417
  58. package/dist/commands/analyze.js.map +1 -1
  59. package/dist/commands/ask.d.ts.map +1 -1
  60. package/dist/commands/ask.js +4 -2
  61. package/dist/commands/ask.js.map +1 -1
  62. package/dist/commands/dashboard.d.ts.map +1 -1
  63. package/dist/commands/dashboard.js +36 -1
  64. package/dist/commands/dashboard.js.map +1 -1
  65. package/dist/commands/deploy.d.ts +7 -1
  66. package/dist/commands/deploy.d.ts.map +1 -1
  67. package/dist/commands/deploy.js +156 -3
  68. package/dist/commands/deploy.js.map +1 -1
  69. package/dist/commands/doc2spec.d.ts +1 -1
  70. package/dist/commands/doc2spec.d.ts.map +1 -1
  71. package/dist/commands/doc2spec.js +33 -23
  72. package/dist/commands/doc2spec.js.map +1 -1
  73. package/dist/commands/doctor.js +60 -13
  74. package/dist/commands/doctor.js.map +1 -1
  75. package/dist/commands/execute.d.ts.map +1 -1
  76. package/dist/commands/execute.js +22 -0
  77. package/dist/commands/execute.js.map +1 -1
  78. package/dist/commands/help.js +36 -1
  79. package/dist/commands/help.js.map +1 -1
  80. package/dist/commands/init.d.ts.map +1 -1
  81. package/dist/commands/init.js +16 -3
  82. package/dist/commands/init.js.map +1 -1
  83. package/dist/commands/pipeline.d.ts.map +1 -1
  84. package/dist/commands/pipeline.js +15 -0
  85. package/dist/commands/pipeline.js.map +1 -1
  86. package/dist/commands/plan.js +2 -0
  87. package/dist/commands/plan.js.map +1 -1
  88. package/dist/commands/pr.d.ts.map +1 -1
  89. package/dist/commands/pr.js +14 -3
  90. package/dist/commands/pr.js.map +1 -1
  91. package/dist/commands/prompts.d.ts +11 -1
  92. package/dist/commands/prompts.d.ts.map +1 -1
  93. package/dist/commands/prompts.js +197 -15
  94. package/dist/commands/prompts.js.map +1 -1
  95. package/dist/commands/reindex.d.ts.map +1 -1
  96. package/dist/commands/reindex.js +23 -0
  97. package/dist/commands/reindex.js.map +1 -1
  98. package/dist/commands/retro.d.ts.map +1 -1
  99. package/dist/commands/retro.js +3 -1
  100. package/dist/commands/retro.js.map +1 -1
  101. package/dist/commands/status-panel.d.ts.map +1 -1
  102. package/dist/commands/status-panel.js +9 -1
  103. package/dist/commands/status-panel.js.map +1 -1
  104. package/dist/commands/unitize.d.ts +2 -0
  105. package/dist/commands/unitize.d.ts.map +1 -1
  106. package/dist/commands/unitize.js +168 -6
  107. package/dist/commands/unitize.js.map +1 -1
  108. package/dist/commands/update-env-configs.d.ts.map +1 -1
  109. package/dist/commands/update-env-configs.js +127 -71
  110. package/dist/commands/update-env-configs.js.map +1 -1
  111. package/dist/commands/verify.d.ts +8 -0
  112. package/dist/commands/verify.d.ts.map +1 -1
  113. package/dist/commands/verify.js +383 -16
  114. package/dist/commands/verify.js.map +1 -1
  115. package/dist/commands/welcome.d.ts.map +1 -1
  116. package/dist/commands/welcome.js +3 -1
  117. package/dist/commands/welcome.js.map +1 -1
  118. package/dist/core/ai-verify/plan-generator.d.ts +94 -0
  119. package/dist/core/ai-verify/plan-generator.d.ts.map +1 -0
  120. package/dist/core/ai-verify/plan-generator.js +598 -0
  121. package/dist/core/ai-verify/plan-generator.js.map +1 -0
  122. package/dist/core/ai-verify/result-parser.d.ts +27 -0
  123. package/dist/core/ai-verify/result-parser.d.ts.map +1 -0
  124. package/dist/core/ai-verify/result-parser.js +212 -0
  125. package/dist/core/ai-verify/result-parser.js.map +1 -0
  126. package/dist/core/ai-verify/scope-resolver.d.ts +34 -0
  127. package/dist/core/ai-verify/scope-resolver.d.ts.map +1 -0
  128. package/dist/core/ai-verify/scope-resolver.js +183 -0
  129. package/dist/core/ai-verify/scope-resolver.js.map +1 -0
  130. package/dist/core/ai-verify/types.d.ts +171 -0
  131. package/dist/core/ai-verify/types.d.ts.map +1 -0
  132. package/dist/core/ai-verify/types.js +9 -0
  133. package/dist/core/ai-verify/types.js.map +1 -0
  134. package/dist/core/ai-verify/visual-judge.d.ts +33 -0
  135. package/dist/core/ai-verify/visual-judge.d.ts.map +1 -0
  136. package/dist/core/ai-verify/visual-judge.js +123 -0
  137. package/dist/core/ai-verify/visual-judge.js.map +1 -0
  138. package/dist/core/ask-engine.d.ts +6 -0
  139. package/dist/core/ask-engine.d.ts.map +1 -1
  140. package/dist/core/ask-engine.js +83 -3
  141. package/dist/core/ask-engine.js.map +1 -1
  142. package/dist/core/asset-stamp.d.ts +7 -4
  143. package/dist/core/asset-stamp.d.ts.map +1 -1
  144. package/dist/core/asset-stamp.js +9 -6
  145. package/dist/core/asset-stamp.js.map +1 -1
  146. package/dist/core/code-graph/builder.d.ts.map +1 -1
  147. package/dist/core/code-graph/builder.js +93 -75
  148. package/dist/core/code-graph/builder.js.map +1 -1
  149. package/dist/core/code-graph/incremental-build.d.ts.map +1 -1
  150. package/dist/core/code-graph/incremental-build.js +13 -19
  151. package/dist/core/code-graph/incremental-build.js.map +1 -1
  152. package/dist/core/code-graph/index.d.ts +1 -1
  153. package/dist/core/code-graph/index.d.ts.map +1 -1
  154. package/dist/core/code-graph/index.js +15 -12
  155. package/dist/core/code-graph/index.js.map +1 -1
  156. package/dist/core/code-graph/multimodal.js +1 -1
  157. package/dist/core/code-graph/parser.js +1 -1
  158. package/dist/core/code-graph/query.d.ts +1 -1
  159. package/dist/core/code-graph/reporter.d.ts +1 -1
  160. package/dist/core/code-graph/reporter.d.ts.map +1 -1
  161. package/dist/core/code-graph/reporter.js +18 -10
  162. package/dist/core/code-graph/reporter.js.map +1 -1
  163. package/dist/core/code-graph/requirement-linker.d.ts.map +1 -1
  164. package/dist/core/code-graph/requirement-linker.js +24 -14
  165. package/dist/core/code-graph/requirement-linker.js.map +1 -1
  166. package/dist/core/code-graph/types.d.ts +1 -1
  167. package/dist/core/code-graph/types.js +1 -1
  168. package/dist/core/code-graph/visualizer.d.ts +1 -7
  169. package/dist/core/code-graph/visualizer.d.ts.map +1 -1
  170. package/dist/core/code-graph/visualizer.js +476 -49
  171. package/dist/core/code-graph/visualizer.js.map +1 -1
  172. package/dist/core/deploy/engine.d.ts +21 -0
  173. package/dist/core/deploy/engine.d.ts.map +1 -1
  174. package/dist/core/deploy/engine.js +288 -12
  175. package/dist/core/deploy/engine.js.map +1 -1
  176. package/dist/core/deploy-ledger.d.ts +12 -0
  177. package/dist/core/deploy-ledger.d.ts.map +1 -0
  178. package/dist/core/deploy-ledger.js +35 -0
  179. package/dist/core/deploy-ledger.js.map +1 -0
  180. package/dist/core/environment-config.d.ts +11 -0
  181. package/dist/core/environment-config.d.ts.map +1 -1
  182. package/dist/core/environment-config.js +4 -0
  183. package/dist/core/environment-config.js.map +1 -1
  184. package/dist/core/intent-cache.d.ts.map +1 -1
  185. package/dist/core/intent-cache.js +6 -0
  186. package/dist/core/intent-cache.js.map +1 -1
  187. package/dist/core/knowledge-visualizer.js +1 -1
  188. package/dist/core/page-bundle.d.ts +2 -0
  189. package/dist/core/page-bundle.d.ts.map +1 -1
  190. package/dist/core/page-bundle.js +18 -1
  191. package/dist/core/page-bundle.js.map +1 -1
  192. package/dist/core/plan-html.js +1 -1
  193. package/dist/core/platform-inference.d.ts +35 -0
  194. package/dist/core/platform-inference.d.ts.map +1 -1
  195. package/dist/core/platform-inference.js +92 -0
  196. package/dist/core/platform-inference.js.map +1 -1
  197. package/dist/core/prompt-plugins/analyze-graph-plugin.d.ts.map +1 -1
  198. package/dist/core/prompt-plugins/analyze-graph-plugin.js +16 -1
  199. package/dist/core/prompt-plugins/analyze-graph-plugin.js.map +1 -1
  200. package/dist/core/prompt-plugins/execute-graph-plugin.d.ts +2 -0
  201. package/dist/core/prompt-plugins/execute-graph-plugin.d.ts.map +1 -1
  202. package/dist/core/prompt-plugins/execute-graph-plugin.js +127 -27
  203. package/dist/core/prompt-plugins/execute-graph-plugin.js.map +1 -1
  204. package/dist/core/quality-audit.d.ts.map +1 -1
  205. package/dist/core/quality-audit.js +18 -0
  206. package/dist/core/quality-audit.js.map +1 -1
  207. package/dist/core/reindex-engine.d.ts +20 -0
  208. package/dist/core/reindex-engine.d.ts.map +1 -1
  209. package/dist/core/reindex-engine.js +142 -0
  210. package/dist/core/reindex-engine.js.map +1 -1
  211. package/dist/core/requirement-clarifier.d.ts.map +1 -1
  212. package/dist/core/requirement-clarifier.js +22 -6
  213. package/dist/core/requirement-clarifier.js.map +1 -1
  214. package/dist/core/spec-paths.d.ts +5 -0
  215. package/dist/core/spec-paths.d.ts.map +1 -1
  216. package/dist/core/spec-paths.js +1 -0
  217. package/dist/core/spec-paths.js.map +1 -1
  218. package/dist/core/test-config.d.ts +7 -1
  219. package/dist/core/test-config.d.ts.map +1 -1
  220. package/dist/core/test-config.js +59 -11
  221. package/dist/core/test-config.js.map +1 -1
  222. package/dist/core/ui-verify/index.d.ts +1 -1
  223. package/dist/core/ui-verify/index.d.ts.map +1 -1
  224. package/dist/core/ui-verify/index.js +2 -1
  225. package/dist/core/ui-verify/index.js.map +1 -1
  226. package/dist/core/ui-verify/smoke-engine.js +71 -15
  227. package/dist/core/ui-verify/smoke-engine.js.map +1 -1
  228. package/dist/core/ui-verify/spec-generator.d.ts +5 -9
  229. package/dist/core/ui-verify/spec-generator.d.ts.map +1 -1
  230. package/dist/core/ui-verify/spec-generator.js +66 -3
  231. package/dist/core/ui-verify/spec-generator.js.map +1 -1
  232. package/dist/core/ui-verify/types.d.ts +25 -0
  233. package/dist/core/ui-verify/types.d.ts.map +1 -1
  234. package/dist/core/ui-verify/visual-model-client.d.ts +2 -0
  235. package/dist/core/ui-verify/visual-model-client.d.ts.map +1 -1
  236. package/dist/core/ui-verify/visual-model-client.js +4 -4
  237. package/dist/core/ui-verify/visual-model-client.js.map +1 -1
  238. package/dist/core/unified-config.d.ts +27 -0
  239. package/dist/core/unified-config.d.ts.map +1 -1
  240. package/dist/core/unified-config.js +37 -0
  241. package/dist/core/unified-config.js.map +1 -1
  242. package/package.json +1 -1
  243. package/templates/accounts-example.yaml +49 -0
  244. package/templates/deploy-examples.yaml +6 -7
  245. package/templates/html/fonts/JetBrainsMono.woff2 +0 -0
  246. package/templates/html/fonts/Orbitron.woff2 +0 -0
  247. package/templates/html/speccore-ask-explain.html +1 -1
  248. package/templates/html/speccore-ask-guide.html +2 -2
  249. package/templates/html/speccore-ask-match.html +1 -1
  250. package/templates/html/speccore-ask-pipeline.html +1 -1
  251. package/templates/html/speccore-ask-result.html +2 -2
  252. package/templates/html/speccore-help.html +2 -2
  253. package/templates/html/speccore-setup-guide.html +16 -1
  254. package/templates/speccore-yml-example.yml +12 -0
@@ -64,122 +64,166 @@ function generateEnvContent(t) {
64
64
 
65
65
  env: ${t.name}
66
66
 
67
- # 该环境对应的 Git 目标分支
67
+ # ─────────────────────────────────────────────────────────────
68
+ # 该环境对应的 Git 目标分支(四级回退第 2 级)
69
+ # 回退顺序(v8.3.348+,deploy / pipeline 共用):
70
+ # ① platforms.{端}.branch 端级分支(本文件按端指定,优先级最高)
71
+ # ② 本 branch 环境全局分支(所有端默认使用)
72
+ # ③ PROJECT.yaml default_branch 项目级兜底
73
+ # ④ 子任务 git-config 源分支 任务级兜底
74
+ # 命令行显式 --branch 优先于以上全部。
68
75
  ${branchComment}
69
76
  ${t.branch ? `branch: ${t.branch}` : '# branch: (未配置,pipeline 不会执行 merge)'}
70
77
 
71
- # 全局默认值
72
- defaults:
73
- build_cmd: ${t.buildCmd}
74
-
75
- # 按端覆盖配置
76
- # v8.3.82+: 每个端可单独配置 branch,覆盖全局 branch
77
- # branch: main # 该端使用独立分支,pipeline 时优先使用
78
+ # ─────────────────────────────────────────────────────────────
79
+ # 构建命令:各端各自配置 build_cmd(Java / Web / 移动端构建方式各异,
80
+ # 不设全局默认)。解析层支持 defaults.build_cmd 作为「端未写时的兜底」,
81
+ # 仅全端同构项目适用(如全是前端),异构项目不要设。
82
+ # ─────────────────────────────────────────────────────────────
78
83
  platforms:
79
- # 前端示例:H5 移动端 → S3/CDN
84
+ # ═══ 前端示例 1:H5 移动端 → S3/CDN(静态资源上传)═══
85
+ # 分支说明:本端不写 branch → 回退使用上方全局 branch(四级回退第 ② 级)
80
86
  h5:
81
- build_cmd: ${t.buildCmd}
87
+ build_cmd: ${t.buildCmd} # 本端构建命令(部署前在端源码目录执行)
82
88
  deploy:
83
- type: static
84
- output_dir: dist
85
- target: s3://mybucket-${t.name}/h5/
86
-
87
- # 前端示例:Admin 管理后台 → Nginx 服务器
89
+ type: static # 部署类型:静态资源上传
90
+ output_dir: dist # 构建产物目录(相对端源码路径)
91
+ # 上传目标三种格式:s3://bucket/path(AWS S3)、rsync://user@host:/path 或
92
+ # user@host:/path(rsync 增量同步)、本地目录(直接复制,如挂载的 NFS)
93
+ target: s3://mybucket-${t.name}/h5/ # 上传目标:S3 路径 / rsync 地址 / 本地目录
94
+
95
+ # ═══ 前端示例 2:Admin 管理后台 → Nginx 服务器(SSH)═══
96
+ # 分支说明:示范端级分支覆盖——仅此端切 release 分支(四级回退第 ① 级,
97
+ # 覆盖上方全局 branch);其他端不写 branch 则照用全局 branch。
88
98
  admin-web:
99
+ branch: release/admin-web-${t.name} # 端级分支(覆盖全局 branch)
89
100
  build_cmd: ${t.buildCmd}
90
101
  deploy:
91
- type: ssh
92
- output_dir: dist
93
- host: deploy@${t.name === 'production' ? 'prod' : t.name}-server.example.com:22
94
- remote_dir: /usr/share/nginx/html/admin/
95
- key: ~/.ssh/deploy_key
96
- post_deploy:
102
+ type: ssh # 部署类型:SCP 上传产物 + SSH 执行远端命令
103
+ output_dir: dist # 构建产物目录(被 SCP 上传的内容)
104
+ host: deploy@${t.name === 'production' ? 'prod' : t.name}-server.example.com:22 # 远程主机(user@host:port)
105
+ remote_dir: /usr/share/nginx/html/admin/ # 远程部署目录(nginx 站点根,须有写权限)
106
+ key: ~/.ssh/deploy_key # SSH 私钥路径(与 password 二选一,推荐密钥认证)
107
+ # v8.3.348+ 备份开关:覆盖前远端 tar 备份旧包,backup_keep 份滚动清理;默认开启
108
+ # 备份命名:{远程目录}.bak-{时间戳}.tar.gz(如 /usr/share/nginx/html/admin.bak-2026-10-29_14-30-25.tar.gz),恢复时按时间选版本
109
+ backup: true # 是否备份(默认 true;--no-backup 或 backup: false 可关闭)
110
+ backup_keep: 5 # 备份保留份数(默认 5,超出自动删除最旧)
111
+ post_deploy: # 部署后钩子(逐条执行,如 reload 服务)
97
112
  - ssh deploy@${t.name === 'production' ? 'prod' : t.name}-server.example.com "sudo nginx -s reload"
98
113
 
99
- # 后端示例:Java Spring Boot → SSH + systemd(推荐)
114
+ # ═══ 前端示例 3:Next.js SSR / 静态站 → Vercel(托管平台)═══
115
+ # 前置:项目目录执行过 npx vercel login(首次会要求浏览器授权),
116
+ # 且项目已关联 Vercel(npx vercel link)或首次部署时交互确认。
117
+ # 部署方式:production 环境自动加 --prod 上正式环境,其余环境走 preview。
118
+ # 构建由 Vercel 云端完成(本地 build_cmd 仅作可选预检,引擎不执行)。
119
+ web-ssr:
120
+ # build_cmd: npm run build # 可选:本地构建预检;正式构建由 Vercel 云端完成
121
+ deploy:
122
+ type: vercel # 部署类型:Vercel 托管(Next.js / Nuxt / 静态站等)
123
+
124
+ # ═══ 后端示例 1:Java Spring Boot → SSH + systemd(推荐)═══
100
125
  # 前置:服务器上配置好 /etc/systemd/system/order-api.service
126
+ # 变体:传统 Tomcat 部署同样走 type: ssh,产物换成 war,script 改为
127
+ # cp app.war /opt/tomcat/webapps/ && systemctl restart tomcat 即可。
101
128
  order-api:
102
- build_cmd: ./mvnw clean package -DskipTests -P${t.name === 'local' ? 'dev' : t.name}
129
+ build_cmd: ./mvnw clean package -DskipTests -P${t.name === 'local' ? 'dev' : t.name} # 构建命令(maven 打包跳过测试)
103
130
  deploy:
104
131
  type: ssh
105
- output_dir: target
132
+ output_dir: target # 构建产物目录(jar 所在)
106
133
  host: deploy@${t.name === 'production' ? 'prod' : t.name}-server.example.com:22
107
- remote_dir: /opt/services/order-api/
134
+ remote_dir: /opt/services/order-api/ # 远程部署目录
108
135
  key: ~/.ssh/deploy_key
109
- script: |
110
- sudo systemctl stop order-api
111
- sudo cp /opt/services/order-api/*.jar /opt/services/order-api/app.jar
112
- sudo systemctl start order-api
113
- post_deploy:
136
+ # 远端重启命令:ssh 类型的 script 是「远端 shell 命令串」,不经本地解析;
137
+ # 长脚本建议放远端文件(如 /opt/services/order-api/restart.sh),此处引用;
138
+ # 两三行短命令可直接内联(等价写法见下方注释)。
139
+ script: bash /opt/services/order-api/restart.sh
140
+ # 内联短命令等价写法:
141
+ # script: |
142
+ # sudo systemctl stop order-api
143
+ # sudo cp /opt/services/order-api/*.jar /opt/services/order-api/app.jar
144
+ # sudo systemctl start order-api
145
+ backup: true # v8.3.348+:覆盖前远端 tar 备份旧包(默认开启,backup: false 可关)
146
+ # 备份命名同 admin-web:{远程目录}.bak-{时间戳}.tar.gz
147
+ backup_keep: 5 # 备份保留份数
148
+ post_deploy: # 部署后钩子:确认服务状态
114
149
  - ssh -i ~/.ssh/deploy_key deploy@${t.name === 'production' ? 'prod' : t.name}-server.example.com "sudo systemctl status order-api"
115
150
 
116
- # 后端示例:Java API 服务 → Docker(容器化部署)
151
+ # ═══ 后端示例 2:Java API 服务 → Docker(容器化部署)═══
117
152
  order-api-docker:
118
153
  build_cmd: ./mvnw package -DskipTests -P${t.name === 'local' ? 'dev' : t.name}
119
154
  deploy:
120
- type: docker
121
- registry: registry.example.com/myapp-${t.name === 'production' ? 'prod' : t.name}
122
- image: order-service
123
- tag: ${t.name === 'production' ? 'prod' : t.name}
124
-
125
- # 后端示例:Node.js 服务 → PM2
155
+ type: docker # 部署类型:构建镜像并推送到 registry
156
+ registry: registry.example.com/myapp-${t.name === 'production' ? 'prod' : t.name} # 镜像仓库地址(远程部署必须配置)
157
+ image: order-service # 镜像名
158
+ tag: ${t.name === 'production' ? 'prod' : t.name} # 镜像标签(默认 latest)
159
+ backup: true # v8.3.348+:pull 前旧镜像打 backup tag(零成本,镜像层共享;默认开启)
160
+ # 备份 tag 命名:{原tag}.bak-{时间戳}(如 staging.bak-2026-10-29_14-30-25),docker images 可见
161
+ backup_keep: 5
162
+
163
+ # ═══ 后端示例 3:Node.js 服务 → PM2 ═══
126
164
  notification-service:
127
- build_cmd: npm run build
165
+ build_cmd: npm run build # 构建命令(产物交给 pm2 的 script 字段启动)
128
166
  deploy:
129
- type: pm2
130
- output_dir: .
131
- pm2_config: .speccore/environments/scripts/ecosystem.config.js
132
- # 如需远程部署,取消注释:
167
+ type: pm2 # 部署类型:PM2 进程管理(本地 reload 或 ssh 远端 reload)
168
+ output_dir: . # 产物目录(整个工程目录交给 PM2 管理)
169
+ pm2_config: .speccore/environments/scripts/ecosystem.config.js # PM2 配置(生成示例见 scripts/ 目录)
170
+ # 如需远程部署(ssh 到远端执行 pm2 reload),取消注释:
133
171
  # host: deploy@server.example.com
134
172
  # remote_dir: /opt/services/notification
135
173
 
136
- # 后端示例:Go 网关 → K8s
174
+ # ═══ 后端示例 4:Go 网关 → K8s ═══
175
+ # 前置:本地 kubectl 已配置目标集群上下文
137
176
  gateway:
138
- build_cmd: go build -o bin/gateway ./cmd/gateway
177
+ build_cmd: go build -o bin/gateway ./cmd/gateway # 构建命令(镜像由清单内 image 字段决定)
139
178
  deploy:
140
- type: k8s
141
- target: ${t.name}
142
- script: .speccore/environments/scripts/k8s-deployment.yaml
143
-
144
- # 后端示例:Python 处理 → 脚本部署
179
+ type: k8s # 部署类型:kubectl 应用清单(apply 后等待就绪)
180
+ target: ${t.name} # k8s namespace(清单文件内 metadata.namespace 可再覆盖)
181
+ script: .speccore/environments/scripts/k8s-deployment.yaml # 清单文件路径(本地文件)
182
+
183
+ # ═══ 后端示例 5:Python 处理 → 脚本部署 ═══
184
+ # type: script 的 script 字段支持「本地脚本文件路径」或内联命令——
185
+ # 文件存在则执行文件,不存在则当命令执行(v8.3.296+ 双基准解析)。
186
+ # Python 服务也可用 script 调 gunicorn / supervisor 等进程管理工具。
145
187
  data-processor:
146
188
  build_cmd: pip install -r requirements.txt -t dist/
147
189
  deploy:
148
- type: script
149
- script: .speccore/environments/scripts/deploy.sh
190
+ type: script # 部署类型:自定义脚本
191
+ script: .speccore/environments/scripts/deploy.sh # 脚本路径(或内联命令)
150
192
 
151
- # 后端示例:用户服务 → Helm
193
+ # ═══ 后端示例 6:用户服务 → Helm ═══
152
194
  user-service:
153
- build_cmd: ./mvnw package -DskipTests -P${t.name}
195
+ build_cmd: ./mvnw package -DskipTests -P${t.name} # 构建命令(镜像打包后由 Chart 引用)
154
196
  deploy:
155
- type: helm
156
- target: ${t.name}
157
- script: ./helm/user-service
158
- output_dir: .speccore/environments/scripts/values-${t.name}.yaml
197
+ type: helm # 部署类型:Helm Chart 安装(升级或首装)
198
+ target: ${t.name} # helm namespace(如未创建需先 kubectl create ns)
199
+ script: ./helm/user-service # Chart 路径(本地目录或远程仓库引用)
200
+ output_dir: .speccore/environments/scripts/values-${t.name}.yaml # values 文件(按环境区分)
159
201
 
160
- # 后端示例:定时任务 → SFTP 到服务器
202
+ # ═══ 后端示例 7:定时任务 → SFTP 到服务器 ═══
203
+ # 适用场景:服务器只开放 SFTP、无 ssh shell 权限(如托管机)
161
204
  scheduler:
162
- build_cmd: go build -o bin/scheduler ./cmd/scheduler
205
+ build_cmd: go build -o bin/scheduler ./cmd/scheduler # 构建命令(产物为 bin/scheduler 可执行文件)
163
206
  deploy:
164
- type: sftp
165
- output_dir: bin
166
- host: deploy@server.example.com
167
- remote_dir: /opt/services/scheduler/
168
- key: ~/.ssh/deploy_key
207
+ type: sftp # 部署类型:SFTP 上传(无远端 shell 权限场景)
208
+ output_dir: bin # 构建产物目录(整个目录被上传)
209
+ host: deploy@server.example.com # 远程主机(user@host)
210
+ remote_dir: /opt/services/scheduler/ # 远程目录(必须配置)
211
+ key: ~/.ssh/deploy_key # SSH 私钥(sftp 暂不支持备份开关 backup/backup_keep,默认开启不生效)
169
212
 
170
- # 后端示例:WebSocket 服务 → 函数计算
213
+ # ═══ 后端示例 8:WebSocket 服务 → 函数计算 ═══
171
214
  ws-handler:
172
- build_cmd: npm run build
215
+ build_cmd: npm run build # 构建命令(产物打包为函数代码包)
173
216
  deploy:
174
- type: serverless
175
- provider: aliyun-fc
176
- target: ws-handler-${t.name}
217
+ type: serverless # 部署类型:函数计算(阿里云 FC / AWS Lambda / 腾讯 SCF)
218
+ provider: aliyun-fc # 提供商:aliyun-fc / aws-lambda / tencent-scf
219
+ target: ws-handler-${t.name} # 函数名(按环境区分)
177
220
 
178
221
  # 测试相关配置(与 verify --config 联动)
222
+ # 键名须与上方 platforms 的端名一致(示例:h5 / admin-web / order-api)
179
223
  tests:
180
224
  base_urls:
181
225
  h5: ${t.baseUrl}/h5
182
- admin: ${t.baseUrl}/admin
226
+ admin-web: ${t.baseUrl}/admin
183
227
  order-api: ${t.baseUrl.replace('www.', 'api-').replace('https://', 'https://api-')}
184
228
 
185
229
  visual_model:
@@ -574,7 +618,9 @@ async function initEnvironmentConfigs(projectRoot) {
574
618
  else {
575
619
  // 已有环境配置,仅更新示例文件 + 补全缺失的 Helm values
576
620
  const examplePath = (0, path_1.join)(envDir, 'staging.yaml.example');
577
- const exampleContent = generateEnvContent(ENV_TEMPLATES[2]) + '\n# 本文件为示例,可复制为 staging.yaml 后修改使用\n';
621
+ // v8.3.348+: 示例取 staging 模板(ENV_TEMPLATES[3])——此前误用 test 模板,
622
+ // 文件名 staging 内容却是 test,名实不符
623
+ const exampleContent = generateEnvContent(ENV_TEMPLATES[3]) + '\n# 本文件为示例,可复制为 staging.yaml 后修改使用\n';
578
624
  await (0, fs_extra_1.writeFile)(examplePath, exampleContent, 'utf-8');
579
625
  created.push('.speccore/environments/staging.yaml.example');
580
626
  // v8.3.69+: 已有环境配置时,补全可能缺失的 Helm values 模板
@@ -886,6 +932,16 @@ async function initTestConfigs(projectRoot) {
886
932
  created.push(`.speccore/tests/${t.name}.yaml`);
887
933
  }
888
934
  }
935
+ // v8.3.350+: AI 浏览器验证账号配置(已存在不覆盖,保留用户填写的密码)
936
+ const accountsPath = (0, path_1.join)(testsDir, 'accounts.yaml');
937
+ if (!(await (0, fs_extra_1.pathExists)(accountsPath))) {
938
+ const accountsSrc = (0, path_1.join)(__dirname, '..', '..', 'templates', 'accounts-example.yaml');
939
+ if (await (0, fs_extra_1.pathExists)(accountsSrc)) {
940
+ const accountsContent = await (0, fs_extra_1.readFile)(accountsSrc, 'utf-8');
941
+ await (0, fs_extra_1.writeFile)(accountsPath, accountsContent, 'utf-8');
942
+ created.push('.speccore/tests/accounts.yaml');
943
+ }
944
+ }
889
945
  return created;
890
946
  }
891
947
  //# sourceMappingURL=update-env-configs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update-env-configs.js","sourceRoot":"","sources":["../../src/commands/update-env-configs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update-env-configs.js","sourceRoot":"","sources":["../../src/commands/update-env-configs.ts"],"names":[],"mappings":"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"}
@@ -50,6 +50,14 @@ interface VerifyOptions {
50
50
  baseUrl?: string;
51
51
  envFile?: string;
52
52
  config?: string;
53
+ /** v8.3.352+: API 测试缺契约时报错阻断(默认跳过仅告警,防「契约缺失=验证通过」假象) */
54
+ requireContract?: boolean;
55
+ ai?: boolean;
56
+ scope?: string;
57
+ platform?: string;
58
+ env?: string;
59
+ aiReport?: string;
60
+ aiJudge?: string;
53
61
  }
54
62
  export declare function verifyCommand(options: VerifyOptions): Promise<void>;
55
63
  export declare function runUIVerification(taskId: string, iterDir: string, options: VerifyOptions, qgConfig?: import('../core/quality-gate').ResolvedQualityGate): Promise<UIVerifyReport | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAaH,OAAO,EAGL,cAAc,EAcf,MAAM,mBAAmB,CAAC;AAuB3B,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,CAAC;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,QAAQ,GAAG,SAAS,GAAG,EAAE,CAAC;IACjD,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAwMzE;AAiFD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EACtB,QAAQ,CAAC,EAAE,OAAO,sBAAsB,EAAE,mBAAmB,GAC5D,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAkPhC;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAkCxD"}
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAaH,OAAO,EAGL,cAAc,EAcf,MAAM,mBAAmB,CAAC;AAuB3B,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,CAAC;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,QAAQ,GAAG,SAAS,GAAG,EAAE,CAAC;IACjD,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA0OzE;AAmFD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EACtB,QAAQ,CAAC,EAAE,OAAO,sBAAsB,EAAE,mBAAmB,GAC5D,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAkPhC;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAwCxD"}