fengming 0.3.10 → 0.3.11

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 (761) hide show
  1. package/dist/build-info.json +2 -2
  2. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  3. package/dist/cli-startup-metadata.json +8 -8
  4. package/dist/control-ui/assets/{activity-D-mnRThU.js → activity-wgT0-JR0.js} +2 -2
  5. package/dist/control-ui/assets/{agents-U_KSP5I_.js → agents-DG5PobrT.js} +2 -2
  6. package/dist/control-ui/assets/{channels-ohK9_G1O.js → channels-CX28oM42.js} +2 -2
  7. package/dist/control-ui/assets/{cron-6ZCzfU29.js → cron-B8ixwBqU.js} +2 -2
  8. package/dist/control-ui/assets/{debug-CSsDLg_s.js → debug-CnkYZUXy.js} +2 -2
  9. package/dist/control-ui/assets/{index-jUDczxhd.js → index-DQRZJKbO.js} +4 -4
  10. package/dist/control-ui/assets/{instances-782ZoDT4.js → instances-BE3mV1JC.js} +2 -2
  11. package/dist/control-ui/assets/{nodes-BMX16BKM.js → nodes-Cou4PWRX.js} +2 -2
  12. package/dist/control-ui/assets/{sessions-jLGSApYa.js → sessions-DpAaBT21.js} +2 -2
  13. package/dist/control-ui/assets/{skills-DweBwUhs.js → skills-DjA_j_20.js} +2 -2
  14. package/dist/control-ui/assets/{workboard-BsU-FXIo.js → workboard-BFnvbS0k.js} +2 -2
  15. package/dist/control-ui/index.html +1 -1
  16. package/dist/control-ui/sw.js +1 -1
  17. package/dist/gateway/protocol/index.d.ts +1 -1
  18. package/dist/{index-AZzJCgph.d.ts → index-DuDY3bCZ.d.ts} +2 -2
  19. package/dist/plugin-sdk/.boundary-entry-shims.stamp +1 -1
  20. package/dist/plugin-sdk/agent-config-primitives.d.ts +1 -1
  21. package/dist/plugin-sdk/{bundled-channel-config-schema-Dfn3b8sF.d.ts → bundled-channel-config-schema-BPFNnbwu.d.ts} +23 -23
  22. package/dist/plugin-sdk/bundled-channel-config-schema.d.ts +3 -3
  23. package/dist/plugin-sdk/channel-config-primitives.d.ts +2 -2
  24. package/dist/plugin-sdk/channel-config-schema-legacy.d.ts +3 -3
  25. package/dist/plugin-sdk/channel-config-schema.d.ts +2 -2
  26. package/dist/plugin-sdk/channel-core.d.ts +1 -1
  27. package/dist/plugin-sdk/channel-plugin-common.d.ts +1 -1
  28. package/dist/plugin-sdk/compat.d.ts +2 -2
  29. package/dist/plugin-sdk/{config-schema-DUddICQM.d.ts → config-schema-D7cABQ6o.d.ts} +1 -1
  30. package/dist/plugin-sdk/config-schema.d.ts +2 -2
  31. package/dist/plugin-sdk/core.d.ts +1 -1
  32. package/dist/plugin-sdk/discord.d.ts +2 -2
  33. package/dist/plugin-sdk/tts-runtime.d.ts +1 -1
  34. package/dist/plugin-sdk/{zod-schema.core-B4_b2R5K.d.ts → zod-schema.core-CwBNqcXp.d.ts} +1 -1
  35. package/package.json +4 -409
  36. package/CHANGELOG.md +0 -42
  37. package/THIRD_PARTY_NOTICES.md +0 -37
  38. package/docs/.i18n/README.md +0 -81
  39. package/docs/.i18n/ar-navigation.json +0 -18
  40. package/docs/.i18n/de-navigation.json +0 -18
  41. package/docs/.i18n/es-navigation.json +0 -18
  42. package/docs/.i18n/fr-navigation.json +0 -18
  43. package/docs/.i18n/glossary.ar.json +0 -78
  44. package/docs/.i18n/glossary.de.json +0 -78
  45. package/docs/.i18n/glossary.es.json +0 -78
  46. package/docs/.i18n/glossary.fa.json +0 -78
  47. package/docs/.i18n/glossary.fr.json +0 -78
  48. package/docs/.i18n/glossary.id.json +0 -78
  49. package/docs/.i18n/glossary.it.json +0 -78
  50. package/docs/.i18n/glossary.ja-JP.json +0 -98
  51. package/docs/.i18n/glossary.ko.json +0 -78
  52. package/docs/.i18n/glossary.nl.json +0 -78
  53. package/docs/.i18n/glossary.pl.json +0 -78
  54. package/docs/.i18n/glossary.pt-BR.json +0 -78
  55. package/docs/.i18n/glossary.th.json +0 -78
  56. package/docs/.i18n/glossary.tr.json +0 -78
  57. package/docs/.i18n/glossary.uk.json +0 -78
  58. package/docs/.i18n/glossary.vi.json +0 -78
  59. package/docs/.i18n/glossary.zh-CN.json +0 -1122
  60. package/docs/.i18n/glossary.zh-TW.json +0 -78
  61. package/docs/.i18n/id-navigation.json +0 -18
  62. package/docs/.i18n/it-navigation.json +0 -18
  63. package/docs/.i18n/ja-navigation.json +0 -18
  64. package/docs/.i18n/ko-navigation.json +0 -18
  65. package/docs/.i18n/pl-navigation.json +0 -18
  66. package/docs/.i18n/pt-BR-navigation.json +0 -18
  67. package/docs/.i18n/tr-navigation.json +0 -18
  68. package/docs/.i18n/translation-workflow.md +0 -111
  69. package/docs/.i18n/zh-Hans-navigation.json +0 -552
  70. package/docs/AGENTS.md +0 -36
  71. package/docs/CLAUDE.md +0 -1
  72. package/docs/agent-runtime-architecture.md +0 -48
  73. package/docs/announcements/bluebubbles-imessage.md +0 -79
  74. package/docs/auth-credential-semantics.md +0 -124
  75. package/docs/automation/auth-monitoring.md +0 -11
  76. package/docs/automation/clawflow.md +0 -12
  77. package/docs/automation/cron-jobs.md +0 -534
  78. package/docs/automation/cron-vs-heartbeat.md +0 -11
  79. package/docs/automation/gmail-pubsub.md +0 -11
  80. package/docs/automation/hooks.md +0 -387
  81. package/docs/automation/index.md +0 -135
  82. package/docs/automation/poll.md +0 -12
  83. package/docs/automation/standing-orders.md +0 -250
  84. package/docs/automation/taskflow.md +0 -155
  85. package/docs/automation/tasks.md +0 -374
  86. package/docs/automation/troubleshooting.md +0 -12
  87. package/docs/automation/webhook.md +0 -12
  88. package/docs/brave-search.md +0 -11
  89. package/docs/channels/access-groups.md +0 -201
  90. package/docs/channels/ambient-room-events.md +0 -214
  91. package/docs/channels/bot-loop-protection.md +0 -131
  92. package/docs/channels/broadcast-groups.md +0 -472
  93. package/docs/channels/channel-routing.md +0 -162
  94. package/docs/channels/clickclack.md +0 -138
  95. package/docs/channels/discord.md +0 -1758
  96. package/docs/channels/feishu.md +0 -650
  97. package/docs/channels/googlechat.md +0 -284
  98. package/docs/channels/group-messages.md +0 -95
  99. package/docs/channels/groups.md +0 -524
  100. package/docs/channels/imessage-from-bluebubbles.md +0 -259
  101. package/docs/channels/imessage.md +0 -839
  102. package/docs/channels/index.md +0 -64
  103. package/docs/channels/irc.md +0 -253
  104. package/docs/channels/line.md +0 -243
  105. package/docs/channels/location.md +0 -71
  106. package/docs/channels/matrix-migration.md +0 -370
  107. package/docs/channels/matrix-presentation.md +0 -77
  108. package/docs/channels/matrix-push-rules.md +0 -150
  109. package/docs/channels/matrix.md +0 -921
  110. package/docs/channels/mattermost.md +0 -542
  111. package/docs/channels/msteams.md +0 -1096
  112. package/docs/channels/nextcloud-talk.md +0 -176
  113. package/docs/channels/nostr.md +0 -253
  114. package/docs/channels/pairing.md +0 -214
  115. package/docs/channels/qqbot.md +0 -314
  116. package/docs/channels/signal.md +0 -417
  117. package/docs/channels/slack.md +0 -1623
  118. package/docs/channels/synology-chat.md +0 -187
  119. package/docs/channels/telegram.md +0 -1124
  120. package/docs/channels/tlon.md +0 -296
  121. package/docs/channels/troubleshooting.md +0 -162
  122. package/docs/channels/twitch.md +0 -431
  123. package/docs/channels/wechat.md +0 -171
  124. package/docs/channels/whatsapp.md +0 -796
  125. package/docs/channels/yuanbao.md +0 -416
  126. package/docs/channels/zalo.md +0 -253
  127. package/docs/channels/zalouser.md +0 -217
  128. package/docs/ci.md +0 -657
  129. package/docs/clawhub/publishing.md +0 -96
  130. package/docs/cli/acp.md +0 -370
  131. package/docs/cli/agent.md +0 -109
  132. package/docs/cli/agents.md +0 -253
  133. package/docs/cli/approvals.md +0 -190
  134. package/docs/cli/backup.md +0 -98
  135. package/docs/cli/browser.md +0 -307
  136. package/docs/cli/channels.md +0 -154
  137. package/docs/cli/clawbot.md +0 -25
  138. package/docs/cli/commitments.md +0 -90
  139. package/docs/cli/completion.md +0 -39
  140. package/docs/cli/config.md +0 -504
  141. package/docs/cli/configure.md +0 -77
  142. package/docs/cli/crestodian.md +0 -337
  143. package/docs/cli/cron.md +0 -304
  144. package/docs/cli/daemon.md +0 -67
  145. package/docs/cli/dashboard.md +0 -33
  146. package/docs/cli/devices.md +0 -240
  147. package/docs/cli/directory.md +0 -68
  148. package/docs/cli/dns.md +0 -53
  149. package/docs/cli/docs.md +0 -63
  150. package/docs/cli/doctor.md +0 -241
  151. package/docs/cli/flows.md +0 -52
  152. package/docs/cli/gateway.md +0 -572
  153. package/docs/cli/health.md +0 -43
  154. package/docs/cli/hooks.md +0 -345
  155. package/docs/cli/index.md +0 -400
  156. package/docs/cli/infer.md +0 -364
  157. package/docs/cli/logs.md +0 -68
  158. package/docs/cli/mcp.md +0 -529
  159. package/docs/cli/memory.md +0 -183
  160. package/docs/cli/message.md +0 -317
  161. package/docs/cli/migrate.md +0 -334
  162. package/docs/cli/models.md +0 -239
  163. package/docs/cli/node.md +0 -177
  164. package/docs/cli/nodes.md +0 -76
  165. package/docs/cli/onboard.md +0 -250
  166. package/docs/cli/pairing.md +0 -77
  167. package/docs/cli/path.md +0 -511
  168. package/docs/cli/plugins.md +0 -459
  169. package/docs/cli/policy.md +0 -886
  170. package/docs/cli/proxy.md +0 -89
  171. package/docs/cli/qr.md +0 -56
  172. package/docs/cli/reset.md +0 -39
  173. package/docs/cli/sandbox.md +0 -208
  174. package/docs/cli/secrets.md +0 -202
  175. package/docs/cli/security.md +0 -136
  176. package/docs/cli/sessions.md +0 -164
  177. package/docs/cli/setup.md +0 -59
  178. package/docs/cli/skills.md +0 -122
  179. package/docs/cli/status.md +0 -45
  180. package/docs/cli/system.md +0 -89
  181. package/docs/cli/tasks.md +0 -111
  182. package/docs/cli/transcripts.md +0 -151
  183. package/docs/cli/tui.md +0 -91
  184. package/docs/cli/uninstall.md +0 -44
  185. package/docs/cli/update.md +0 -243
  186. package/docs/cli/voicecall.md +0 -204
  187. package/docs/cli/webhooks.md +0 -117
  188. package/docs/cli/wiki.md +0 -256
  189. package/docs/concepts/active-memory.md +0 -856
  190. package/docs/concepts/agent-loop.md +0 -185
  191. package/docs/concepts/agent-runtimes.md +0 -276
  192. package/docs/concepts/agent-workspace.md +0 -230
  193. package/docs/concepts/agent.md +0 -140
  194. package/docs/concepts/architecture.md +0 -154
  195. package/docs/concepts/channel-docking.md +0 -145
  196. package/docs/concepts/commitments.md +0 -150
  197. package/docs/concepts/compaction.md +0 -203
  198. package/docs/concepts/context-engine.md +0 -347
  199. package/docs/concepts/context.md +0 -199
  200. package/docs/concepts/delegate-architecture.md +0 -319
  201. package/docs/concepts/dreaming.md +0 -264
  202. package/docs/concepts/experimental-features.md +0 -109
  203. package/docs/concepts/features.md +0 -91
  204. package/docs/concepts/fengming-sdk.md +0 -323
  205. package/docs/concepts/mantis-slack-desktop-runbook.md +0 -231
  206. package/docs/concepts/mantis.md +0 -744
  207. package/docs/concepts/markdown-formatting.md +0 -139
  208. package/docs/concepts/memory-builtin.md +0 -148
  209. package/docs/concepts/memory-honcho.md +0 -144
  210. package/docs/concepts/memory-qmd.md +0 -271
  211. package/docs/concepts/memory-search.md +0 -167
  212. package/docs/concepts/memory.md +0 -299
  213. package/docs/concepts/message-lifecycle-refactor.md +0 -1126
  214. package/docs/concepts/messages.md +0 -214
  215. package/docs/concepts/model-failover.md +0 -384
  216. package/docs/concepts/model-providers.md +0 -719
  217. package/docs/concepts/models.md +0 -371
  218. package/docs/concepts/multi-agent.md +0 -625
  219. package/docs/concepts/oauth.md +0 -198
  220. package/docs/concepts/parallel-specialist-lanes.md +0 -127
  221. package/docs/concepts/personal-agent-benchmark-pack.md +0 -74
  222. package/docs/concepts/presence.md +0 -117
  223. package/docs/concepts/progress-drafts.md +0 -406
  224. package/docs/concepts/qa-e2e-automation.md +0 -947
  225. package/docs/concepts/qa-matrix.md +0 -139
  226. package/docs/concepts/queue-steering.md +0 -90
  227. package/docs/concepts/queue.md +0 -136
  228. package/docs/concepts/retry.md +0 -86
  229. package/docs/concepts/session-pruning.md +0 -104
  230. package/docs/concepts/session-tool.md +0 -188
  231. package/docs/concepts/session.md +0 -164
  232. package/docs/concepts/soul.md +0 -116
  233. package/docs/concepts/streaming.md +0 -257
  234. package/docs/concepts/system-prompt.md +0 -328
  235. package/docs/concepts/timezone.md +0 -47
  236. package/docs/concepts/typebox.md +0 -309
  237. package/docs/concepts/typing-indicators.md +0 -88
  238. package/docs/concepts/usage-tracking.md +0 -66
  239. package/docs/date-time.md +0 -126
  240. package/docs/debug/node-issue.md +0 -90
  241. package/docs/diagnostics/flags.md +0 -182
  242. package/docs/docs.json +0 -1862
  243. package/docs/fengming-agent-runtime.md +0 -82
  244. package/docs/gateway/authentication.md +0 -256
  245. package/docs/gateway/background-process.md +0 -147
  246. package/docs/gateway/bonjour.md +0 -303
  247. package/docs/gateway/bridge-protocol.md +0 -97
  248. package/docs/gateway/cli-backends.md +0 -439
  249. package/docs/gateway/config-agents.md +0 -1525
  250. package/docs/gateway/config-channels.md +0 -945
  251. package/docs/gateway/config-tools.md +0 -774
  252. package/docs/gateway/configuration-examples.md +0 -704
  253. package/docs/gateway/configuration-reference.md +0 -1391
  254. package/docs/gateway/configuration.md +0 -739
  255. package/docs/gateway/diagnostics.md +0 -213
  256. package/docs/gateway/discovery.md +0 -154
  257. package/docs/gateway/doctor.md +0 -575
  258. package/docs/gateway/gateway-lock.md +0 -37
  259. package/docs/gateway/health.md +0 -73
  260. package/docs/gateway/heartbeat.md +0 -498
  261. package/docs/gateway/index.md +0 -383
  262. package/docs/gateway/local-model-services.md +0 -205
  263. package/docs/gateway/local-models.md +0 -355
  264. package/docs/gateway/logging.md +0 -149
  265. package/docs/gateway/multiple-gateways.md +0 -178
  266. package/docs/gateway/network-model.md +0 -15
  267. package/docs/gateway/openai-http-api.md +0 -378
  268. package/docs/gateway/openresponses-http-api.md +0 -347
  269. package/docs/gateway/openshell.md +0 -316
  270. package/docs/gateway/opentelemetry.md +0 -433
  271. package/docs/gateway/operator-scopes.md +0 -119
  272. package/docs/gateway/pairing.md +0 -207
  273. package/docs/gateway/prometheus.md +0 -249
  274. package/docs/gateway/protocol.md +0 -826
  275. package/docs/gateway/remote-gateway-readme.md +0 -169
  276. package/docs/gateway/remote.md +0 -280
  277. package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +0 -148
  278. package/docs/gateway/sandboxing.md +0 -546
  279. package/docs/gateway/secrets-plan-contract.md +0 -159
  280. package/docs/gateway/secrets.md +0 -805
  281. package/docs/gateway/security/audit-checks.md +0 -127
  282. package/docs/gateway/security/exposure-runbook.md +0 -212
  283. package/docs/gateway/security/index.md +0 -1343
  284. package/docs/gateway/security/secure-file-operations.md +0 -76
  285. package/docs/gateway/security/shrinkwrap.md +0 -111
  286. package/docs/gateway/tailscale.md +0 -156
  287. package/docs/gateway/tools-invoke-http-api.md +0 -169
  288. package/docs/gateway/troubleshooting.md +0 -877
  289. package/docs/gateway/trusted-proxy-auth.md +0 -483
  290. package/docs/help/debugging.md +0 -341
  291. package/docs/help/environment.md +0 -233
  292. package/docs/help/faq-first-run.md +0 -870
  293. package/docs/help/faq-models.md +0 -556
  294. package/docs/help/faq.md +0 -2041
  295. package/docs/help/index.md +0 -39
  296. package/docs/help/scripts.md +0 -56
  297. package/docs/help/testing-live.md +0 -587
  298. package/docs/help/testing-updates-plugins.md +0 -299
  299. package/docs/help/testing.md +0 -977
  300. package/docs/help/troubleshooting.md +0 -449
  301. package/docs/index.md +0 -196
  302. package/docs/install/ansible.md +0 -233
  303. package/docs/install/azure.md +0 -315
  304. package/docs/install/bun.md +0 -59
  305. package/docs/install/clawdock.md +0 -112
  306. package/docs/install/development-channels.md +0 -148
  307. package/docs/install/digitalocean.md +0 -174
  308. package/docs/install/docker-vm-runtime.md +0 -154
  309. package/docs/install/docker.md +0 -564
  310. package/docs/install/exe-dev.md +0 -201
  311. package/docs/install/fly.md +0 -524
  312. package/docs/install/gcp.md +0 -418
  313. package/docs/install/hetzner.md +0 -285
  314. package/docs/install/hostinger.md +0 -98
  315. package/docs/install/index.md +0 -232
  316. package/docs/install/installer.md +0 -447
  317. package/docs/install/kubernetes.md +0 -196
  318. package/docs/install/macos-vm.md +0 -281
  319. package/docs/install/migrating-claude.md +0 -165
  320. package/docs/install/migrating-hermes.md +0 -178
  321. package/docs/install/migrating.md +0 -137
  322. package/docs/install/nix.md +0 -112
  323. package/docs/install/node.md +0 -142
  324. package/docs/install/northflank.mdx +0 -44
  325. package/docs/install/oracle.md +0 -218
  326. package/docs/install/podman.md +0 -216
  327. package/docs/install/railway.mdx +0 -92
  328. package/docs/install/raspberry-pi.md +0 -234
  329. package/docs/install/render.mdx +0 -167
  330. package/docs/install/uninstall.md +0 -131
  331. package/docs/install/updating.md +0 -284
  332. package/docs/install/upstash.md +0 -96
  333. package/docs/logging.md +0 -320
  334. package/docs/nav-tabs-underline.js +0 -100
  335. package/docs/network.md +0 -72
  336. package/docs/nodes/audio.md +0 -216
  337. package/docs/nodes/camera.md +0 -166
  338. package/docs/nodes/images.md +0 -77
  339. package/docs/nodes/index.md +0 -439
  340. package/docs/nodes/location-command.md +0 -102
  341. package/docs/nodes/media-understanding.md +0 -495
  342. package/docs/nodes/talk.md +0 -160
  343. package/docs/nodes/troubleshooting.md +0 -123
  344. package/docs/nodes/voicewake.md +0 -93
  345. package/docs/perplexity.md +0 -11
  346. package/docs/plan/codex-context-engine-harness.md +0 -624
  347. package/docs/plan/ui-channels.md +0 -284
  348. package/docs/platforms/digitalocean.md +0 -12
  349. package/docs/platforms/easyrunner.md +0 -109
  350. package/docs/platforms/index.md +0 -51
  351. package/docs/platforms/linux.md +0 -141
  352. package/docs/platforms/mac/bundled-gateway.md +0 -79
  353. package/docs/platforms/mac/canvas.md +0 -128
  354. package/docs/platforms/mac/child-process.md +0 -72
  355. package/docs/platforms/mac/dev-setup.md +0 -112
  356. package/docs/platforms/mac/health.md +0 -39
  357. package/docs/platforms/mac/icon.md +0 -36
  358. package/docs/platforms/mac/logging.md +0 -62
  359. package/docs/platforms/mac/menu-bar.md +0 -93
  360. package/docs/platforms/mac/peekaboo.md +0 -96
  361. package/docs/platforms/mac/permissions.md +0 -73
  362. package/docs/platforms/mac/remote.md +0 -123
  363. package/docs/platforms/mac/signing.md +0 -52
  364. package/docs/platforms/mac/skills.md +0 -43
  365. package/docs/platforms/mac/voice-overlay.md +0 -66
  366. package/docs/platforms/mac/voicewake.md +0 -73
  367. package/docs/platforms/mac/webchat.md +0 -54
  368. package/docs/platforms/mac/xpc.md +0 -66
  369. package/docs/platforms/oracle.md +0 -12
  370. package/docs/platforms/raspberry-pi.md +0 -13
  371. package/docs/platforms/windows.md +0 -286
  372. package/docs/plugins/adding-capabilities.md +0 -146
  373. package/docs/plugins/admin-http-rpc.md +0 -216
  374. package/docs/plugins/agent-tools.md +0 -13
  375. package/docs/plugins/architecture-internals.md +0 -1196
  376. package/docs/plugins/architecture.md +0 -483
  377. package/docs/plugins/building-extensions.md +0 -13
  378. package/docs/plugins/building-plugins.md +0 -335
  379. package/docs/plugins/bundles.md +0 -310
  380. package/docs/plugins/cli-backend-plugins.md +0 -310
  381. package/docs/plugins/codex-computer-use.md +0 -297
  382. package/docs/plugins/codex-harness-reference.md +0 -470
  383. package/docs/plugins/codex-harness-runtime.md +0 -268
  384. package/docs/plugins/codex-harness.md +0 -780
  385. package/docs/plugins/codex-native-plugins.md +0 -276
  386. package/docs/plugins/community.md +0 -77
  387. package/docs/plugins/compatibility.md +0 -167
  388. package/docs/plugins/copilot.md +0 -356
  389. package/docs/plugins/dependency-resolution.md +0 -176
  390. package/docs/plugins/google-meet.md +0 -1737
  391. package/docs/plugins/hooks.md +0 -484
  392. package/docs/plugins/install-overrides.md +0 -80
  393. package/docs/plugins/manage-plugins.md +0 -210
  394. package/docs/plugins/manifest.md +0 -1457
  395. package/docs/plugins/memory-lancedb.md +0 -385
  396. package/docs/plugins/memory-wiki.md +0 -529
  397. package/docs/plugins/message-presentation.md +0 -473
  398. package/docs/plugins/oc-path.md +0 -166
  399. package/docs/plugins/plugin-inventory.md +0 -189
  400. package/docs/plugins/plugin-permission-requests.md +0 -193
  401. package/docs/plugins/reference/acpx.md +0 -23
  402. package/docs/plugins/reference/admin-http-rpc.md +0 -23
  403. package/docs/plugins/reference/alibaba.md +0 -23
  404. package/docs/plugins/reference/amazon-bedrock-mantle.md +0 -23
  405. package/docs/plugins/reference/amazon-bedrock.md +0 -23
  406. package/docs/plugins/reference/anthropic-vertex.md +0 -19
  407. package/docs/plugins/reference/anthropic.md +0 -23
  408. package/docs/plugins/reference/arcee.md +0 -23
  409. package/docs/plugins/reference/azure-speech.md +0 -23
  410. package/docs/plugins/reference/bonjour.md +0 -19
  411. package/docs/plugins/reference/brave.md +0 -23
  412. package/docs/plugins/reference/browser.md +0 -23
  413. package/docs/plugins/reference/byteplus.md +0 -19
  414. package/docs/plugins/reference/canvas.md +0 -19
  415. package/docs/plugins/reference/cerebras.md +0 -23
  416. package/docs/plugins/reference/chutes.md +0 -23
  417. package/docs/plugins/reference/clickclack.md +0 -23
  418. package/docs/plugins/reference/cloudflare-ai-gateway.md +0 -23
  419. package/docs/plugins/reference/codex-supervisor.md +0 -27
  420. package/docs/plugins/reference/codex.md +0 -23
  421. package/docs/plugins/reference/comfy.md +0 -23
  422. package/docs/plugins/reference/copilot-proxy.md +0 -19
  423. package/docs/plugins/reference/copilot.md +0 -23
  424. package/docs/plugins/reference/deepgram.md +0 -23
  425. package/docs/plugins/reference/deepinfra.md +0 -23
  426. package/docs/plugins/reference/deepseek.md +0 -23
  427. package/docs/plugins/reference/diagnostics-otel.md +0 -19
  428. package/docs/plugins/reference/diagnostics-prometheus.md +0 -19
  429. package/docs/plugins/reference/diffs-language-pack.md +0 -19
  430. package/docs/plugins/reference/diffs.md +0 -19
  431. package/docs/plugins/reference/discord.md +0 -23
  432. package/docs/plugins/reference/document-extract.md +0 -23
  433. package/docs/plugins/reference/duckduckgo.md +0 -23
  434. package/docs/plugins/reference/elevenlabs.md +0 -23
  435. package/docs/plugins/reference/exa.md +0 -23
  436. package/docs/plugins/reference/fal.md +0 -23
  437. package/docs/plugins/reference/feishu.md +0 -23
  438. package/docs/plugins/reference/file-transfer.md +0 -19
  439. package/docs/plugins/reference/firecrawl.md +0 -23
  440. package/docs/plugins/reference/fireworks.md +0 -23
  441. package/docs/plugins/reference/github-copilot.md +0 -23
  442. package/docs/plugins/reference/gmi.md +0 -23
  443. package/docs/plugins/reference/google-meet.md +0 -23
  444. package/docs/plugins/reference/google.md +0 -23
  445. package/docs/plugins/reference/googlechat.md +0 -23
  446. package/docs/plugins/reference/gradium.md +0 -23
  447. package/docs/plugins/reference/groq.md +0 -23
  448. package/docs/plugins/reference/huggingface.md +0 -23
  449. package/docs/plugins/reference/imessage.md +0 -23
  450. package/docs/plugins/reference/inworld.md +0 -23
  451. package/docs/plugins/reference/irc.md +0 -23
  452. package/docs/plugins/reference/kilocode.md +0 -23
  453. package/docs/plugins/reference/kimi.md +0 -23
  454. package/docs/plugins/reference/line.md +0 -23
  455. package/docs/plugins/reference/litellm.md +0 -23
  456. package/docs/plugins/reference/llm-task.md +0 -19
  457. package/docs/plugins/reference/lmstudio.md +0 -23
  458. package/docs/plugins/reference/lobster.md +0 -19
  459. package/docs/plugins/reference/matrix.md +0 -23
  460. package/docs/plugins/reference/mattermost.md +0 -23
  461. package/docs/plugins/reference/memory-core.md +0 -19
  462. package/docs/plugins/reference/memory-lancedb.md +0 -23
  463. package/docs/plugins/reference/memory-wiki.md +0 -23
  464. package/docs/plugins/reference/microsoft-foundry.md +0 -19
  465. package/docs/plugins/reference/microsoft.md +0 -19
  466. package/docs/plugins/reference/migrate-claude.md +0 -19
  467. package/docs/plugins/reference/migrate-hermes.md +0 -19
  468. package/docs/plugins/reference/minimax.md +0 -23
  469. package/docs/plugins/reference/mistral.md +0 -23
  470. package/docs/plugins/reference/moonshot.md +0 -23
  471. package/docs/plugins/reference/msteams.md +0 -23
  472. package/docs/plugins/reference/nextcloud-talk.md +0 -23
  473. package/docs/plugins/reference/nostr.md +0 -23
  474. package/docs/plugins/reference/novita.md +0 -23
  475. package/docs/plugins/reference/nvidia.md +0 -23
  476. package/docs/plugins/reference/oc-path.md +0 -23
  477. package/docs/plugins/reference/ollama.md +0 -23
  478. package/docs/plugins/reference/open-prose.md +0 -19
  479. package/docs/plugins/reference/openai.md +0 -23
  480. package/docs/plugins/reference/opencode-go.md +0 -23
  481. package/docs/plugins/reference/opencode.md +0 -23
  482. package/docs/plugins/reference/openrouter.md +0 -23
  483. package/docs/plugins/reference/openshell.md +0 -19
  484. package/docs/plugins/reference/perplexity.md +0 -23
  485. package/docs/plugins/reference/pixverse.md +0 -23
  486. package/docs/plugins/reference/policy.md +0 -72
  487. package/docs/plugins/reference/qa-channel.md +0 -23
  488. package/docs/plugins/reference/qa-lab.md +0 -19
  489. package/docs/plugins/reference/qa-matrix.md +0 -19
  490. package/docs/plugins/reference/qianfan.md +0 -23
  491. package/docs/plugins/reference/qqbot.md +0 -23
  492. package/docs/plugins/reference/qwen.md +0 -23
  493. package/docs/plugins/reference/runway.md +0 -23
  494. package/docs/plugins/reference/searxng.md +0 -19
  495. package/docs/plugins/reference/senseaudio.md +0 -23
  496. package/docs/plugins/reference/sglang.md +0 -23
  497. package/docs/plugins/reference/signal.md +0 -23
  498. package/docs/plugins/reference/skill-workshop.md +0 -23
  499. package/docs/plugins/reference/slack.md +0 -23
  500. package/docs/plugins/reference/stepfun.md +0 -23
  501. package/docs/plugins/reference/synology-chat.md +0 -23
  502. package/docs/plugins/reference/synthetic.md +0 -23
  503. package/docs/plugins/reference/tavily.md +0 -23
  504. package/docs/plugins/reference/telegram.md +0 -23
  505. package/docs/plugins/reference/tencent.md +0 -23
  506. package/docs/plugins/reference/tlon.md +0 -23
  507. package/docs/plugins/reference/together.md +0 -23
  508. package/docs/plugins/reference/tokenjuice.md +0 -23
  509. package/docs/plugins/reference/tts-local-cli.md +0 -19
  510. package/docs/plugins/reference/twitch.md +0 -23
  511. package/docs/plugins/reference/venice.md +0 -23
  512. package/docs/plugins/reference/vercel-ai-gateway.md +0 -23
  513. package/docs/plugins/reference/vllm.md +0 -23
  514. package/docs/plugins/reference/voice-call.md +0 -23
  515. package/docs/plugins/reference/volcengine.md +0 -23
  516. package/docs/plugins/reference/voyage.md +0 -19
  517. package/docs/plugins/reference/vydra.md +0 -23
  518. package/docs/plugins/reference/web-readability.md +0 -19
  519. package/docs/plugins/reference/webhooks.md +0 -23
  520. package/docs/plugins/reference/whatsapp.md +0 -23
  521. package/docs/plugins/reference/workboard.md +0 -23
  522. package/docs/plugins/reference/xai.md +0 -23
  523. package/docs/plugins/reference/xiaomi.md +0 -23
  524. package/docs/plugins/reference/zai.md +0 -23
  525. package/docs/plugins/reference/zalo.md +0 -23
  526. package/docs/plugins/reference/zalouser.md +0 -24
  527. package/docs/plugins/reference.md +0 -145
  528. package/docs/plugins/sdk-agent-harness.md +0 -338
  529. package/docs/plugins/sdk-channel-inbound.md +0 -70
  530. package/docs/plugins/sdk-channel-ingress.md +0 -137
  531. package/docs/plugins/sdk-channel-message.md +0 -18
  532. package/docs/plugins/sdk-channel-outbound.md +0 -113
  533. package/docs/plugins/sdk-channel-plugins.md +0 -765
  534. package/docs/plugins/sdk-channel-turn.md +0 -9
  535. package/docs/plugins/sdk-entrypoints.md +0 -344
  536. package/docs/plugins/sdk-migration.md +0 -979
  537. package/docs/plugins/sdk-overview.md +0 -511
  538. package/docs/plugins/sdk-provider-plugins.md +0 -846
  539. package/docs/plugins/sdk-runtime.md +0 -676
  540. package/docs/plugins/sdk-setup.md +0 -550
  541. package/docs/plugins/sdk-subpaths.md +0 -391
  542. package/docs/plugins/sdk-testing.md +0 -403
  543. package/docs/plugins/skill-workshop.md +0 -713
  544. package/docs/plugins/tool-plugins.md +0 -411
  545. package/docs/plugins/voice-call.md +0 -942
  546. package/docs/plugins/webhooks.md +0 -192
  547. package/docs/plugins/workboard.md +0 -252
  548. package/docs/plugins/zalouser.md +0 -86
  549. package/docs/prose.md +0 -137
  550. package/docs/providers/alibaba.md +0 -158
  551. package/docs/providers/anthropic.md +0 -381
  552. package/docs/providers/arcee.md +0 -144
  553. package/docs/providers/azure-speech.md +0 -119
  554. package/docs/providers/bedrock-mantle.md +0 -211
  555. package/docs/providers/bedrock.md +0 -414
  556. package/docs/providers/cerebras.md +0 -130
  557. package/docs/providers/chutes.md +0 -153
  558. package/docs/providers/claude-max-api-proxy.md +0 -191
  559. package/docs/providers/cloudflare-ai-gateway.md +0 -119
  560. package/docs/providers/comfy.md +0 -362
  561. package/docs/providers/deepgram.md +0 -184
  562. package/docs/providers/deepinfra.md +0 -92
  563. package/docs/providers/deepseek.md +0 -146
  564. package/docs/providers/ds4.md +0 -309
  565. package/docs/providers/elevenlabs.md +0 -130
  566. package/docs/providers/fal.md +0 -240
  567. package/docs/providers/fireworks.md +0 -144
  568. package/docs/providers/github-copilot.md +0 -257
  569. package/docs/providers/gmi.md +0 -92
  570. package/docs/providers/google.md +0 -472
  571. package/docs/providers/gradium.md +0 -123
  572. package/docs/providers/groq.md +0 -171
  573. package/docs/providers/huggingface.md +0 -235
  574. package/docs/providers/index.md +0 -105
  575. package/docs/providers/inferrs.md +0 -272
  576. package/docs/providers/inworld.md +0 -120
  577. package/docs/providers/kilocode.md +0 -135
  578. package/docs/providers/litellm.md +0 -234
  579. package/docs/providers/lmstudio.md +0 -224
  580. package/docs/providers/minimax.md +0 -505
  581. package/docs/providers/mistral.md +0 -235
  582. package/docs/providers/models.md +0 -64
  583. package/docs/providers/moonshot.md +0 -413
  584. package/docs/providers/novita.md +0 -92
  585. package/docs/providers/nvidia.md +0 -158
  586. package/docs/providers/ollama-cloud.md +0 -115
  587. package/docs/providers/ollama.md +0 -1225
  588. package/docs/providers/openai.md +0 -1093
  589. package/docs/providers/opencode-go.md +0 -123
  590. package/docs/providers/opencode.md +0 -149
  591. package/docs/providers/openrouter.md +0 -349
  592. package/docs/providers/perplexity-provider.md +0 -123
  593. package/docs/providers/pixverse.md +0 -165
  594. package/docs/providers/qianfan.md +0 -132
  595. package/docs/providers/qwen-oauth.md +0 -115
  596. package/docs/providers/qwen.md +0 -364
  597. package/docs/providers/runway.md +0 -103
  598. package/docs/providers/senseaudio.md +0 -68
  599. package/docs/providers/sglang.md +0 -161
  600. package/docs/providers/stepfun.md +0 -229
  601. package/docs/providers/synthetic.md +0 -154
  602. package/docs/providers/tencent.md +0 -130
  603. package/docs/providers/together.md +0 -140
  604. package/docs/providers/venice.md +0 -312
  605. package/docs/providers/vercel-ai-gateway.md +0 -128
  606. package/docs/providers/vllm.md +0 -407
  607. package/docs/providers/volcengine.md +0 -199
  608. package/docs/providers/vydra.md +0 -180
  609. package/docs/providers/xai.md +0 -571
  610. package/docs/providers/xiaomi.md +0 -262
  611. package/docs/providers/zai.md +0 -224
  612. package/docs/refactor/access.md +0 -9
  613. package/docs/refactor/acp.md +0 -298
  614. package/docs/refactor/canvas.md +0 -131
  615. package/docs/refactor/database-first.md +0 -2256
  616. package/docs/refactor/ingress-core.md +0 -341
  617. package/docs/reference/AGENTS.default.md +0 -131
  618. package/docs/reference/RELEASING.md +0 -799
  619. package/docs/reference/api-usage-costs.md +0 -208
  620. package/docs/reference/application-modernization-plan.md +0 -208
  621. package/docs/reference/code-mode.md +0 -773
  622. package/docs/reference/credits.md +0 -33
  623. package/docs/reference/device-models.md +0 -50
  624. package/docs/reference/fengming-sdk-api-design.md +0 -390
  625. package/docs/reference/full-release-validation.md +0 -202
  626. package/docs/reference/memory-config.md +0 -604
  627. package/docs/reference/prompt-caching.md +0 -358
  628. package/docs/reference/release-performance-sweep.md +0 -360
  629. package/docs/reference/rich-output-protocol.md +0 -101
  630. package/docs/reference/rpc.md +0 -43
  631. package/docs/reference/secret-placeholder-conventions.md +0 -33
  632. package/docs/reference/secretref-credential-surface.md +0 -159
  633. package/docs/reference/secretref-user-supplied-credentials-matrix.json +0 -663
  634. package/docs/reference/session-management-compaction.md +0 -474
  635. package/docs/reference/templates/AGENTS.dev.md +0 -90
  636. package/docs/reference/templates/AGENTS.md +0 -227
  637. package/docs/reference/templates/BOOT.md +0 -16
  638. package/docs/reference/templates/BOOTSTRAP.md +0 -66
  639. package/docs/reference/templates/CLAUDE.md +0 -1
  640. package/docs/reference/templates/HEARTBEAT.md +0 -24
  641. package/docs/reference/templates/IDENTITY.dev.md +0 -52
  642. package/docs/reference/templates/IDENTITY.md +0 -34
  643. package/docs/reference/templates/SOUL.dev.md +0 -82
  644. package/docs/reference/templates/SOUL.md +0 -49
  645. package/docs/reference/templates/TOOLS.dev.md +0 -29
  646. package/docs/reference/templates/TOOLS.md +0 -51
  647. package/docs/reference/templates/USER.dev.md +0 -23
  648. package/docs/reference/templates/USER.md +0 -28
  649. package/docs/reference/test.md +0 -247
  650. package/docs/reference/token-use.md +0 -246
  651. package/docs/reference/transcript-hygiene.md +0 -214
  652. package/docs/reference/wizard.md +0 -252
  653. package/docs/security/CONTRIBUTING-THREAT-MODEL.md +0 -101
  654. package/docs/security/THREAT-MODEL-ATLAS.md +0 -611
  655. package/docs/security/formal-verification.md +0 -170
  656. package/docs/security/incident-response.md +0 -59
  657. package/docs/security/network-proxy.md +0 -268
  658. package/docs/snippets/plugin-publish/minimal-fengming.plugin.json +0 -12
  659. package/docs/snippets/plugin-publish/minimal-package.json +0 -16
  660. package/docs/specs/claw-supervisor.md +0 -247
  661. package/docs/start/bootstrapping.md +0 -49
  662. package/docs/start/docs-directory.md +0 -69
  663. package/docs/start/fengming.md +0 -252
  664. package/docs/start/getting-started.md +0 -152
  665. package/docs/start/hubs.md +0 -201
  666. package/docs/start/lore.md +0 -223
  667. package/docs/start/onboarding-overview.md +0 -72
  668. package/docs/start/onboarding.md +0 -98
  669. package/docs/start/quickstart.md +0 -25
  670. package/docs/start/setup.md +0 -178
  671. package/docs/start/showcase.md +0 -363
  672. package/docs/start/wizard-cli-automation.md +0 -232
  673. package/docs/start/wizard-cli-reference.md +0 -331
  674. package/docs/start/wizard.md +0 -141
  675. package/docs/style.css +0 -137
  676. package/docs/superpowers/specs/2026-04-22-tweakcn-custom-theme-import-design.md +0 -316
  677. package/docs/tools/acp-agents-setup.md +0 -351
  678. package/docs/tools/acp-agents.md +0 -854
  679. package/docs/tools/agent-send.md +0 -130
  680. package/docs/tools/apply-patch.md +0 -64
  681. package/docs/tools/brave-search.md +0 -139
  682. package/docs/tools/browser-control.md +0 -391
  683. package/docs/tools/browser-linux-troubleshooting.md +0 -173
  684. package/docs/tools/browser-login.md +0 -77
  685. package/docs/tools/browser-wsl2-windows-remote-cdp-troubleshooting.md +0 -219
  686. package/docs/tools/browser.md +0 -810
  687. package/docs/tools/btw.md +0 -159
  688. package/docs/tools/capability-cookbook.md +0 -12
  689. package/docs/tools/clawhub.md +0 -5
  690. package/docs/tools/code-execution.md +0 -173
  691. package/docs/tools/creating-skills.md +0 -158
  692. package/docs/tools/diffs.md +0 -525
  693. package/docs/tools/duckduckgo-search.md +0 -109
  694. package/docs/tools/elevated.md +0 -128
  695. package/docs/tools/exa-search.md +0 -152
  696. package/docs/tools/exec-approvals-advanced.md +0 -444
  697. package/docs/tools/exec-approvals.md +0 -494
  698. package/docs/tools/exec.md +0 -285
  699. package/docs/tools/firecrawl.md +0 -155
  700. package/docs/tools/gemini-search.md +0 -114
  701. package/docs/tools/goal.md +0 -217
  702. package/docs/tools/grok-search.md +0 -129
  703. package/docs/tools/image-generation.md +0 -493
  704. package/docs/tools/index.md +0 -178
  705. package/docs/tools/kimi-search.md +0 -105
  706. package/docs/tools/llm-task.md +0 -137
  707. package/docs/tools/lobster.md +0 -365
  708. package/docs/tools/loop-detection.md +0 -154
  709. package/docs/tools/media-overview.md +0 -160
  710. package/docs/tools/minimax-search.md +0 -102
  711. package/docs/tools/multi-agent-sandbox-tools.md +0 -409
  712. package/docs/tools/music-generation.md +0 -372
  713. package/docs/tools/ollama-search.md +0 -153
  714. package/docs/tools/pdf.md +0 -213
  715. package/docs/tools/perplexity-search.md +0 -220
  716. package/docs/tools/plugin.md +0 -363
  717. package/docs/tools/reactions.md +0 -100
  718. package/docs/tools/searxng-search.md +0 -141
  719. package/docs/tools/skills-config.md +0 -195
  720. package/docs/tools/skills.md +0 -569
  721. package/docs/tools/slash-commands.md +0 -487
  722. package/docs/tools/steer.md +0 -77
  723. package/docs/tools/subagents.md +0 -651
  724. package/docs/tools/tavily.md +0 -162
  725. package/docs/tools/thinking.md +0 -142
  726. package/docs/tools/tokenjuice.md +0 -84
  727. package/docs/tools/tool-search.md +0 -269
  728. package/docs/tools/trajectory.md +0 -229
  729. package/docs/tools/tts.md +0 -1009
  730. package/docs/tools/video-generation.md +0 -555
  731. package/docs/tools/web-fetch.md +0 -210
  732. package/docs/tools/web.md +0 -461
  733. package/docs/tts.md +0 -11
  734. package/docs/vps.md +0 -139
  735. package/docs/web/control-ui.md +0 -512
  736. package/docs/web/dashboard.md +0 -107
  737. package/docs/web/index.md +0 -133
  738. package/docs/web/tui.md +0 -250
  739. package/docs/web/webchat.md +0 -102
  740. package/npm-shrinkwrap.json +0 -12861
  741. package/patches/.gitkeep +0 -0
  742. package/patches/@agentclientprotocol__claude-agent-acp@0.37.0.patch +0 -41
  743. package/pnpm-workspace.yaml +0 -120
  744. package/scripts/crabbox-wrapper.mjs +0 -2004
  745. package/scripts/lib/official-external-channel-catalog.json +0 -560
  746. package/scripts/lib/official-external-plugin-catalog.json +0 -264
  747. package/scripts/lib/official-external-provider-catalog.json +0 -158
  748. package/scripts/lib/package-dist-imports.mjs +0 -171
  749. package/scripts/npm-runner.mjs +0 -91
  750. package/scripts/postinstall-bundled-plugins.mjs +0 -978
  751. package/scripts/preinstall-package-manager-warning.mjs +0 -64
  752. package/scripts/prepare-git-hooks.mjs +0 -72
  753. package/scripts/windows-cmd-helpers.mjs +0 -22
  754. package/skills/batch/SKILL.md +0 -118
  755. package/skills/code-review/SKILL.md +0 -107
  756. package/skills/debug/SKILL.md +0 -83
  757. package/skills/loop/SKILL.md +0 -118
  758. package/skills/run/SKILL.md +0 -79
  759. package/skills/run-skill-generator/SKILL.md +0 -179
  760. package/skills/verify/SKILL.md +0 -103
  761. package/src/agents/templates/HEARTBEAT.md +0 -3
@@ -1,799 +0,0 @@
1
- ---
2
- summary: "Release lanes, operator checklist, validation boxes, version naming, and cadence"
3
- title: "Release policy"
4
- read_when:
5
- - Looking for public release channel definitions
6
- - Running release validation or package acceptance
7
- - Looking for version naming and cadence
8
- ---
9
-
10
- FengMing has three public release lanes:
11
-
12
- - stable: tagged releases that publish to npm `beta` by default, or to npm `latest` when explicitly requested
13
- - beta: prerelease tags that publish to npm `beta`
14
- - dev: the moving head of `main`
15
-
16
- ## Version naming
17
-
18
- - Stable release version: `YYYY.M.D`
19
- - Git tag: `vYYYY.M.D`
20
- - Stable correction release version: `YYYY.M.D-N`
21
- - Git tag: `vYYYY.M.D-N`
22
- - Beta prerelease version: `YYYY.M.D-beta.N`
23
- - Git tag: `vYYYY.M.D-beta.N`
24
- - Do not zero-pad month or day
25
- - `latest` means the current promoted stable npm release
26
- - `beta` means the current beta install target
27
- - Stable and stable correction releases publish to npm `beta` by default; release operators can target `latest` explicitly, or promote a vetted beta build later
28
- - Every stable FengMing release ships the npm package and macOS app together;
29
- beta releases normally validate and publish the npm/package path first, with
30
- mac app build/sign/notarize reserved for stable unless explicitly requested
31
-
32
- ## Release cadence
33
-
34
- - Releases move beta-first
35
- - Stable follows only after the latest beta is validated
36
- - Maintainers normally cut releases from a `release/YYYY.M.D` branch created
37
- from current `main`, so release validation and fixes do not block new
38
- development on `main`
39
- - If a beta tag has been pushed or published and needs a fix, maintainers cut
40
- the next `-beta.N` tag instead of deleting or recreating the old beta tag
41
- - Detailed release procedure, approvals, credentials, and recovery notes are
42
- maintainer-only
43
-
44
- ## Release operator checklist
45
-
46
- This checklist is the public shape of the release flow. Private credentials,
47
- signing, notarization, dist-tag recovery, and emergency rollback details stay in
48
- the maintainer-only release runbook.
49
-
50
- 1. Start from current `main`: pull latest, confirm the target commit is pushed,
51
- and confirm current `main` CI is green enough to branch from it.
52
- 2. Generate the top `CHANGELOG.md` section from merged PRs and all direct
53
- commits since the last reachable release tag. Keep entries user-facing,
54
- dedupe overlapping PR/direct-commit entries, commit the rewrite, push it,
55
- and rebase/pull once more before branching.
56
- 3. Review release compatibility records in
57
- `src/plugins/compat/registry.ts` and
58
- `src/commands/doctor/shared/deprecation-compat.ts`. Remove expired
59
- compatibility only when the upgrade path stays covered, or record why it is
60
- intentionally carried.
61
- 4. Create `release/YYYY.M.D` from current `main`; do not do normal release work
62
- directly on `main`.
63
- 5. Bump every required version location for the intended tag, then run
64
- `pnpm release:prep`. It refreshes plugin versions, plugin inventory, config
65
- schema, bundled channel config metadata, config docs baseline, plugin SDK
66
- exports, and plugin SDK API baseline in the right order. Commit any generated
67
- drift before tagging. Then run the local deterministic preflight:
68
- `pnpm check:test-types`, `pnpm check:architecture`,
69
- `pnpm build && pnpm ui:build`, and `pnpm release:check`.
70
- 6. Run `FengMing NPM Release` with `preflight_only=true`. Before a tag exists,
71
- a full 40-character release-branch SHA is allowed for validation-only
72
- preflight. The preflight generates dependency release evidence for the
73
- exact checked-out dependency graph and stores it in the npm preflight
74
- artifact. Save the successful `preflight_run_id`.
75
- 7. Kick off all pre-release tests with `Full Release Validation` for the
76
- release branch, tag, or full commit SHA. This is the one manual entrypoint
77
- for the four big release test boxes: Vitest, Docker, QA Lab, and Package.
78
- 8. If validation fails, fix on the release branch and rerun the smallest failed
79
- file, lane, workflow job, package profile, provider, or model allowlist that
80
- proves the fix. Rerun the full umbrella only when the changed surface makes
81
- prior evidence stale.
82
- 9. For beta, tag `vYYYY.M.D-beta.N`, then run `pnpm release:candidate -- --tag
83
- vYYYY.M.D-beta.N` from the matching `release/YYYY.M.D` branch. The helper runs
84
- the local generated-release checks, dispatches or verifies the full release
85
- validation and npm preflight evidence, runs Parallels and Telegram package
86
- proof, records plugin npm and ClawHub plans, and prints the exact
87
- `FengMing Release Publish` command only after the evidence bundle is green.
88
- `FengMing Release Publish` dispatches the selected or all-publishable plugin
89
- packages to npm and the same set to ClawHub in parallel, and then promotes the
90
- prepared FengMing npm preflight artifact with the matching dist-tag as soon as
91
- plugin npm publish succeeds.
92
- After the FengMing npm publish child succeeds, it creates or updates the
93
- matching GitHub release/prerelease page from the complete matching
94
- `CHANGELOG.md` section. Stable releases published to npm `latest` become the
95
- GitHub latest release; stable maintenance releases kept on npm `beta` are
96
- created with GitHub `latest=false`. The workflow also uploads the preflight
97
- dependency evidence to the GitHub release as
98
- `fengming-<version>-dependency-evidence.zip` for post-release incident
99
- response. The publish workflow prints child run IDs immediately, auto-approves
100
- release environment gates the workflow token is allowed to approve, summarizes
101
- failed child jobs with log tails, closes out the GitHub release and dependency
102
- evidence as soon as FengMing npm publish succeeds, waits for ClawHub whenever
103
- FengMing npm is being published, then runs `pnpm release:verify-beta` and
104
- uploads postpublish evidence for the GitHub release, npm package, selected
105
- plugin npm packages, selected ClawHub packages, child workflow run IDs, and
106
- optional NPM Telegram run ID. The ClawHub path retries transient CLI
107
- dependency install failures, publishes preview-passing plugins even when one
108
- preview cell flakes, and ends with registry verification for every expected
109
- plugin version so partial publishes remain visible and retryable. Then run the post-publish
110
- package acceptance against the published
111
- `fengming@YYYY.M.D-beta.N` or
112
- `fengming@beta` package. If a pushed or published prerelease needs a fix,
113
- cut the next matching prerelease number; do not delete or rewrite the old
114
- prerelease.
115
- 10. For stable, continue only after the vetted beta or release candidate has the
116
- required validation evidence. Stable npm publish also goes through
117
- `FengMing Release Publish`, reusing the successful preflight artifact via
118
- `preflight_run_id`; stable macOS release readiness also requires the
119
- packaged `.zip`, `.dmg`, `.dSYM.zip`, and updated `appcast.xml` on `main`.
120
- The macOS publish workflow publishes the signed appcast to public `main`
121
- automatically after release assets verify; if branch protection blocks the
122
- direct push, it opens or updates an appcast PR.
123
- 11. After publish, run the npm post-publish verifier, optional standalone
124
- published-npm Telegram E2E when you need post-publish channel proof,
125
- dist-tag promotion when needed, verify the generated GitHub release page,
126
- and run the release announcement steps.
127
-
128
- ## Release preflight
129
-
130
- - Run `pnpm check:test-types` before release preflight so test TypeScript stays
131
- covered outside the faster local `pnpm check` gate
132
- - Run `pnpm check:architecture` before release preflight so the broader import
133
- cycle and architecture boundary checks are green outside the faster local gate
134
- - Run `pnpm build && pnpm ui:build` before `pnpm release:check` so the expected
135
- `dist/*` release artifacts and Control UI bundle exist for the pack
136
- validation step
137
- - Run `pnpm release:prep` after the root version bump and before tagging. It
138
- runs every deterministic release generator that commonly drifts after a
139
- version/config/API change: plugin versions, plugin inventory, base config
140
- schema, bundled channel config metadata, config docs baseline, plugin SDK
141
- exports, and plugin SDK API baseline. `pnpm release:check` re-runs those
142
- guards in check mode and reports every generated drift failure it finds in one
143
- pass before running package release checks.
144
- - Plugin version sync updates official plugin package versions and existing
145
- `fengming.compat.pluginApi` floors to the FengMing release version by
146
- default. Treat that field as the plugin SDK/runtime API floor, not just a copy
147
- of the package version: for plugin-only releases that intentionally remain
148
- compatible with older FengMing hosts, keep the floor at the oldest supported
149
- host API and document that choice in the plugin release proof.
150
- - Run the manual `Full Release Validation` workflow before release approval to
151
- kick off all pre-release test boxes from one entrypoint. It accepts a branch,
152
- tag, or full commit SHA, dispatches manual `CI`, and dispatches
153
- `FengMing Release Checks` for install smoke, package acceptance, cross-OS
154
- package checks, QA Lab parity, Matrix, and Telegram lanes. Stable/default runs
155
- keep exhaustive live/E2E and Docker release-path soak behind
156
- `run_release_soak=true`; `release_profile=full` forces soak on. With
157
- `release_profile=full` and `rerun_group=all`, it also runs package Telegram
158
- E2E against the `release-package-under-test` artifact from release checks.
159
- Provide `release_package_spec` after publishing a beta to reuse the shipped
160
- npm package across release checks, Package Acceptance, and package Telegram
161
- E2E without rebuilding the release tarball. Provide
162
- `npm_telegram_package_spec` only when Telegram should use a different
163
- published package from the rest of release validation. Provide
164
- `package_acceptance_package_spec` when Package Acceptance should use a
165
- different published package from the release package spec. Provide
166
- `evidence_package_spec` when the release evidence report should prove that the
167
- validation matches a published npm package without forcing Telegram E2E.
168
- Example:
169
- `gh workflow run full-release-validation.yml --ref main -f ref=release/YYYY.M.D`
170
- - Run the manual `Package Acceptance` workflow when you want side-channel proof
171
- for a package candidate while release work continues. Use `source=npm` for
172
- `fengming@beta`, `fengming@latest`, or an exact release version; `source=ref`
173
- to pack a trusted `package_ref` branch/tag/SHA with the current
174
- `workflow_ref` harness; `source=url` for a public HTTPS tarball with a
175
- required SHA-256 and strict public URL policy; `source=trusted-url` for a
176
- named trusted-source policy using required `trusted_source_id` and SHA-256; or
177
- `source=artifact` for a tarball uploaded by another GitHub Actions run. The
178
- workflow resolves the candidate to
179
- `package-under-test`, reuses the Docker E2E release scheduler against that
180
- tarball, and can run Telegram QA against the same tarball with
181
- `telegram_mode=mock-openai` or `telegram_mode=live-frontier`. When the
182
- selected Docker lanes include `published-upgrade-survivor`, the package
183
- artifact is the candidate and `published_upgrade_survivor_baseline` selects
184
- the published baseline. `update-restart-auth` uses the candidate package as
185
- both the installed CLI and the package-under-test so it exercises the
186
- candidate update command's managed restart path.
187
- Example: `gh workflow run package-acceptance.yml --ref main -f workflow_ref=main -f source=npm -f package_spec=fengming@beta -f suite_profile=product -f published_upgrade_survivor_baseline=fengming@2026.4.26 -f telegram_mode=mock-openai`
188
- Common profiles:
189
- - `smoke`: install/channel/agent, gateway network, and config reload lanes
190
- - `package`: artifact-native package/update/restart/plugin lanes without OpenWebUI or live ClawHub
191
- - `product`: package profile plus MCP channels, cron/subagent cleanup,
192
- OpenAI web search, and OpenWebUI
193
- - `full`: Docker release-path chunks with OpenWebUI
194
- - `custom`: exact `docker_lanes` selection for a focused rerun
195
- - Run the manual `CI` workflow directly when you only need full normal CI
196
- coverage for the release candidate. Manual CI dispatches bypass changed
197
- scoping and force the Linux Node shards, bundled-plugin shards, plugin and
198
- channel contract shards, Node 22 compatibility, `check-*`, `check-additional-*`,
199
- built-artifact smoke checks, docs checks, Python skills, Windows, macOS,
200
- Android, and Control UI i18n lanes.
201
- Example: `gh workflow run ci.yml --ref release/YYYY.M.D`
202
- - Run `pnpm qa:otel:smoke` when validating release telemetry. It exercises
203
- QA-lab through a local OTLP/HTTP receiver and verifies trace, metric, and log
204
- export plus bounded trace attributes and content/identifier redaction without
205
- requiring Opik, Langfuse, or another external collector.
206
- - Run `pnpm qa:otel:collector-smoke` when validating collector compatibility.
207
- It routes the same QA-lab OTLP export through a real OpenTelemetry Collector
208
- Docker container before the local receiver assertions.
209
- - Run `pnpm qa:prometheus:smoke` when validating protected Prometheus scraping.
210
- It exercises QA-lab, rejects unauthenticated scrapes, and verifies
211
- release-critical metric families stay free of prompt content, raw identifiers,
212
- auth tokens, and local paths.
213
- - Run `pnpm qa:observability:smoke` when you want the source-checkout
214
- OpenTelemetry and Prometheus smoke lanes back to back.
215
- - Run `pnpm release:check` before every tagged release
216
- - `FengMing NPM Release` preflight generates dependency release evidence before
217
- it packs the npm tarball. The npm advisory vulnerability gate is
218
- release-blocking. The transitive manifest risk, dependency ownership/install
219
- surface, and dependency change reports are release evidence only. The
220
- dependency change report compares the release candidate with the previous
221
- reachable release tag.
222
- - The preflight uploads dependency evidence as
223
- `fengming-release-dependency-evidence-<tag>` and also embeds it under
224
- `dependency-evidence/` inside the prepared npm preflight artifact. The real
225
- publish path reuses that preflight artifact, then attaches the same evidence
226
- to the GitHub release as `fengming-<version>-dependency-evidence.zip`.
227
- - Run `FengMing Release Publish` for the mutating publish sequence after the
228
- tag exists. Dispatch it from `release/YYYY.M.D` (or `main` when publishing a
229
- main-reachable tag), pass the release tag and successful FengMing npm
230
- `preflight_run_id`, and keep the default plugin publish scope
231
- `all-publishable` unless you are deliberately running a focused repair. The
232
- workflow serializes plugin npm publish, plugin ClawHub publish, and FengMing
233
- npm publish so the core package is not published before its externalized
234
- plugins.
235
- - Release checks now run in a separate manual workflow:
236
- `FengMing Release Checks`
237
- - `FengMing Release Checks` also runs the QA Lab mock parity lane plus the fast
238
- live Matrix profile and Telegram QA lane before release approval. The live
239
- lanes use the `qa-live-shared` environment; Telegram also uses Convex CI
240
- credential leases. Run the manual `QA-Lab - All Lanes` workflow with
241
- `matrix_profile=all` and `matrix_shards=true` when you want full Matrix
242
- transport, media, and E2EE inventory in parallel.
243
- - Cross-OS install and upgrade runtime validation is part of public
244
- `FengMing Release Checks` and `Full Release Validation`, which call the
245
- reusable workflow
246
- `.github/workflows/fengming-cross-os-release-checks-reusable.yml` directly
247
- - This split is intentional: keep the real npm release path short,
248
- deterministic, and artifact-focused, while slower live checks stay in their
249
- own lane so they do not stall or block publish
250
- - Secret-bearing release checks should be dispatched through `Full Release
251
- Validation` or from the `main`/release workflow ref so workflow logic and
252
- secrets stay controlled
253
- - `FengMing Release Checks` accepts a branch, tag, or full commit SHA as long
254
- as the resolved commit is reachable from an FengMing branch or release tag
255
- - `FengMing NPM Release` validation-only preflight also accepts the current
256
- full 40-character workflow-branch commit SHA without requiring a pushed tag
257
- - That SHA path is validation-only and cannot be promoted into a real publish
258
- - In SHA mode the workflow synthesizes `v<package.json version>` only for the
259
- package metadata check; real publish still requires a real release tag
260
- - Both workflows keep the real publish and promotion path on GitHub-hosted
261
- runners, while the non-mutating validation path can use the larger
262
- Blacksmith Linux runners
263
- - That workflow runs
264
- `FENGMING_LIVE_TEST=1 FENGMING_LIVE_CACHE_TEST=1 pnpm test:live:cache`
265
- using both `OPENAI_API_KEY` and `ANTHROPIC_API_KEY` workflow secrets
266
- - npm release preflight no longer waits on the separate release checks lane
267
- - Before tagging a release candidate locally, run
268
- `RELEASE_TAG=vYYYY.M.D-beta.N pnpm release:fast-pretag-check`. The helper
269
- runs the fast release guardrails, plugin npm/ClawHub release checks, build,
270
- UI build, and `release:fengming:npm:check` in the order that catches common
271
- approval-blocking mistakes before the GitHub publish workflow starts.
272
- - Run `RELEASE_TAG=vYYYY.M.D node --import tsx scripts/fengming-npm-release-check.ts`
273
- (or the matching beta/correction tag) before approval
274
- - After npm publish, run
275
- `node --import tsx scripts/fengming-npm-postpublish-verify.ts YYYY.M.D`
276
- (or the matching beta/correction version) to verify the published registry
277
- install path in a fresh temp prefix
278
- - After a beta publish, run `FENGMING_NPM_TELEGRAM_PACKAGE_SPEC=fengming@YYYY.M.D-beta.N FENGMING_NPM_TELEGRAM_CREDENTIAL_SOURCE=convex FENGMING_NPM_TELEGRAM_CREDENTIAL_ROLE=ci pnpm test:docker:npm-telegram-live`
279
- to verify installed-package onboarding, Telegram setup, and real Telegram E2E
280
- against the published npm package using the shared leased Telegram credential
281
- pool. Local maintainer one-offs may omit the Convex vars and pass the three
282
- `FENGMING_QA_TELEGRAM_*` env credentials directly.
283
- - To run the full post-publish beta smoke from a maintainer machine, use `pnpm release:beta-smoke -- --beta betaN`. The helper runs Parallels npm update/fresh-target validation, dispatches `NPM Telegram Beta E2E`, polls the exact workflow run, downloads the artifact, and prints the Telegram report.
284
- - Maintainers can run the same post-publish check from GitHub Actions via the
285
- manual `NPM Telegram Beta E2E` workflow. It is intentionally manual-only and
286
- does not run on every merge.
287
- - Maintainer release automation now uses preflight-then-promote:
288
- - real npm publish must pass a successful npm `preflight_run_id`
289
- - the real npm publish must be dispatched from the same `main` or
290
- `release/YYYY.M.D` branch as the successful preflight run
291
- - stable npm releases default to `beta`
292
- - stable npm publish can target `latest` explicitly via workflow input
293
- - token-based npm dist-tag mutation now lives in
294
- `fengming/releases/.github/workflows/fengming-npm-dist-tags.yml` because
295
- `npm dist-tag add` still needs `NPM_TOKEN` while the source repo keeps
296
- OIDC-only publish
297
- - public `macOS Release` is validation-only; when a tag lives only on a
298
- release branch but the workflow is dispatched from `main`, set
299
- `public_release_branch=release/YYYY.M.D`
300
- - real macOS publish must pass successful macOS `preflight_run_id` and
301
- `validate_run_id`
302
- - the real publish paths promote prepared artifacts instead of rebuilding
303
- them again
304
- - For stable correction releases like `YYYY.M.D-N`, the post-publish verifier
305
- also checks the same temp-prefix upgrade path from `YYYY.M.D` to `YYYY.M.D-N`
306
- so release corrections cannot silently leave older global installs on the
307
- base stable payload
308
- - npm release preflight fails closed unless the tarball includes both
309
- `dist/control-ui/index.html` and a non-empty `dist/control-ui/assets/` payload
310
- so we do not ship an empty browser dashboard again
311
- - Post-publish verification also checks that published plugin entrypoints and
312
- package metadata are present in the installed registry layout. A release that
313
- ships missing plugin runtime payloads fails the postpublish verifier and
314
- cannot be promoted to `latest`.
315
- - `pnpm test:install:smoke` also enforces the npm pack `unpackedSize` budget on
316
- the candidate update tarball, so installer e2e catches accidental pack bloat
317
- before the release publish path
318
- - If the release work touched CI planning, extension timing manifests, or
319
- extension test matrices, regenerate and review the planner-owned
320
- `plugin-prerelease-extension-shard` matrix outputs from
321
- `.github/workflows/plugin-prerelease.yml` before approval so release notes do
322
- not describe a stale CI layout
323
- - Stable macOS release readiness also includes the updater surfaces:
324
- - the GitHub release must end up with the packaged `.zip`, `.dmg`, and `.dSYM.zip`
325
- - `appcast.xml` on `main` must point at the new stable zip after publish; the
326
- macOS publish workflow commits it automatically, or opens an appcast
327
- PR when direct push is blocked
328
- - the packaged app must keep a non-debug bundle id, a non-empty Sparkle feed
329
- URL, and a `CFBundleVersion` at or above the canonical Sparkle build floor
330
- for that release version
331
-
332
- ## Release test boxes
333
-
334
- `Full Release Validation` is how operators kick off all pre-release tests from
335
- one entrypoint. For a pinned commit proof on a fast-moving branch, use the
336
- helper so every child workflow runs from a temporary branch fixed at the target
337
- SHA:
338
-
339
- ```bash
340
- pnpm ci:full-release --sha <full-sha>
341
- ```
342
-
343
- The helper pushes `release-ci/<sha>-...`, dispatches `Full Release Validation`
344
- from that branch with `ref=<sha>`, verifies every child workflow `headSha`
345
- matches the target, then deletes the temporary branch. This avoids proving a
346
- newer `main` child run by accident.
347
-
348
- For release branch or tag validation, run it from the trusted `main` workflow
349
- ref and pass the release branch or tag as `ref`:
350
-
351
- ```bash
352
- gh workflow run full-release-validation.yml \
353
- --ref main \
354
- -f ref=release/YYYY.M.D \
355
- -f provider=openai \
356
- -f mode=both \
357
- -f release_profile=stable \
358
- -f evidence_package_spec=fengming@YYYY.M.D-beta.N
359
- ```
360
-
361
- The workflow resolves the target ref, dispatches manual `CI` with
362
- `target_ref=<release-ref>`, dispatches `FengMing Release Checks`, prepares a
363
- parent `release-package-under-test` artifact for package-facing checks, and
364
- dispatches standalone package Telegram E2E when `release_profile=full` with
365
- `rerun_group=all` or when `release_package_spec` or
366
- `npm_telegram_package_spec` is set. `FengMing Release
367
- Checks` then fans out install smoke, cross-OS release checks, live/E2E Docker
368
- release-path coverage when soak is enabled, Package Acceptance with Telegram
369
- package QA, QA Lab parity, live Matrix, and live Telegram. A full run is only acceptable when the
370
- `Full Release Validation`
371
- summary shows `normal_ci` and `release_checks` as successful. In full/all mode,
372
- the `npm_telegram` child must also be successful; outside full/all it is skipped
373
- unless a published `release_package_spec` or `npm_telegram_package_spec` was
374
- provided. The final
375
- verifier summary includes slowest-job tables for each child run, so the release
376
- manager can see the current critical path without downloading logs.
377
- See [Full release validation](/reference/full-release-validation) for the
378
- complete stage matrix, exact workflow job names, stable versus full profile
379
- differences, artifacts, and focused rerun handles.
380
- Child workflows are dispatched from the trusted ref that runs `Full Release
381
- Validation`, normally `--ref main`, even when the target `ref` points at an
382
- older release branch or tag. There is no separate Full Release Validation
383
- workflow-ref input; choose the trusted harness by choosing the workflow run ref.
384
- Do not use `--ref main -f ref=<sha>` for exact commit proof on moving `main`;
385
- raw commit SHAs cannot be workflow dispatch refs, so use
386
- `pnpm ci:full-release --sha <sha>` to create the pinned temporary branch.
387
-
388
- Use `release_profile` to select live/provider breadth:
389
-
390
- - `minimum`: fastest release-critical OpenAI/core live and Docker path
391
- - `stable`: minimum plus stable provider/backend coverage for release approval
392
- - `full`: stable plus broad advisory provider/media coverage
393
-
394
- Use `run_release_soak=true` with `stable` when the release-blocking lanes are
395
- green and you want the exhaustive live/E2E, Docker release-path, and
396
- bounded published upgrade-survivor sweep before promotion. That sweep covers
397
- the latest four stable packages plus pinned `2026.4.23` and `2026.5.2`
398
- baselines plus older `2026.4.15` coverage, with duplicate baselines removed and
399
- each baseline sharded into its own Docker runner job. `full` implies
400
- `run_release_soak=true`.
401
-
402
- `FengMing Release Checks` uses the trusted workflow ref to resolve the target
403
- ref once as `release-package-under-test` and reuses that artifact in cross-OS,
404
- Package Acceptance, and release-path Docker checks when soak runs. This keeps
405
- all package-facing boxes on the same bytes and avoids repeated package builds.
406
- After a beta is already on npm, set `release_package_spec=fengming@YYYY.M.D-beta.N`
407
- so release checks download the shipped package once, extract its build source
408
- SHA from `dist/build-info.json`, and reuse that artifact for cross-OS,
409
- Package Acceptance, release-path Docker, and package Telegram lanes.
410
- The cross-OS OpenAI install smoke uses `FENGMING_CROSS_OS_OPENAI_MODEL` when the
411
- repo/org variable is set, otherwise `openai/gpt-5.4`, because this lane is
412
- proving package install, onboarding, gateway startup, and one live agent turn
413
- rather than benchmarking the slowest default model. The broader live provider
414
- matrix remains the place for model-specific coverage.
415
-
416
- Use these variants depending on release stage:
417
-
418
- ```bash
419
- # Validate an unpublished release candidate branch.
420
- gh workflow run full-release-validation.yml \
421
- --ref main \
422
- -f ref=release/YYYY.M.D \
423
- -f provider=openai \
424
- -f mode=both \
425
- -f release_profile=stable
426
-
427
- # Validate an exact pushed commit.
428
- gh workflow run full-release-validation.yml \
429
- --ref main \
430
- -f ref=<40-char-sha> \
431
- -f provider=openai \
432
- -f mode=both
433
-
434
- # After publishing a beta, add published-package Telegram E2E.
435
- gh workflow run full-release-validation.yml \
436
- --ref main \
437
- -f ref=release/YYYY.M.D \
438
- -f provider=openai \
439
- -f mode=both \
440
- -f release_profile=full \
441
- -f release_package_spec=fengming@YYYY.M.D-beta.N \
442
- -f evidence_package_spec=fengming@YYYY.M.D-beta.N \
443
- -f npm_telegram_provider_mode=mock-openai
444
- ```
445
-
446
- Do not use the full umbrella as the first rerun after a focused fix. If one box
447
- fails, use the failed child workflow, job, Docker lane, package profile, model
448
- provider, or QA lane for the next proof. Run the full umbrella again only when
449
- the fix changed shared release orchestration or made earlier all-box evidence
450
- stale. The umbrella's final verifier re-checks the recorded child workflow run
451
- ids, so after a child workflow is rerun successfully, rerun only the failed
452
- `Verify full validation` parent job.
453
-
454
- For bounded recovery, pass `rerun_group` to the umbrella. `all` is the real
455
- release-candidate run, `ci` runs only the normal CI child, `plugin-prerelease`
456
- runs only the release-only plugin child, `release-checks` runs every release
457
- box, and the narrower release groups are `install-smoke`, `cross-os`,
458
- `live-e2e`, `package`, `qa`, `qa-parity`, `qa-live`, and `npm-telegram`.
459
- Focused `npm-telegram` reruns require `release_package_spec` or
460
- `npm_telegram_package_spec`; full/all runs with `release_profile=full` use the
461
- release-checks package artifact. Focused
462
- cross-OS reruns can add `cross_os_suite_filter=windows/packaged-upgrade` or
463
- another OS/suite filter. QA release-check failures are advisory except the
464
- standard runtime tool coverage gate, which blocks release validation when
465
- required FengMing dynamic tools drift or disappear from the standard tier
466
- summary.
467
-
468
- ### Vitest
469
-
470
- The Vitest box is the manual `CI` child workflow. Manual CI intentionally
471
- bypasses changed scoping and forces the normal test graph for the release
472
- candidate: Linux Node shards, bundled-plugin shards, plugin and channel contract
473
- shards, Node 22 compatibility, `check-*`, `check-additional-*`,
474
- built-artifact smoke checks, docs checks, Python skills, Windows, macOS,
475
- Android, and Control UI i18n.
476
-
477
- Use this box to answer "did the source tree pass the full normal test suite?"
478
- It is not the same as release-path product validation. Evidence to keep:
479
-
480
- - `Full Release Validation` summary showing the dispatched `CI` run URL
481
- - `CI` run green on the exact target SHA
482
- - failed or slow shard names from the CI jobs when investigating regressions
483
- - Vitest timing artifacts such as `.artifacts/vitest-shard-timings.json` when
484
- a run needs performance analysis
485
-
486
- Run manual CI directly only when the release needs deterministic normal CI but
487
- not the Docker, QA Lab, live, cross-OS, or package boxes:
488
-
489
- ```bash
490
- gh workflow run ci.yml --ref main -f target_ref=release/YYYY.M.D
491
- ```
492
-
493
- ### Docker
494
-
495
- The Docker box lives in `FengMing Release Checks` through
496
- `fengming-live-and-e2e-checks-reusable.yml`, plus the release-mode
497
- `install-smoke` workflow. It validates the release candidate through packaged
498
- Docker environments instead of only source-level tests.
499
-
500
- Release Docker coverage includes:
501
-
502
- - full install smoke with the slow Bun global install smoke enabled
503
- - root Dockerfile smoke image preparation/reuse by target SHA, with QR,
504
- root/gateway, and installer/Bun smoke jobs running as separate install-smoke
505
- shards
506
- - repository E2E lanes
507
- - release-path Docker chunks: `core`, `package-update-openai`,
508
- `package-update-anthropic`, `package-update-core`, `plugins-runtime-plugins`,
509
- `plugins-runtime-services`,
510
- `plugins-runtime-install-a`, `plugins-runtime-install-b`,
511
- `plugins-runtime-install-c`, `plugins-runtime-install-d`,
512
- `plugins-runtime-install-e`, `plugins-runtime-install-f`,
513
- `plugins-runtime-install-g`, and `plugins-runtime-install-h`
514
- - OpenWebUI coverage inside the `plugins-runtime-services` chunk when requested
515
- - split bundled plugin install/uninstall lanes
516
- `bundled-plugin-install-uninstall-0` through
517
- `bundled-plugin-install-uninstall-23`
518
- - live/E2E provider suites and Docker live model coverage when release checks
519
- include live suites
520
-
521
- Use Docker artifacts before rerunning. The release-path scheduler uploads
522
- `.artifacts/docker-tests/` with lane logs, `summary.json`, `failures.json`,
523
- phase timings, scheduler plan JSON, and rerun commands. For focused recovery,
524
- use `docker_lanes=<lane[,lane]>` on the reusable live/E2E workflow instead of
525
- rerunning all release chunks. Generated rerun commands include prior
526
- `package_artifact_run_id` and prepared Docker image inputs when available, so a
527
- failed lane can reuse the same tarball and GHCR images.
528
-
529
- ### QA Lab
530
-
531
- The QA Lab box is also part of `FengMing Release Checks`. It is the agentic
532
- behavior and channel-level release gate, separate from Vitest and Docker
533
- package mechanics.
534
-
535
- Release QA Lab coverage includes:
536
-
537
- - mock parity lane comparing the OpenAI candidate lane against the Opus 4.6
538
- baseline using the agentic parity pack
539
- - fast live Matrix QA profile using the `qa-live-shared` environment
540
- - live Telegram QA lane using Convex CI credential leases
541
- - `pnpm qa:otel:smoke`, `pnpm qa:otel:collector-smoke`,
542
- `pnpm qa:prometheus:smoke`, or
543
- `pnpm qa:observability:smoke` when release telemetry needs explicit local
544
- proof
545
-
546
- Use this box to answer "does the release behave correctly in QA scenarios and
547
- live channel flows?" Keep the artifact URLs for parity, Matrix, and Telegram
548
- lanes when approving the release. Full Matrix coverage remains available as a
549
- manual sharded QA-Lab run rather than the default release-critical lane.
550
-
551
- ### Package
552
-
553
- The Package box is the installable-product gate. It is backed by
554
- `Package Acceptance` and the resolver
555
- `scripts/resolve-fengming-package-candidate.mjs`. The resolver normalizes a
556
- candidate into the `package-under-test` tarball consumed by Docker E2E, validates
557
- the package inventory, records the package version and SHA-256, and keeps the
558
- workflow harness ref separate from the package source ref.
559
-
560
- Supported candidate sources:
561
-
562
- - `source=npm`: `fengming@beta`, `fengming@latest`, or an exact FengMing release
563
- version
564
- - `source=ref`: pack a trusted `package_ref` branch, tag, or full commit SHA
565
- with the selected `workflow_ref` harness
566
- - `source=url`: download a public HTTPS `.tgz` with required `package_sha256`;
567
- URL credentials, non-default HTTPS ports, private/internal/special-use
568
- hostnames or resolved addresses, and unsafe redirects are rejected
569
- - `source=trusted-url`: download an HTTPS `.tgz` with required
570
- `package_sha256` and `trusted_source_id` from a named policy in
571
- `.github/package-trusted-sources.json`; use this for maintainer-owned
572
- enterprise mirrors or private package repositories instead of adding an
573
- input-level private-network bypass to `source=url`
574
- - `source=artifact`: reuse a `.tgz` uploaded by another GitHub Actions run
575
-
576
- `FengMing Release Checks` runs Package Acceptance with `source=artifact`, the
577
- prepared release package artifact, `suite_profile=custom`,
578
- `docker_lanes=doctor-switch update-channel-switch skill-install update-corrupt-plugin upgrade-survivor published-upgrade-survivor update-restart-auth plugins-offline plugin-update`,
579
- `telegram_mode=mock-openai`. Package Acceptance keeps migration, update,
580
- configured-auth update restart, live ClawHub skill install, stale plugin dependency cleanup, offline plugin
581
- fixtures, plugin update, and Telegram package QA against the same resolved
582
- tarball. Blocking release checks use the default latest published package
583
- baseline; `run_release_soak=true` or
584
- `release_profile=full` expands to every stable npm-published baseline from
585
- `2026.4.23` through `latest` plus reported-issue fixtures. Use
586
- Package Acceptance with `source=npm` for an already shipped candidate,
587
- `source=ref` for a SHA-backed local npm tarball before publish,
588
- `source=trusted-url` for a maintainer-owned enterprise/private mirror, or
589
- `source=artifact` for a prepared tarball uploaded by another GitHub Actions run.
590
- It is the GitHub-native
591
- replacement for most of the package/update coverage that previously required
592
- Parallels. Cross-OS release checks still matter for OS-specific onboarding,
593
- installer, and platform behavior, but package/update product validation should
594
- prefer Package Acceptance.
595
-
596
- The canonical checklist for update and plugin validation is
597
- [Testing updates and plugins](/help/testing-updates-plugins). Use it when
598
- deciding which local, Docker, Package Acceptance, or release-check lane proves a
599
- plugin install/update, doctor cleanup, or published-package migration change.
600
- Exhaustive published update migration from every stable `2026.4.23+` package is
601
- a separate manual `Update Migration` workflow, not part of Full Release CI.
602
-
603
- Legacy package-acceptance leniency is intentionally time boxed. Packages through
604
- `2026.4.25` may use the compatibility path for metadata gaps already published
605
- to npm: private QA inventory entries missing from the tarball, missing
606
- `gateway install --wrapper`, missing patch files in the tarball-derived git
607
- fixture, missing persisted `update.channel`, legacy plugin install-record
608
- locations, missing marketplace install-record persistence, and config metadata
609
- migration during `plugins update`. The published `2026.4.26` package may warn
610
- for local build metadata stamp files that were already shipped. Later packages
611
- must satisfy the modern package contracts; those same gaps fail release
612
- validation.
613
-
614
- Use broader Package Acceptance profiles when the release question is about an
615
- actual installable package:
616
-
617
- ```bash
618
- gh workflow run package-acceptance.yml \
619
- --ref main \
620
- -f workflow_ref=main \
621
- -f source=npm \
622
- -f package_spec=fengming@beta \
623
- -f suite_profile=product \
624
- -f published_upgrade_survivor_baseline=fengming@2026.4.26
625
- ```
626
-
627
- Common package profiles:
628
-
629
- - `smoke`: quick package install/channel/agent, gateway network, and config
630
- reload lanes
631
- - `package`: install/update/restart/plugin package contracts plus live ClawHub
632
- skill install proof; this is the release-check default
633
- - `product`: `package` plus MCP channels, cron/subagent cleanup, OpenAI web
634
- search, and OpenWebUI
635
- - `full`: Docker release-path chunks with OpenWebUI
636
- - `custom`: exact `docker_lanes` list for focused reruns
637
-
638
- For package-candidate Telegram proof, enable `telegram_mode=mock-openai` or
639
- `telegram_mode=live-frontier` on Package Acceptance. The workflow passes the
640
- resolved `package-under-test` tarball into the Telegram lane; the standalone
641
- Telegram workflow still accepts a published npm spec for post-publish checks.
642
-
643
- ## Release publish automation
644
-
645
- `FengMing Release Publish` is the normal mutating publish entrypoint. It
646
- orchestrates the trusted-publisher workflows in the order the release needs:
647
-
648
- 1. Check out the release tag and resolve its commit SHA.
649
- 2. Verify the tag is reachable from `main` or `release/*`.
650
- 3. Run `pnpm plugins:sync:check`.
651
- 4. Dispatch `Plugin NPM Release` with `publish_scope=all-publishable` and
652
- `ref=<release-sha>`.
653
- 5. Dispatch `Plugin ClawHub Release` with the same scope and SHA.
654
- 6. Dispatch `FengMing NPM Release` with the release tag, npm dist-tag, and
655
- saved `preflight_run_id`.
656
-
657
- Beta publish example:
658
-
659
- ```bash
660
- gh workflow run fengming-release-publish.yml \
661
- --ref release/YYYY.M.D \
662
- -f tag=vYYYY.M.D-beta.N \
663
- -f preflight_run_id=<successful-fengming-npm-preflight-run-id> \
664
- -f npm_dist_tag=beta
665
- ```
666
-
667
- Stable publish to the default beta dist-tag:
668
-
669
- ```bash
670
- gh workflow run fengming-release-publish.yml \
671
- --ref release/YYYY.M.D \
672
- -f tag=vYYYY.M.D \
673
- -f preflight_run_id=<successful-fengming-npm-preflight-run-id> \
674
- -f npm_dist_tag=beta
675
- ```
676
-
677
- Stable promotion directly to `latest` is explicit:
678
-
679
- ```bash
680
- gh workflow run fengming-release-publish.yml \
681
- --ref release/YYYY.M.D \
682
- -f tag=vYYYY.M.D \
683
- -f preflight_run_id=<successful-fengming-npm-preflight-run-id> \
684
- -f npm_dist_tag=latest
685
- ```
686
-
687
- Use the lower-level `Plugin NPM Release` and `Plugin ClawHub Release` workflows
688
- only for focused repair or republish work. `FengMing Release Publish` rejects
689
- `plugin_publish_scope=selected` when `publish_fengming_npm=true` so the core
690
- package cannot ship without every publishable official plugin, including
691
- `@fengming/diffs-language-pack`. For a selected plugin repair, set
692
- `publish_fengming_npm=false` with `plugin_publish_scope=selected` and
693
- `plugins=@fengming/name`, or dispatch the child workflow directly.
694
-
695
- ## NPM workflow inputs
696
-
697
- `FengMing NPM Release` accepts these operator-controlled inputs:
698
-
699
- - `tag`: required release tag such as `v2026.4.2`, `v2026.4.2-1`, or
700
- `v2026.4.2-beta.1`; when `preflight_only=true`, it may also be the current
701
- full 40-character workflow-branch commit SHA for validation-only preflight
702
- - `preflight_only`: `true` for validation/build/package only, `false` for the
703
- real publish path
704
- - `preflight_run_id`: required on the real publish path so the workflow reuses
705
- the prepared tarball from the successful preflight run
706
- - `npm_dist_tag`: npm target tag for the publish path; defaults to `beta`
707
-
708
- `FengMing Release Publish` accepts these operator-controlled inputs:
709
-
710
- - `tag`: required release tag; must already exist
711
- - `preflight_run_id`: successful `FengMing NPM Release` preflight run id;
712
- required when `publish_fengming_npm=true`
713
- - `npm_dist_tag`: npm target tag for the FengMing package
714
- - `plugin_publish_scope`: defaults to `all-publishable`; use `selected` only
715
- for focused plugin-only repair work with `publish_fengming_npm=false`
716
- - `plugins`: comma-separated `@fengming/*` package names when
717
- `plugin_publish_scope=selected`
718
- - `publish_fengming_npm`: defaults to `true`; set `false` only when using the
719
- workflow as a plugin-only repair orchestrator
720
- - `wait_for_clawhub`: defaults to `false` so npm availability is not blocked by
721
- the ClawHub sidecar; set `true` only when workflow completion must include
722
- ClawHub completion
723
-
724
- `FengMing Release Checks` accepts these operator-controlled inputs:
725
-
726
- - `ref`: branch, tag, or full commit SHA to validate. Secret-bearing checks
727
- require the resolved commit to be reachable from an FengMing branch or
728
- release tag.
729
- - `run_release_soak`: opt into exhaustive live/E2E, Docker release-path, and
730
- all-since upgrade-survivor soak on stable/default release checks. It is forced
731
- on by `release_profile=full`.
732
-
733
- Rules:
734
-
735
- - Stable and correction tags may publish to either `beta` or `latest`
736
- - Beta prerelease tags may publish only to `beta`
737
- - For `FengMing NPM Release`, full commit SHA input is allowed only when
738
- `preflight_only=true`
739
- - `FengMing Release Checks` and `Full Release Validation` are always
740
- validation-only
741
- - The real publish path must use the same `npm_dist_tag` used during preflight;
742
- the workflow verifies that metadata before publish continues
743
-
744
- ## Stable npm release sequence
745
-
746
- When cutting a stable npm release:
747
-
748
- 1. Run `FengMing NPM Release` with `preflight_only=true`
749
- - Before a tag exists, you may use the current full workflow-branch commit
750
- SHA for a validation-only dry run of the preflight workflow
751
- 2. Choose `npm_dist_tag=beta` for the normal beta-first flow, or `latest` only
752
- when you intentionally want a direct stable publish
753
- 3. Run `Full Release Validation` on the release branch, release tag, or full
754
- commit SHA when you want normal CI plus live prompt cache, Docker, QA Lab,
755
- Matrix, and Telegram coverage from one manual workflow
756
- 4. If you intentionally only need the deterministic normal test graph, run the
757
- manual `CI` workflow on the release ref instead
758
- 5. Save the successful `preflight_run_id`
759
- 6. Run `FengMing Release Publish` with the same `tag`, the same `npm_dist_tag`,
760
- and the saved `preflight_run_id`; it publishes externalized plugins to npm
761
- and ClawHub before promoting the FengMing npm package
762
- 7. If the release landed on `beta`, use the
763
- `fengming/releases/.github/workflows/fengming-npm-dist-tags.yml`
764
- workflow to promote that stable version from `beta` to `latest`
765
- 8. If the release intentionally published directly to `latest` and `beta`
766
- should follow the same stable build immediately, use that same release
767
- workflow to point both dist-tags at the stable version, or let its scheduled
768
- self-healing sync move `beta` later
769
-
770
- The dist-tag mutation lives in the release ledger repo because it still requires
771
- `NPM_TOKEN`, while the source repo keeps OIDC-only publish.
772
-
773
- That keeps the direct publish path and the beta-first promotion path both
774
- documented and operator-visible.
775
-
776
- If a maintainer must fall back to local npm authentication, run any 1Password
777
- CLI (`op`) commands only inside a dedicated tmux session. Do not call `op`
778
- directly from the main agent shell; keeping it inside tmux makes prompts,
779
- alerts, and OTP handling observable and prevents repeated host alerts.
780
-
781
- ## Public references
782
-
783
- - [`.github/workflows/full-release-validation.yml`](https://github.com/fengming/fengming/blob/main/.github/workflows/full-release-validation.yml)
784
- - [`.github/workflows/package-acceptance.yml`](https://github.com/fengming/fengming/blob/main/.github/workflows/package-acceptance.yml)
785
- - [`.github/workflows/fengming-npm-release.yml`](https://github.com/fengming/fengming/blob/main/.github/workflows/fengming-npm-release.yml)
786
- - [`.github/workflows/fengming-release-checks.yml`](https://github.com/fengming/fengming/blob/main/.github/workflows/fengming-release-checks.yml)
787
- - [`.github/workflows/fengming-cross-os-release-checks-reusable.yml`](https://github.com/fengming/fengming/blob/main/.github/workflows/fengming-cross-os-release-checks-reusable.yml)
788
- - [`scripts/resolve-fengming-package-candidate.mjs`](https://github.com/fengming/fengming/blob/main/scripts/resolve-fengming-package-candidate.mjs)
789
- - [`scripts/fengming-npm-release-check.ts`](https://github.com/fengming/fengming/blob/main/scripts/fengming-npm-release-check.ts)
790
- - [`scripts/package-mac-dist.sh`](https://github.com/fengming/fengming/blob/main/scripts/package-mac-dist.sh)
791
- - [`scripts/make_appcast.sh`](https://github.com/fengming/fengming/blob/main/scripts/make_appcast.sh)
792
-
793
- Maintainers use the private release docs in
794
- [`fengming/maintainers/release/README.md`](https://github.com/fengming/maintainers/blob/main/release/README.md)
795
- for the actual runbook.
796
-
797
- ## Related
798
-
799
- - [Release channels](/install/development-channels)